diff --git a/.config/CredScanSuppressions.json b/.config/CredScanSuppressions.json
new file mode 100644
index 000000000000..cc237f71d86c
--- /dev/null
+++ b/.config/CredScanSuppressions.json
@@ -0,0 +1,12 @@
+{
+ "tool": "Credential Scanner",
+ "suppressions": [
+ {
+ "file": [
+ "file:///mnt/vss/_work/1/a/extension/extension/.nox/install_python_libs/lib/python3.8/site-packages/setuptools/_distutils/command%5Cregister.py",
+ "file:///mnt/vss/_work/1/b/extension/extension/.nox/install_python_libs/lib/python3.8/site-packages/setuptools/_distutils/command%5Cregister.py"
+ ],
+ "_justification": "These are not real passwords. For documentation purposes only."
+ }
+ ]
+ }
diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
new file mode 100644
index 000000000000..3e7e9e9cf091
--- /dev/null
+++ b/.devcontainer/Dockerfile
@@ -0,0 +1,18 @@
+FROM mcr.microsoft.com/devcontainers/typescript-node:18-bookworm
+
+RUN apt-get install -y wget bzip2
+
+# Run in silent mode and save downloaded script as anaconda.sh.
+# Run with /bin/bash and run in silent mode to /opt/conda.
+# Also get rid of installation script after finishing.
+RUN wget --quiet https://repo.anaconda.com/archive/Anaconda3-2023.07-1-Linux-x86_64.sh -O ~/anaconda.sh && \
+ /bin/bash ~/anaconda.sh -b -p /opt/conda && \
+ rm ~/anaconda.sh
+
+ENV PATH="/opt/conda/bin:$PATH"
+
+# Sudo apt update needs to run in order for installation of fish to work .
+RUN sudo apt update && \
+ sudo apt install fish -y
+
+
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644
index 000000000000..67a8833d30cf
--- /dev/null
+++ b/.devcontainer/devcontainer.json
@@ -0,0 +1,30 @@
+// For format details, see https://aka.ms/devcontainer.json.
+{
+ "name": "VS Code Python Dev Container",
+ // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
+ "build": {
+ "dockerfile": "./Dockerfile",
+ "context": ".."
+ },
+ "customizations": {
+ "vscode": {
+ "extensions": [
+ "charliermarsh.ruff",
+ "editorconfig.editorconfig",
+ "esbenp.prettier-vscode",
+ "dbaeumer.vscode-eslint",
+ "ms-python.python",
+ "ms-python.vscode-pylance",
+ "ms-python.debugpy"
+ ]
+ }
+ },
+ // Commands to execute on container creation,start.
+ "postCreateCommand": "bash scripts/postCreateCommand.sh",
+ "onCreateCommand": "bash scripts/onCreateCommand.sh",
+
+ "containerEnv": {
+ "CI_PYTHON_PATH": "/workspaces/vscode-python/.venv/bin/python"
+ }
+
+}
diff --git a/.eslintignore b/.eslintignore
index bce20d67c2c9..9399ff461dcd 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,3 +1,5 @@
+pythonExtensionApi/out/
+
# The following files were grandfathered out of eslint. They can be removed as time permits.
src/test/analysisEngineTest.ts
@@ -48,8 +50,6 @@ src/test/testing/common/services/configSettingService.unit.test.ts
src/test/common/exitCIAfterTestReporter.ts
-src/test/common/net/fileDownloader.unit.test.ts
-src/test/common/net/httpClient.unit.test.ts
src/test/common/terminals/activator/index.unit.test.ts
src/test/common/terminals/activator/base.unit.test.ts
@@ -76,7 +76,6 @@ src/test/common/platform/filesystem.test.ts
src/test/common/utils/cacheUtils.unit.test.ts
src/test/common/utils/decorators.unit.test.ts
-src/test/common/utils/localize.functional.test.ts
src/test/common/utils/version.unit.test.ts
src/test/common/configSettings/configSettings.unit.test.ts
@@ -106,9 +105,8 @@ src/test/common/process/proc.unit.test.ts
src/test/common/interpreterPathService.unit.test.ts
-src/test/pythonFiles/formatting/dummy.ts
+src/test/python_files/formatting/dummy.ts
-src/test/debugger/extension/banner.unit.test.ts
src/test/debugger/extension/adapter/adapter.test.ts
src/test/debugger/extension/adapter/outdatedDebuggerPrompt.unit.test.ts
src/test/debugger/extension/adapter/factory.unit.test.ts
@@ -124,7 +122,6 @@ src/test/telemetry/index.unit.test.ts
src/test/telemetry/envFileTelemetry.unit.test.ts
src/test/application/diagnostics/checks/macPythonInterpreter.unit.test.ts
-src/test/application/diagnostics/checks/pythonPathDeprecated.unit.test.ts
src/test/application/diagnostics/checks/pythonInterpreter.unit.test.ts
src/test/application/diagnostics/checks/invalidLaunchJsonDebugger.unit.test.ts
src/test/application/diagnostics/checks/powerShellActivation.unit.test.ts
@@ -139,7 +136,6 @@ src/test/performance/load.perf.test.ts
src/client/interpreter/configuration/interpreterSelector/commands/base.ts
src/client/interpreter/configuration/interpreterSelector/commands/resetInterpreter.ts
-src/client/interpreter/configuration/interpreterSelector/commands/setShebangInterpreter.ts
src/client/interpreter/configuration/pythonPathUpdaterServiceFactory.ts
src/client/interpreter/configuration/services/globalUpdaterService.ts
src/client/interpreter/configuration/services/workspaceUpdaterService.ts
@@ -148,7 +144,6 @@ src/client/interpreter/helpers.ts
src/client/interpreter/virtualEnvs/condaInheritEnvPrompt.ts
src/client/interpreter/display/index.ts
-src/client/api.ts
src/client/extension.ts
src/client/sourceMapSupport.ts
src/client/startupTelemetry.ts
@@ -178,12 +173,9 @@ src/client/testing/common/runner.ts
src/client/common/helpers.ts
src/client/common/net/browser.ts
-src/client/common/net/fileDownloader.ts
-src/client/common/net/httpClient.ts
src/client/common/net/socket/socketCallbackHandler.ts
src/client/common/net/socket/socketServer.ts
src/client/common/net/socket/SocketStream.ts
-src/client/common/asyncDisposableRegistry.ts
src/client/common/editor.ts
src/client/common/contextKey.ts
src/client/common/experiments/telemetry.ts
@@ -208,10 +200,6 @@ src/client/common/terminal/shellDetectors/vscEnvironmentShellDetector.ts
src/client/common/terminal/shellDetectors/terminalNameShellDetector.ts
src/client/common/terminal/shellDetectors/settingsShellDetector.ts
src/client/common/terminal/shellDetectors/baseShellDetector.ts
-src/client/common/terminal/environmentActivationProviders/baseActivationProvider.ts
-src/client/common/terminal/environmentActivationProviders/commandPrompt.ts
-src/client/common/terminal/environmentActivationProviders/bash.ts
-src/client/common/terminal/environmentActivationProviders/pyenvActivationProvider.ts
src/client/common/utils/decorators.ts
src/client/common/utils/enum.ts
src/client/common/utils/platform.ts
diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs
new file mode 100644
index 000000000000..e2c2a50781b9
--- /dev/null
+++ b/.git-blame-ignore-revs
@@ -0,0 +1,15 @@
+# Prettier
+2b6a8f2d439fe9d5e66665ea46d8b690ac9b2c39
+649156a09ccdc51c0d20f7cd44540f1918f9347b
+4f774d94bf4fbf87bb417b2b2b8e79e334eb3536
+61b179b2092050709e3c373a6738abad8ce581c4
+c33617b0b98daeb4d72040b48c5850b476d6256c
+db8e1e2460e9754ec0672d958789382b6d15c5aa
+08bc9ad3bee5b19f02fa756fbc53ab32f1b39920
+# Black
+a58eeffd1b64498e2afe5f11597888dfd1c8699c
+5cd8f539f4d2086b718c8f11f823c0ac12fc2c49
+9ec9e9eaebb25adc6d942ac19d4d6c128abb987f
+c4af91e090057d20d7a633b3afa45eaa13ece76f
+# Ruff
+e931bed3efbede7b05113316506958ecd7506777
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index eaacc33b8d8d..c966f6bde856 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -9,9 +9,9 @@ contact_links:
- name: 'Jupyter'
url: https://github.com/microsoft/vscode-jupyter/issues
about: 'For issues relating to the Jupyter extension (including the interactive window)'
- - name: 'Debugpy'
- url: https://github.com/microsoft/debugpy/issues
- about: 'For issues relating to the debugpy debugger'
+ - name: 'Python Debugger'
+ url: https://github.com/microsoft/vscode-python-debugger/issues
+ about: 'For issues relating to the Python debugger'
- name: Help/Support
url: https://github.com/microsoft/vscode-python/discussions/categories/q-a
about: 'Having trouble with the extension? Need help getting something to work?'
diff --git a/.github/actions/build-vsix/action.yml b/.github/actions/build-vsix/action.yml
index b84d3e0871f0..fc3233b06eff 100644
--- a/.github/actions/build-vsix/action.yml
+++ b/.github/actions/build-vsix/action.yml
@@ -11,26 +11,34 @@ inputs:
artifact_name:
description: 'Name to give the artifact containing the VSIX'
required: true
+ cargo_target:
+ description: 'Cargo build target for the native build'
+ required: true
+ vsix_target:
+ description: 'vsix build target for the native build'
+ required: true
runs:
using: 'composite'
steps:
- name: Install Node
- uses: actions/setup-node@v2
+ uses: actions/setup-node@v4
with:
node-version: ${{ inputs.node_version }}
cache: 'npm'
+ - name: Rust Tool Chain setup
+ uses: dtolnay/rust-toolchain@stable
+
# Jedi LS depends on dataclasses which is not in the stdlib in Python 3.7.
- - name: Use Python 3.7 for JediLSP
- uses: actions/setup-python@v2
+ - name: Use Python 3.8 for JediLSP
+ uses: actions/setup-python@v5
with:
- python-version: 3.7
+ python-version: 3.8
cache: 'pip'
cache-dependency-path: |
requirements.txt
- build/debugger-install-requirements.txt
- pythonFiles/jedilsp_requirements/requirements.txt
+ python_files/jedilsp_requirements/requirements.txt
- name: Upgrade Pip
run: python -m pip install -U pip
@@ -38,43 +46,39 @@ runs:
# For faster/better builds of sdists.
- name: Install build pre-requisite
- run: python -m pip install wheel
+ run: python -m pip install wheel nox
shell: bash
- - name: Install Python dependencies
- uses: brettcannon/pip-secure-install@v1
- with:
- options: '-t ./pythonFiles/lib/python --implementation py'
+ - name: Install Python Extension dependencies (jedi, etc.)
+ run: nox --session install_python_libs
+ shell: bash
- - name: Install debugpy
- run: |
- python -m pip --disable-pip-version-check install -r build/debugger-install-requirements.txt
- python ./pythonFiles/install_debugpy.py
+ - name: Add Rustup target
+ run: rustup target add ${{ inputs.cargo_target }}
shell: bash
- - name: Install Jedi LSP
- uses: brettcannon/pip-secure-install@v1
- with:
- requirements-file: './pythonFiles/jedilsp_requirements/requirements.txt'
- options: '-t ./pythonFiles/lib/jedilsp --implementation py --platform any --abi none'
+ - name: Build Native Binaries
+ run: nox --session native_build
+ shell: bash
+ env:
+ CARGO_TARGET: ${{ inputs.cargo_target }}
- name: Run npm ci
run: npm ci --prefer-offline
shell: bash
- # Use the GITHUB_RUN_ID environment variable to update the build number.
- # GITHUB_RUN_ID is a unique number for each run within a repository.
- # This number does not change if you re-run the workflow run.
- - name: Update extension build number
- run: npm run updateBuildNumber -- --buildNumber $GITHUB_RUN_ID
- shell: bash
-
- name: Update optional extension dependencies
run: npm run addExtensionPackDependencies
shell: bash
+ - name: Build Webpack
+ run: |
+ npx gulp clean
+ npx gulp prePublishBundle
+ shell: bash
+
- name: Build VSIX
- run: npm run package
+ run: npx vsce package --target ${{ inputs.vsix_target }} --out ms-python-insiders.vsix --pre-release
shell: bash
- name: Rename VSIX
@@ -83,7 +87,7 @@ runs:
shell: bash
- name: Upload VSIX
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
with:
name: ${{ inputs.artifact_name }}
path: ${{ inputs.vsix_name }}
diff --git a/.github/actions/lint/action.yml b/.github/actions/lint/action.yml
index 9478550c107b..444f331a3a96 100644
--- a/.github/actions/lint/action.yml
+++ b/.github/actions/lint/action.yml
@@ -10,7 +10,7 @@ runs:
using: 'composite'
steps:
- name: Install Node
- uses: actions/setup-node@v2
+ uses: actions/setup-node@v4
with:
node-version: ${{ inputs.node_version }}
cache: 'npm'
@@ -36,14 +36,15 @@ runs:
shell: bash
- name: Install Python
- uses: actions/setup-python@v2
+ uses: actions/setup-python@v5
with:
python-version: '3.x'
cache: 'pip'
- - name: Check Python format
+ - name: Run Ruff
run: |
- python -m pip install -U black
- python -m black . --check
- working-directory: pythonFiles
+ python -m pip install -U ruff
+ python -m ruff check .
+ python -m ruff format --check
+ working-directory: python_files
shell: bash
diff --git a/.github/actions/smoke-tests/action.yml b/.github/actions/smoke-tests/action.yml
index 9ad6e87cdd26..cc2912115176 100644
--- a/.github/actions/smoke-tests/action.yml
+++ b/.github/actions/smoke-tests/action.yml
@@ -26,7 +26,6 @@ runs:
cache-dependency-path: |
build/test-requirements.txt
requirements.txt
- build/smoke-test-requirements.txt
- name: Install dependencies (npm ci)
run: npm ci --prefer-offline
@@ -35,17 +34,11 @@ runs:
- name: Install Python requirements
uses: brettcannon/pip-secure-install@v1
with:
- options: '-t ./pythonFiles/lib/python --implementation py'
+ options: '-t ./python_files/lib/python --implementation py'
- name: pip install system test requirements
run: |
python -m pip install --upgrade -r build/test-requirements.txt
- python -m pip --disable-pip-version-check install -t ./pythonFiles/lib/python --implementation py --no-deps --upgrade --pre debugpy
- shell: bash
-
- - name: pip install smoke test requirements
- run: |
- python -m pip install --upgrade -r build/smoke-test-requirements.txt
shell: bash
# Bits from the VSIX are reused by smokeTest.ts to speed things up.
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index d54cf6b74a53..14c8e18d475d 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -7,6 +7,27 @@ updates:
labels:
- 'no-changelog'
+ - package-ecosystem: 'github-actions'
+ directory: .github/actions/build-vsix
+ schedule:
+ interval: daily
+ labels:
+ - 'no-changelog'
+
+ - package-ecosystem: 'github-actions'
+ directory: .github/actions/lint
+ schedule:
+ interval: daily
+ labels:
+ - 'no-changelog'
+
+ - package-ecosystem: 'github-actions'
+ directory: .github/actions/smoke-test
+ schedule:
+ interval: daily
+ labels:
+ - 'no-changelog'
+
# Not skipping the news for some Python dependencies in case it's actually useful to communicate to users.
- package-ecosystem: 'pip'
directory: /
@@ -16,7 +37,6 @@ updates:
- dependency-name: prospector # Due to Python 2.7 and #14477.
- dependency-name: pytest # Due to Python 2.7 and #13776.
- dependency-name: py # Due to Python 2.7.
- - dependency-name: isort
- dependency-name: jedi-language-server
labels:
- 'no-changelog'
diff --git a/.github/release_plan.md b/.github/release_plan.md
index e02d7ee45abf..4fbec42adffa 100644
--- a/.github/release_plan.md
+++ b/.github/release_plan.md
@@ -1,23 +1,47 @@
+### General Notes
All dates should align with VS Code's [iteration](https://github.com/microsoft/vscode/labels/iteration-plan) and [endgame](https://github.com/microsoft/vscode/labels/endgame-plan) plans.
-Feature freeze is Monday @ 17:00 America/Vancouver, XXX XX.
+Feature freeze is Monday @ 17:00 America/Vancouver, XXX XX. At that point, commits to `main` should only be in response to bugs found during endgame testing until the release candidate is ready.
+
+ Release Primary and Secondary Assignments for the 2024 Calendar Year
-NOTE: the number of this release is in the issue title and can be substituted in wherever you see [YYYY.minor].
+| Month | Primary | Secondary |
+|:----------|:----------|:------------|
+✅ | ~~January~~ | ~~Eleanor~~ | ~~Karthik~~ |
+✅ | ~~February~~ | ~~Kartik~~ | ~~Anthony~~ |
+✅| ~~March~~ | ~~Karthik~~ | ~~Eleanor~~ |
+✅| ~~April~~ | ~~Paula~~ | ~~Eleanor~~ |
+| May | Anthony | Karthik |
+| June | Eleanor | Paula |
+| July | Anthony | Karthik |
+| August | Paula | Anthony |
+| September | Anthony | Eleanor |
+| October | Paula | Karthik |
+| November | Eleanor | Paula |
+| December | Karthik | Anthony |
+
+Paula: 3 primary, 2 secondary
+Eleanor: 3 primary (2 left), 3 secondary (2 left)
+Anthony: 2 primary, 3 secondary (2 left)
+Karthik: 2 primary (1 left), 4 secondary (3 left)
+
+
# Release candidate (Monday, XXX XX)
NOTE: Third Party Notices are automatically added by our build pipelines using https://tools.opensource.microsoft.com/notice.
+NOTE: the number of this release is in the issue title and can be substituted in wherever you see [YYYY.minor].
+
### Step 1:
-##### Bump the version of `main` to be a release candidate (also updating debugpy dependences, third party notices, and package-lock.json).❄️ (steps with ❄️ will dictate this step happens while main is frozen 🥶)
+##### Bump the version of `main` to be a release candidate (also updating third party notices, and package-lock.json).❄️ (steps with ❄️ will dictate this step happens while main is frozen 🥶)
- [ ] checkout to `main` on your local machine and run `git fetch` to ensure your local is up to date with the remote repo.
- [ ] Create a new branch called **`bump-release-[YYYY.minor]`**.
- [ ] Change the version in `package.json` to the next **even** number and switch the `-dev` to `-rc`. (🤖)
- [ ] Run `npm install` to make sure `package-lock.json` is up-to-date _(you should now see changes to the `package.json` and `package-lock.json` at this point which update the version number **only**)_. (🤖)
-- [ ] Check [debugpy on PyPI](https://pypi.org/project/debugpy/) for a new release and update the version of debugpy in [`install_debugpy.py`](https://github.com/microsoft/vscode-python/blob/main/pythonFiles/install_debugpy.py) if necessary.
- [ ] Update `ThirdPartyNotices-Repository.txt` as appropriate. You can check by looking at the [commit history](https://github.com/microsoft/vscode-python/commits/main) and scrolling through to see if there's anything listed there which might have pulled in some code directly into the repository from somewhere else. If you are still unsure you can check with the team.
- [ ] Create a PR from your branch **`bump-release-[YYYY.minor]`** to `main`. Add the `"no change-log"` tag to the PR so it does not show up on the release notes before merging it.
@@ -51,6 +75,7 @@ NOTE: this PR should make all CI relating to `main` be passing again (such as th
- [ ] Manually add/fix any 3rd-party licenses as appropriate based on what the internal build pipeline detects.
- [ ] Open appropriate [documentation issues](https://github.com/microsoft/vscode-docs/issues?q=is%3Aissue+is%3Aopen+label%3Apython).
- [ ] Contact the PM team to begin drafting a blog post.
+- [ ] Announce to the development team that `main` is open again.
# Release (Wednesday, XXX XX)
@@ -79,7 +104,40 @@ NOTE: this PR should make all CI relating to `main` be passing again (such as th
- [ ] Determine if a hotfix is needed.
- [ ] Merge the release branch **`release/YYYY.minor`** back into `main`. (This step is only required if changes were merged into the release branch. If the only change made on the release branch is the version, this is not necessary. Overall you need to ensure you DO NOT overwrite the version on the `main` branch.)
+
+## Steps for Point Release (if necessary)
+- [ ] checkout to `main` on your local machine and run `git fetch` to ensure your local is up to date with the remote repo.
+- [ ] checkout to the `release/YYY.minor` and check to make sure all necessary changes for the point release have been cherry-picked into the release branch. If not, contact the owner of the changes to do so.
+- [ ] Create a branch against **`release/YYYY.minor`** called **`release-[YYYY.minor.point]`**.
+- [ ] Bump the point version number in the `package.json` to the next `YYYY.minor.point`
+- [ ] Run `npm install` to make sure `package-lock.json` is up-to-date _(you should now see changes to the `package.json` and `package-lock.json` only relating to the new version number)_ . (🤖)
+- [ ] Create a PR from this branch against `release/YYYY.minor`
+- [ ] **Rebase** and merge this PR into the release branch
+- [ ] Create a draft GitHub release for the release notes (🤖) ❄️
+ - [ ] Create a new [GitHub release](https://github.com/microsoft/vscode-python/releases/new).
+ - [ ] Specify a new tag called `vYYYY.minor.point`.
+ - [ ] Have the `target` for the github release be your release branch called **`release/YYYY.minor`**.
+ - [ ] Create the release notes by specifying the previous tag as the previous version of stable, so the minor release **`vYYYY.minor`** for the last stable release and click `Generate release notes`.
+ - [ ] Check the generated notes to ensure that all PRs for the point release are included so users know these new changes.
+ - [ ] Click `Save draft`.
+- [ ] Publish the point release
+ - [ ] Make sure CI is passing for **`release/YYYY.minor`** release branch (🤖).
+ - [ ] Run the [CD](https://dev.azure.com/monacotools/Monaco/_build?definitionId=299) pipeline on the **`release/YYYY.minor`** branch.
+ - [ ] Click `run pipeline`.
+ - [ ] for `branch/tag` select the release branch which is **`release/YYYY.minor`**.
+ - [ ] 🧍🧍 Get approval on the release on the [CD](https://dev.azure.com/monacotools/Monaco/_build?definitionId=299) and publish the release to the marketplace. 🎉
+ - [ ] Take the Github release out of draft.
+
+## Steps for contributing to a point release
+- [ ] Work with team to decide if point release is necessary
+- [ ] Work with team or users to verify the fix is correct and solves the problem without creating any new ones
+- [ ] Create PR/PRs and merge then each into main as usual
+- [ ] Make sure to still mark if the change is "bug" or "no-changelog"
+- [ ] Cherry-pick all PRs to the release branch and check that the changes are in before the package is bumped
+- [ ] Notify the release champ that your changes are in so they can trigger a point-release
+
+
## Prep for the _next_ release
- [ ] Create a new [release plan](https://raw.githubusercontent.com/microsoft/vscode-python/main/.github/release_plan.md). (🤖)
-- [ ] [(Un-)pin](https://help.github.com/en/articles/pinning-an-issue-to-your-repository) [release plan issues](https://github.com/Microsoft/vscode-python/labels/release%20plan) (🤖)
+- [ ] [(Un-)pin](https://help.github.com/en/articles/pinning-an-issue-to-your-repository) [release plan issues](https://github.com/Microsoft/vscode-python/labels/release-plan) (🤖)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index f26f13ce50f4..b1c56f2535ae 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -9,7 +9,7 @@ on:
- 'release-*'
env:
- NODE_VERSION: 14.18.2
+ NODE_VERSION: 18.17.1
PYTHON_VERSION: '3.10' # YML treats 3.10 the number as 3.1, so quotes around 3.10
# Force a path with spaces and to test extension works in these scenarios
# Unicode characters are causing 2.7 failures so skip that for now.
@@ -28,6 +28,7 @@ jobs:
run:
shell: python
outputs:
+ vsix_basename: ${{ steps.vsix_names.outputs.vsix_basename }}
vsix_name: ${{ steps.vsix_names.outputs.vsix_name }}
vsix_artifact_name: ${{ steps.vsix_names.outputs.vsix_artifact_name }}
steps:
@@ -40,23 +41,57 @@ jobs:
else:
vsix_type = "release"
print(f"::set-output name=vsix_name::ms-python-{vsix_type}.vsix")
+ print(f"::set-output name=vsix_basename::ms-python-{vsix_type}")
print(f"::set-output name=vsix_artifact_name::ms-python-{vsix_type}-vsix")
build-vsix:
name: Create VSIX
if: github.repository == 'microsoft/vscode-python'
needs: setup
- runs-on: ubuntu-latest
+ runs-on: ${{ matrix.os }}
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - os: windows-latest
+ target: x86_64-pc-windows-msvc
+ vsix-target: win32-x64
+ - os: windows-latest
+ target: aarch64-pc-windows-msvc
+ vsix-target: win32-arm64
+ - os: ubuntu-latest
+ target: x86_64-unknown-linux-musl
+ vsix-target: linux-x64
+ # - os: ubuntu-latest
+ # target: aarch64-unknown-linux-gnu
+ # vsix-target: linux-arm64
+ # - os: ubuntu-latest
+ # target: arm-unknown-linux-gnueabihf
+ # vsix-target: linux-armhf
+ - os: macos-latest
+ target: x86_64-apple-darwin
+ vsix-target: darwin-x64
+ - os: macos-14
+ target: aarch64-apple-darwin
+ vsix-target: darwin-arm64
+ - os: ubuntu-latest
+ target: x86_64-unknown-linux-musl
+ vsix-target: alpine-x64
+ # - os: ubuntu-latest
+ # target: aarch64-unknown-linux-musl
+ # vsix-target: alpine-arm64
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Build VSIX
uses: ./.github/actions/build-vsix
with:
- node_version: ${{ env.NODE_VERSION }}
- vsix_name: ${{ needs.setup.outputs.vsix_name }}
- artifact_name: ${{ needs.setup.outputs.vsix_artifact_name }}
+ node_version: ${{ env.NODE_VERSION}}
+ vsix_name: ${{ needs.setup.outputs.vsix_basename }}-${{ matrix.vsix-target }}.vsix'
+ artifact_name: '${{ needs.setup.outputs.vsix_artifact_name }}-${{ matrix.vsix-target }}'
+ cargo_target: ${{ matrix.target }}
+ vsix_target: ${{ matrix.vsix-target }}
lint:
name: Lint
@@ -64,7 +99,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Lint
uses: ./.github/actions/lint
@@ -77,35 +112,73 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Use Python ${{ env.PYTHON_VERSION }}
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Install core Python requirements
uses: brettcannon/pip-secure-install@v1
with:
- options: '-t ./pythonFiles/lib/python --no-cache-dir --implementation py'
+ options: '-t ./python_files/lib/python --no-cache-dir --implementation py'
- name: Install Jedi requirements
uses: brettcannon/pip-secure-install@v1
with:
- requirements-file: './pythonFiles/jedilsp_requirements/requirements.txt'
- options: '-t ./pythonFiles/lib/jedilsp --no-cache-dir --implementation py'
+ requirements-file: './python_files/jedilsp_requirements/requirements.txt'
+ options: '-t ./python_files/lib/jedilsp --no-cache-dir --implementation py'
- name: Install other Python requirements
run: |
- python -m pip --disable-pip-version-check install -t ./pythonFiles/lib/python --no-cache-dir --implementation py --no-deps --upgrade --pre debugpy
python -m pip install --upgrade -r build/test-requirements.txt
- name: Run Pyright
- uses: jakebailey/pyright-action@v1
+ uses: jakebailey/pyright-action@v2
with:
- working-directory: 'pythonFiles'
+ version: 1.1.308
+ working-directory: 'python_files'
+
+ python-tests:
+ name: Python Tests
+ # The value of runs-on is the OS of the current job (specified in the strategy matrix below) instead of being hardcoded.
+ runs-on: ${{ matrix.os }}
+ defaults:
+ run:
+ working-directory: ${{ env.special-working-directory }}
+ strategy:
+ fail-fast: false
+ matrix:
+ # We're not running CI on macOS for now because it's one less matrix entry to lower the number of runners used,
+ # macOS runners are expensive, and we assume that Ubuntu is enough to cover the Unix case.
+ os: [ubuntu-latest, windows-latest]
+ # Run the tests on the oldest and most recent versions of Python.
+ python: ['3.8', '3.x', '3.12-dev']
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ path: ${{ env.special-working-directory-relative }}
+
+ - name: Use Python ${{ matrix.python }}
+ uses: actions/setup-python@v5
+ with:
+ python-version: ${{ matrix.python }}
+
+ - name: Install base Python requirements
+ uses: brettcannon/pip-secure-install@v1
+ with:
+ requirements-file: '"${{ env.special-working-directory-relative }}/requirements.txt"'
+ options: '-t "${{ env.special-working-directory-relative }}/python_files/lib/python" --no-cache-dir --implementation py'
+
+ - name: Install test requirements
+ run: python -m pip install --upgrade -r build/test-requirements.txt
+
+ - name: Run Python unit tests
+ run: python python_files/tests/run_all.py
- ### Non-smoke tests
tests:
name: Tests
if: github.repository == 'microsoft/vscode-python'
@@ -121,15 +194,15 @@ jobs:
# and we assume that Ubuntu is enough to cover the UNIX case.
os: [ubuntu-latest, windows-latest]
python: ['3.x']
- test-suite: [ts-unit, python-unit, venv, single-workspace, multi-workspace, debugger, functional]
+ test-suite: [ts-unit, venv, single-workspace, multi-workspace, debugger, functional]
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
path: ${{ env.special-working-directory-relative }}
- name: Install Node
- uses: actions/setup-node@v3
+ uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
@@ -141,41 +214,27 @@ jobs:
- name: Compile
run: npx gulp prePublishNonBundle
+ - name: Localization
+ run: npx @vscode/l10n-dev@latest export ./src
+
- name: Install Python ${{ matrix.python }}
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- - name: Install debugpy
- run: |
- # We need to have debugpy so that tests relying on it keep passing, but we don't need install_debugpy's logic in the test phase.
- python -m pip --disable-pip-version-check install -t ./pythonFiles/lib/python --no-cache-dir --implementation py --no-deps --upgrade --pre debugpy
+ - name: Upgrade Pip
+ run: python -m pip install -U pip
- - name: Install core Python requirements
- uses: brettcannon/pip-secure-install@v1
- with:
- requirements-file: '"${{ env.special-working-directory-relative }}/requirements.txt"'
- options: '-t "${{ env.special-working-directory-relative }}/pythonFiles/lib/python" --no-cache-dir --implementation py'
- if: startsWith(matrix.python, 3.)
+ # For faster/better builds of sdists.
+ - name: Install build pre-requisite
+ run: python -m pip install wheel nox
- - name: Install Jedi requirements
- uses: brettcannon/pip-secure-install@v1
- with:
- requirements-file: '"${{ env.special-working-directory-relative }}/pythonFiles/jedilsp_requirements/requirements.txt"'
- options: '-t "${{ env.special-working-directory-relative }}/pythonFiles/lib/jedilsp" --no-cache-dir --implementation py'
- if: startsWith(matrix.python, 3.)
+ - name: Install Python Extension dependencies (jedi, etc.)
+ run: nox --session install_python_libs
- name: Install test requirements
run: python -m pip install --upgrade -r build/test-requirements.txt
- - name: Install debugpy wheels (Python ${{ matrix.python }})
- run: |
- python -m pip install wheel
- python -m pip --disable-pip-version-check install -r build/debugger-install-requirements.txt
- python ./pythonFiles/install_debugpy.py
- shell: bash
- if: matrix.test-suite == 'debugger'
-
- name: Install functional test requirements
run: python -m pip install --upgrade -r ./build/functional-test-requirements.txt
if: matrix.test-suite == 'functional'
@@ -236,7 +295,7 @@ jobs:
shell: pwsh
if: matrix.test-suite == 'venv'
run: |
- # 1. For `terminalActivation.testvirtualenvs.test.ts`
+ # 1. For `*.testvirtualenvs.test.ts`
if ('${{ matrix.os }}' -match 'windows-latest') {
$condaPythonPath = Join-Path -Path $Env:CONDA -ChildPath python.exe
$condaExecPath = Join-Path -Path $Env:CONDA -ChildPath Scripts | Join-Path -ChildPath conda
@@ -260,10 +319,6 @@ jobs:
run: npm run test:unittests
if: matrix.test-suite == 'ts-unit' && startsWith(matrix.python, '3.')
- - name: Run Python unit tests
- run: python pythonFiles/tests/run_all.py
- if: matrix.test-suite == 'python-unit'
-
# The virtual environment based tests use the `testSingleWorkspace` set of tests
# with the environment variable `TEST_FILES_SUFFIX` set to `testvirtualenvs`,
# which is set in the "Prepare environment for venv tests" step.
@@ -325,7 +380,7 @@ jobs:
os: [ubuntu-latest, windows-latest]
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Smoke tests
uses: ./.github/actions/smoke-tests
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 278c2cf22e4a..d902a68878e0 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -36,11 +36,11 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@v2
+ uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -65,4 +65,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v2
+ uses: github/codeql-action/analyze@v3
diff --git a/.github/workflows/community-feedback-auto-comment.yml b/.github/workflows/community-feedback-auto-comment.yml
new file mode 100644
index 000000000000..cf3c4f51fe61
--- /dev/null
+++ b/.github/workflows/community-feedback-auto-comment.yml
@@ -0,0 +1,28 @@
+name: Community Feedback Auto Comment
+
+on:
+ issues:
+ types:
+ - labeled
+jobs:
+ add-comment:
+ if: github.event.label.name == 'needs community feedback'
+ runs-on: ubuntu-latest
+ permissions:
+ issues: write
+ steps:
+ - name: Check For Existing Comment
+ uses: peter-evans/find-comment@v3
+ id: finder
+ with:
+ issue-number: ${{ github.event.issue.number }}
+ comment-author: 'github-actions[bot]'
+ body-includes: 'Thanks for the feature request! We are going to give the community'
+
+ - name: Add Community Feedback Comment
+ if: steps.finder.outputs.comment-id == ''
+ uses: peter-evans/create-or-update-comment@v4
+ with:
+ issue-number: ${{ github.event.issue.number }}
+ body: |
+ Thanks for the feature request! We are going to give the community 60 days from when this issue was created to provide 7 👍 upvotes on the opening comment to gauge general interest in this idea. If there's enough upvotes then we will consider this feature request in our future planning. If there's unfortunately not enough upvotes then we will close this issue.
diff --git a/.github/workflows/getLabels.js b/.github/workflows/getLabels.js
deleted file mode 100644
index 99060e7205eb..000000000000
--- a/.github/workflows/getLabels.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * To run this file:
- * * npm install @octokit/rest
- * * node .github/workflows/getLabels.js
- *
- * This script assumes the maximum number of labels to be 100.
- */
-
-const { Octokit } = require('@octokit/rest');
-const github = new Octokit();
-github.rest.issues
- .listLabelsForRepo({
- owner: 'microsoft',
- repo: 'vscode-python',
- per_page: 100,
- })
- .then((result) => {
- const labels = result.data.map((label) => label.name);
- console.log(
- '\nNumber of labels found:',
- labels.length,
- ", verify that it's the same as number of labels listed in https://github.com/microsoft/vscode-python/labels\n",
- );
- console.log(JSON.stringify(labels), '\n');
- });
diff --git a/.github/workflows/info-needed-closer.yml b/.github/workflows/info-needed-closer.yml
new file mode 100644
index 000000000000..442799cd7a16
--- /dev/null
+++ b/.github/workflows/info-needed-closer.yml
@@ -0,0 +1,28 @@
+name: Info-Needed Closer
+on:
+ schedule:
+ - cron: 20 12 * * * # 5:20am Redmond
+ repository_dispatch:
+ types: [trigger-needs-more-info]
+ workflow_dispatch:
+
+jobs:
+ main:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Actions
+ uses: actions/checkout@v4
+ with:
+ repository: 'microsoft/vscode-github-triage-actions'
+ path: ./actions
+ ref: stable
+ - name: Install Actions
+ run: npm install --production --prefix ./actions
+ - name: Run info-needed Closer
+ uses: ./actions/needs-more-info-closer
+ with:
+ label: info-needed
+ closeDays: 30
+ closeComment: "Because we have not heard back with the information we requested, we are closing this issue for now. If you are able to provide the info later on, then we will be happy to re-open this issue to pick up where we left off. \n\nHappy Coding!"
+ pingDays: 30
+ pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if the problem no longer exists, or adding more information."
diff --git a/.github/workflows/issue-labels.yml b/.github/workflows/issue-labels.yml
index 520592be2fce..8b084aef409f 100644
--- a/.github/workflows/issue-labels.yml
+++ b/.github/workflows/issue-labels.yml
@@ -5,9 +5,7 @@ on:
types: [opened, reopened]
env:
- # To update the list of labels, see `getLabels.js`.
- REPO_LABELS: '["area-data science","area-debugging","area-diagnostics","area-editor-*","area-environments","area-formatting","area-intellisense","area-internal","area-linting","area-terminal","area-testing","author-verification-requested","bug","community ask","debt","dependencies","documentation","experimenting","feature-request","good first issue","help wanted","important","info-needed","invalid-testplan-item","investigating","iteration-candidate","iteration-plan","iteration-plan-draft","javascript","linux","macos","meta","needs community feedback","needs PR","needs proposal","needs spike","no-changelog","on-testplan","partner ask","regression","release-plan","reports-wanted","skip package*.json","skip tests","tensorboard","testplan-item","triage-needed","verification-found","verification-needed","verification-steps-needed","verified","windows"]'
- TRIAGERS: '["karrtikr","karthiknadig","paulacamargo25","eleanorjboyd"]'
+ TRIAGERS: '["karrtikr","karthiknadig","paulacamargo25","eleanorjboyd","anthonykim1"]'
permissions:
issues: write
@@ -15,58 +13,21 @@ permissions:
jobs:
# From https://github.com/marketplace/actions/github-script#apply-a-label-to-an-issue.
add-classify-label:
- name: "Add 'triage-needed' and remove unrecognizable labels & assignees"
+ name: "Add 'triage-needed' and remove assignees"
runs-on: ubuntu-latest
steps:
- - uses: actions/github-script@v6
+ - name: Checkout Actions
+ uses: actions/checkout@v4
with:
- github-token: ${{ secrets.GITHUB_TOKEN }}
- script: |
- const result = await github.rest.issues.listLabelsOnIssue({
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: context.issue.number,
- })
- const labels = result.data.map((label) => label.name)
- const hasNeedsOrTPI = labels.some((label) => (label.startsWith('needs') || label === 'testplan-item' || label.startsWith('iteration-plan') || label === 'release-plan'))
+ repository: 'microsoft/vscode-github-triage-actions'
+ ref: stable
+ path: ./actions
- if (!hasNeedsOrTPI) {
- console.log('This issue is not labeled with a "needs __", "iteration-plan", "release-plan", or the "testplan-item" label; add the "triage-needed" label.')
+ - name: Install Actions
+ run: npm install --production --prefix ./actions
- github.rest.issues.addLabels({
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: context.issue.number,
- labels: ['triage-needed']
- })
- } else {
- console.log('This issue already has a "needs __", "iteration-plan", "release-plan", or the "testplan-item" label, do not add the "triage-needed" label.')
- }
- const knownTriagers = ${{ env.TRIAGERS }}
- const currentAssignees = await github.rest.issues
- .get({
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: context.issue.number,
- })
- .then((result) => result.data.assignees.map((a) => a.login));
- console.log('Known triagers:', JSON.stringify(knownTriagers));
- console.log('Current assignees:', JSON.stringify(currentAssignees));
- const assigneesToRemove = currentAssignees.filter(a => !knownTriagers.includes(a));
- console.log('Assignees to remove:', JSON.stringify(assigneesToRemove));
- github.rest.issues.removeAssignees({
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: context.issue.number,
- assignees: assigneesToRemove,
- });
- const knownLabels = ${{ env.REPO_LABELS }}
- for( const label of labels) {
- if (!knownLabels.includes(label)) {
- await github.rest.issues.deleteLabel({
- owner: context.repo.owner,
- repo: context.repo.repo,
- name: label,
- })
- }
- }
+ - name: "Add 'triage-needed' and remove assignees"
+ uses: ./actions/python-issue-labels
+ with:
+ triagers: ${{ env.TRIAGERS }}
+ token: ${{secrets.GITHUB_TOKEN}}
diff --git a/.github/workflows/lock-issues.yml b/.github/workflows/lock-issues.yml
index 6417d415fcfe..47f243d71979 100644
--- a/.github/workflows/lock-issues.yml
+++ b/.github/workflows/lock-issues.yml
@@ -15,7 +15,8 @@ jobs:
lock-issues:
runs-on: ubuntu-latest
steps:
- - uses: dessant/lock-threads@v4
+ - name: 'Lock Issues'
+ uses: dessant/lock-threads@v5
with:
github-token: ${{ github.token }}
issue-inactive-days: '30'
diff --git a/.github/workflows/pr-check.yml b/.github/workflows/pr-check.yml
index ade1dcd61234..0efd568e0346 100644
--- a/.github/workflows/pr-check.yml
+++ b/.github/workflows/pr-check.yml
@@ -8,11 +8,10 @@ on:
- release*
env:
- NODE_VERSION: 14.18.2
+ NODE_VERSION: 18.17.1
PYTHON_VERSION: '3.10' # YML treats 3.10 the number as 3.1, so quotes around 3.10
MOCHA_REPORTER_JUNIT: true # Use the mocha-multi-reporters and send output to both console (spec) and JUnit (mocha-junit-reporter). Also enables a reporter which exits the process running the tests if it haven't already.
ARTIFACT_NAME_VSIX: ms-python-insiders-vsix
- VSIX_NAME: ms-python-insiders.vsix
TEST_RESULTS_DIRECTORY: .
# Force a path with spaces and to test extension works in these scenarios
# Unicode characters are causing 2.7 failures so skip that for now.
@@ -22,24 +21,57 @@ env:
jobs:
build-vsix:
name: Create VSIX
- runs-on: ubuntu-latest
+ runs-on: ${{ matrix.os }}
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - os: windows-latest
+ target: x86_64-pc-windows-msvc
+ vsix-target: win32-x64
+ - os: windows-latest
+ target: aarch64-pc-windows-msvc
+ vsix-target: win32-arm64
+ - os: ubuntu-latest
+ target: x86_64-unknown-linux-musl
+ vsix-target: linux-x64
+ # - os: ubuntu-latest
+ # target: aarch64-unknown-linux-gnu
+ # vsix-target: linux-arm64
+ # - os: ubuntu-latest
+ # target: arm-unknown-linux-gnueabihf
+ # vsix-target: linux-armhf
+ - os: macos-latest
+ target: x86_64-apple-darwin
+ vsix-target: darwin-x64
+ - os: macos-14
+ target: aarch64-apple-darwin
+ vsix-target: darwin-arm64
+ - os: ubuntu-latest
+ target: x86_64-unknown-linux-musl
+ vsix-target: alpine-x64
+ # - os: ubuntu-latest
+ # target: aarch64-unknown-linux-musl
+ # vsix-target: alpine-arm64
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Build VSIX
uses: ./.github/actions/build-vsix
with:
node_version: ${{ env.NODE_VERSION}}
- vsix_name: ${{ env.VSIX_NAME }}
- artifact_name: ${{ env.ARTIFACT_NAME_VSIX }}
+ vsix_name: 'ms-python-insiders-${{ matrix.vsix-target }}.vsix'
+ artifact_name: '${{ env.ARTIFACT_NAME_VSIX }}-${{ matrix.vsix-target }}'
+ cargo_target: ${{ matrix.target }}
+ vsix_target: ${{ matrix.vsix-target }}
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Lint
uses: ./.github/actions/lint
@@ -51,35 +83,86 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Use Python ${{ env.PYTHON_VERSION }}
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Install base Python requirements
uses: brettcannon/pip-secure-install@v1
with:
- options: '-t ./pythonFiles/lib/python --no-cache-dir --implementation py'
+ options: '-t ./python_files/lib/python --no-cache-dir --implementation py'
- name: Install Jedi requirements
uses: brettcannon/pip-secure-install@v1
with:
- requirements-file: './pythonFiles/jedilsp_requirements/requirements.txt'
- options: '-t ./pythonFiles/lib/jedilsp --no-cache-dir --implementation py'
+ requirements-file: './python_files/jedilsp_requirements/requirements.txt'
+ options: '-t ./python_files/lib/jedilsp --no-cache-dir --implementation py'
- name: Install other Python requirements
run: |
- python -m pip --disable-pip-version-check install -t ./pythonFiles/lib/python --no-cache-dir --implementation py --no-deps --upgrade --pre debugpy
python -m pip install --upgrade -r build/test-requirements.txt
- name: Run Pyright
- uses: jakebailey/pyright-action@v1
+ uses: jakebailey/pyright-action@v2
with:
- working-directory: 'pythonFiles'
+ version: 1.1.308
+ working-directory: 'python_files'
+
+ python-tests:
+ name: Python Tests
+ # The value of runs-on is the OS of the current job (specified in the strategy matrix below) instead of being hardcoded.
+ runs-on: ${{ matrix.os }}
+ defaults:
+ run:
+ working-directory: ${{ env.special-working-directory }}
+ strategy:
+ fail-fast: false
+ matrix:
+ # We're not running CI on macOS for now because it's one less matrix entry to lower the number of runners used,
+ # macOS runners are expensive, and we assume that Ubuntu is enough to cover the Unix case.
+ os: [ubuntu-latest, windows-latest]
+ # Run the tests on the oldest and most recent versions of Python.
+ python: ['3.8', '3.x'] # run for 3 pytest versions, most recent stable, oldest version supported and pre-release
+ pytest-version: ['pytest', 'pytest@pre-release', 'pytest==6.2.0']
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ path: ${{ env.special-working-directory-relative }}
+
+ - name: Use Python ${{ matrix.python }}
+ uses: actions/setup-python@v5
+ with:
+ python-version: ${{ matrix.python }}
+
+ - name: Install specific pytest version
+ if: matrix.pytest-version == 'pytest@pre-release'
+ run: |
+ python -m pip install --pre pytest
+
+ - name: Install specific pytest version
+ if: matrix.pytest-version != 'pytest@pre-release'
+ run: |
+ python -m pip install "${{ matrix.pytest-version }}"
+
+ - name: Install specific pytest version
+ run: python -m pytest --version
+ - name: Install base Python requirements
+ uses: brettcannon/pip-secure-install@v1
+ with:
+ requirements-file: '"${{ env.special-working-directory-relative }}/requirements.txt"'
+ options: '-t "${{ env.special-working-directory-relative }}/python_files/lib/python" --no-cache-dir --implementation py'
+
+ - name: Install test requirements
+ run: python -m pip install --upgrade -r build/test-requirements.txt
+
+ - name: Run Python unit tests
+ run: python python_files/tests/run_all.py
- ### Non-smoke tests
tests:
name: Tests
# The value of runs-on is the OS of the current job (specified in the strategy matrix below) instead of being hardcoded.
@@ -95,16 +178,16 @@ jobs:
os: [ubuntu-latest, windows-latest]
# Run the tests on the oldest and most recent versions of Python.
python: ['3.x']
- test-suite: [ts-unit, python-unit, venv, single-workspace, debugger, functional]
+ test-suite: [ts-unit, venv, single-workspace, debugger, functional]
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
path: ${{ env.special-working-directory-relative }}
- name: Install Node
- uses: actions/setup-node@v3
+ uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
@@ -116,41 +199,27 @@ jobs:
- name: Compile
run: npx gulp prePublishNonBundle
+ - name: Localization
+ run: npx @vscode/l10n-dev@latest export ./src
+
- name: Use Python ${{ matrix.python }}
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- - name: Install debugpy
- run: |
- # We need to have debugpy so that tests relying on it keep passing, but we don't need install_debugpy's logic in the test phase.
- python -m pip --disable-pip-version-check install -t ./pythonFiles/lib/python --no-cache-dir --implementation py --no-deps --upgrade --pre debugpy
+ - name: Upgrade Pip
+ run: python -m pip install -U pip
- - name: Install base Python requirements
- uses: brettcannon/pip-secure-install@v1
- with:
- requirements-file: '"${{ env.special-working-directory-relative }}/requirements.txt"'
- options: '-t "${{ env.special-working-directory-relative }}/pythonFiles/lib/python" --no-cache-dir --implementation py'
- if: startsWith(matrix.python, 3.)
+ # For faster/better builds of sdists.
+ - name: Install build pre-requisite
+ run: python -m pip install wheel nox
- - name: Install Jedi requirements
- uses: brettcannon/pip-secure-install@v1
- with:
- requirements-file: '"${{ env.special-working-directory-relative }}/pythonFiles/jedilsp_requirements/requirements.txt"'
- options: '-t "${{ env.special-working-directory-relative }}/pythonFiles/lib/jedilsp" --no-cache-dir --implementation py'
- if: startsWith(matrix.python, 3.)
+ - name: Install Python Extension dependencies (jedi, etc.)
+ run: nox --session install_python_libs
- name: Install test requirements
run: python -m pip install --upgrade -r build/test-requirements.txt
- - name: Install debugpy wheels (Python ${{ matrix.python }})
- run: |
- python -m pip install wheel
- python -m pip --disable-pip-version-check install -r build/debugger-install-requirements.txt
- python ./pythonFiles/install_debugpy.py
- shell: bash
- if: matrix.test-suite == 'debugger'
-
- name: Install functional test requirements
run: python -m pip install --upgrade -r ./build/functional-test-requirements.txt
if: matrix.test-suite == 'functional'
@@ -211,7 +280,7 @@ jobs:
shell: pwsh
if: matrix.test-suite == 'venv'
run: |
- # 1. For `terminalActivation.testvirtualenvs.test.ts`
+ # 1. For `*.testvirtualenvs.test.ts`
if ('${{ matrix.os }}' -match 'windows-latest') {
$condaPythonPath = Join-Path -Path $Env:CONDA -ChildPath python.exe
$condaExecPath = Join-Path -Path $Env:CONDA -ChildPath Scripts | Join-Path -ChildPath conda
@@ -235,12 +304,6 @@ jobs:
run: npm run test:unittests
if: matrix.test-suite == 'ts-unit' && startsWith(matrix.python, 3.)
- # Run the Python tests in our codebase.
- - name: Run Python unit tests
- run: |
- python pythonFiles/tests/run_all.py
- if: matrix.test-suite == 'python-unit'
-
# The virtual environment based tests use the `testSingleWorkspace` set of tests
# with the environment variable `TEST_FILES_SUFFIX` set to `testvirtualenvs`,
# which is set in the "Prepare environment for venv tests" step.
@@ -255,7 +318,7 @@ jobs:
with:
run: npm run testSingleWorkspace
working-directory: ${{ env.special-working-directory }}
- if: matrix.test-suite == 'venv' && matrix.os == 'ubuntu-latest'
+ if: matrix.test-suite == 'venv'
- name: Run single-workspace tests
env:
@@ -280,6 +343,30 @@ jobs:
run: npm run test:functional
if: matrix.test-suite == 'functional'
+ native-tests:
+ name: Native Tests
+ # The value of runs-on is the OS of the current job (specified in the strategy matrix below) instead of being hardcoded.
+ runs-on: ${{ matrix.os }}
+ defaults:
+ run:
+ working-directory: ${{ env.special-working-directory }}
+ strategy:
+ fail-fast: false
+ matrix:
+ # We're not running CI on macOS for now because it's one less matrix entry to lower the number of runners used,
+ # macOS runners are expensive, and we assume that Ubuntu is enough to cover the Unix case.
+ os: [ubuntu-latest, windows-latest]
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ path: ${{ env.special-working-directory-relative }}
+
+ - name: Native Locator tests
+ run: cargo test -- --nocapture
+ working-directory: ${{ env.special-working-directory }}/native_locator
+
smoke-tests:
name: Smoke tests
# The value of runs-on is the OS of the current job (specified in the strategy matrix below) instead of being hardcoded.
@@ -290,17 +377,22 @@ jobs:
matrix:
# We're not running CI on macOS for now because it's one less matrix entry to lower the number of runners used,
# macOS runners are expensive, and we assume that Ubuntu is enough to cover the UNIX case.
- os: [ubuntu-latest, windows-latest]
+ include:
+ - os: windows-latest
+ vsix-target: win32-x64
+ - os: ubuntu-latest
+ vsix-target: linux-x64
+
steps:
# Need the source to have the tests available.
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Smoke tests
uses: ./.github/actions/smoke-tests
with:
node_version: ${{ env.NODE_VERSION }}
- artifact_name: ${{ env.ARTIFACT_NAME_VSIX }}
+ artifact_name: '${{ env.ARTIFACT_NAME_VSIX }}-${{ matrix.vsix-target }}'
### Coverage run
coverage:
@@ -315,10 +407,10 @@ jobs:
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Install Node
- uses: actions/setup-node@v3
+ uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
@@ -329,32 +421,30 @@ jobs:
- name: Compile
run: npx gulp prePublishNonBundle
+ - name: Localization
+ run: npx @vscode/l10n-dev@latest export ./src
+
- name: Use Python ${{ env.PYTHON_VERSION }}
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
cache: 'pip'
cache-dependency-path: |
requirements.txt
- pythonFiles/jedilsp_requirements/requirements.txt
+ python_files/jedilsp_requirements/requirements.txt
build/test-requirements.txt
build/functional-test-requirements.txt
- name: Install base Python requirements
uses: brettcannon/pip-secure-install@v1
with:
- options: '-t ./pythonFiles/lib/python --implementation py'
+ options: '-t ./python_files/lib/python --implementation py'
- name: Install Jedi requirements
uses: brettcannon/pip-secure-install@v1
with:
- requirements-file: './pythonFiles/jedilsp_requirements/requirements.txt'
- options: '-t ./pythonFiles/lib/jedilsp --implementation py'
-
- - name: Install debugpy
- run: |
- # We need to have debugpy so that tests relying on it keep passing, but we don't need install_debugpy's logic in the test phase.
- python -m pip --disable-pip-version-check install -t ./pythonFiles/lib/python --implementation py --no-deps --upgrade --pre debugpy
+ requirements-file: './python_files/jedilsp_requirements/requirements.txt'
+ options: '-t ./python_files/lib/jedilsp --implementation py'
- name: Install test requirements
run: python -m pip install --upgrade -r build/test-requirements.txt
@@ -413,7 +503,7 @@ jobs:
PYTHON_VIRTUAL_ENVS_LOCATION: './src/tmp/envPaths.json'
shell: pwsh
run: |
- # 1. For `terminalActivation.testvirtualenvs.test.ts`
+ # 1. For `*.testvirtualenvs.test.ts`
if ('${{ matrix.os }}' -match 'windows-latest') {
$condaPythonPath = Join-Path -Path $Env:CONDA -ChildPath python.exe
$condaExecPath = Join-Path -Path $Env:CONDA -ChildPath Scripts | Join-Path -ChildPath conda
@@ -430,7 +520,7 @@ jobs:
- name: Run Python unit tests
run: |
- python pythonFiles/tests/run_all.py
+ python python_files/tests/run_all.py
# The virtual environment based tests use the `testSingleWorkspace` set of tests
# with the environment variable `TEST_FILES_SUFFIX` set to `testvirtualenvs`,
@@ -484,7 +574,7 @@ jobs:
run: npm run test:cover:report
- name: Upload HTML report
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: ${{ runner.os }}-coverage-report-html
path: ./coverage
diff --git a/.github/workflows/pr-file-check.yml b/.github/workflows/pr-file-check.yml
index 3eb7ad7b6338..ba019c790e99 100644
--- a/.github/workflows/pr-file-check.yml
+++ b/.github/workflows/pr-file-check.yml
@@ -1,4 +1,5 @@
name: PR files
+
on:
pull_request:
types:
@@ -16,7 +17,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: 'package-lock.json matches package.json'
- uses: brettcannon/check-for-changed-files@v1.1.0
+ uses: brettcannon/check-for-changed-files@v1.2.0
with:
prereq-pattern: 'package.json'
file-pattern: 'package-lock.json'
@@ -24,7 +25,7 @@ jobs:
failure-message: '${prereq-pattern} was edited but ${file-pattern} was not (the ${skip-label} label can be used to pass this check)'
- name: 'package.json matches package-lock.json'
- uses: brettcannon/check-for-changed-files@v1.1.0
+ uses: brettcannon/check-for-changed-files@v1.2.0
with:
prereq-pattern: 'package-lock.json'
file-pattern: 'package.json'
@@ -32,7 +33,7 @@ jobs:
failure-message: '${prereq-pattern} was edited but ${file-pattern} was not (the ${skip-label} label can be used to pass this check)'
- name: 'Tests'
- uses: brettcannon/check-for-changed-files@v1.1.0
+ uses: brettcannon/check-for-changed-files@v1.2.0
with:
prereq-pattern: src/**/*.ts
file-pattern: |
diff --git a/.github/workflows/pr-labels.yml b/.github/workflows/pr-labels.yml
index 7563d4d44dcc..730b8e5c5832 100644
--- a/.github/workflows/pr-labels.yml
+++ b/.github/workflows/pr-labels.yml
@@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: 'PR impact specified'
- uses: mheap/github-action-required-labels@v3
+ uses: mheap/github-action-required-labels@v5
with:
mode: exactly
count: 1
diff --git a/.github/workflows/python27-issue-response.yml b/.github/workflows/python27-issue-response.yml
new file mode 100644
index 000000000000..4d51e9921ab4
--- /dev/null
+++ b/.github/workflows/python27-issue-response.yml
@@ -0,0 +1,14 @@
+on:
+ issues:
+ types: [opened]
+
+jobs:
+ python27-issue-response:
+ runs-on: ubuntu-latest
+ if: "contains(github.event.issue.body, 'Python version (& distribution if applicable, e.g. Anaconda): 2.7')"
+ steps:
+ - name: Check for Python 2.7 string
+ run: |
+ response="We're sorry, but we no longer support Python 2.7. If you need to work with Python 2.7, you will have to pin to 2022.2.* version of the extension, which was the last version that had the debugger (debugpy) with support for python 2.7, and was tested with `2.7`. Thank you for your understanding! \n "
+ gh issue comment ${{ github.event.issue.number }} --body "$response"
+ gh issue close ${{ github.event.issue.number }}
diff --git a/.github/workflows/remove-needs-labels.yml b/.github/workflows/remove-needs-labels.yml
new file mode 100644
index 000000000000..3d218e297a11
--- /dev/null
+++ b/.github/workflows/remove-needs-labels.yml
@@ -0,0 +1,18 @@
+name: 'Remove Needs Label'
+on:
+ issues:
+ types: [closed]
+
+jobs:
+ classify:
+ name: 'Remove needs labels on issue closing'
+ runs-on: ubuntu-latest
+ steps:
+ - name: 'Removes needs labels on issue close'
+ uses: actions-ecosystem/action-remove-labels@v1
+ with:
+ labels: |
+ needs PR
+ needs spike
+ needs community feedback
+ needs proposal
diff --git a/.github/workflows/test-plan-item-validator.yml b/.github/workflows/test-plan-item-validator.yml
index 43713049f5e8..17f1740345f2 100644
--- a/.github/workflows/test-plan-item-validator.yml
+++ b/.github/workflows/test-plan-item-validator.yml
@@ -12,13 +12,15 @@ jobs:
if: contains(github.event.issue.labels.*.name, 'testplan-item') || contains(github.event.issue.labels.*.name, 'invalid-testplan-item')
steps:
- name: Checkout Actions
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
repository: 'microsoft/vscode-github-triage-actions'
path: ./actions
ref: stable
+
- name: Install Actions
run: npm install --production --prefix ./actions
+
- name: Run Test Plan Item Validator
uses: ./actions/test-plan-item-validator
with:
diff --git a/.github/workflows/triage-info-needed.yml b/.github/workflows/triage-info-needed.yml
new file mode 100644
index 000000000000..1ded54ea3f59
--- /dev/null
+++ b/.github/workflows/triage-info-needed.yml
@@ -0,0 +1,54 @@
+name: Triage "info-needed" label
+
+on:
+ issue_comment:
+ types: [created]
+
+env:
+ TRIAGERS: '["karrtikr","karthiknadig","paulacamargo25","eleanorjboyd", "brettcannon","anthonykim1"]'
+
+permissions:
+ issues: write
+
+jobs:
+ add_label:
+ runs-on: ubuntu-latest
+ if: contains(github.event.issue.labels.*.name, 'triage-needed') && !contains(github.event.issue.labels.*.name, 'info-needed')
+ steps:
+ - name: Checkout Actions
+ uses: actions/checkout@v4
+ with:
+ repository: 'microsoft/vscode-github-triage-actions'
+ ref: stable
+ path: ./actions
+
+ - name: Install Actions
+ run: npm install --production --prefix ./actions
+
+ - name: Add "info-needed" label
+ uses: ./actions/python-triage-info-needed
+ with:
+ triagers: ${{ env.TRIAGERS }}
+ action: 'add'
+ token: ${{secrets.GITHUB_TOKEN}}
+
+ remove_label:
+ if: contains(github.event.issue.labels.*.name, 'info-needed') && contains(github.event.issue.labels.*.name, 'triage-needed')
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Actions
+ uses: actions/checkout@v4
+ with:
+ repository: 'microsoft/vscode-github-triage-actions'
+ ref: stable
+ path: ./actions
+
+ - name: Install Actions
+ run: npm install --production --prefix ./actions
+
+ - name: Remove "info-needed" label
+ uses: ./actions/python-triage-info-needed
+ with:
+ triagers: ${{ env.TRIAGERS }}
+ action: 'remove'
+ token: ${{secrets.GITHUB_TOKEN}}
diff --git a/.gitignore b/.gitignore
index 0fc4c34d7127..192e293bb50a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,7 @@ log.log
**/node_modules
*.pyc
*.vsix
+envVars.txt
**/.vscode/.ropeproject/**
**/testFiles/**/.cache/**
*.noseids
@@ -22,7 +23,8 @@ cucumber-report.json
**/.venv*/
port.txt
precommit.hook
-pythonFiles/lib/**
+python_files/lib/**
+python_files/get-pip.py
debug_coverage*/**
languageServer/**
languageServer.*/**
@@ -46,3 +48,5 @@ dist/**
*.xlf
package.nls.*.json
l10n/
+native_locator/target/**
+native_locator/Cargo.lock
diff --git a/.nvmrc b/.nvmrc
index ca4a60d1b111..860cc5000ae6 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-v14.18.2
+v18.17.1
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
index 045d61d31678..15e6aada1d50 100644
--- a/.vscode/extensions.json
+++ b/.vscode/extensions.json
@@ -2,6 +2,7 @@
// See https://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
+ "charliermarsh.ruff",
"editorconfig.editorconfig",
"esbenp.prettier-vscode",
"dbaeumer.vscode-eslint",
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 7b654703dbd8..4dc107853fc6 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -8,7 +8,6 @@
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": ["--extensionDevelopmentPath=${workspaceFolder}"],
- "stopOnEntry": false,
"smartStep": true,
"sourceMaps": true,
"outFiles": ["${workspaceFolder}/out/**/*", "!${workspaceFolder}/**/node_modules**/*"],
@@ -31,19 +30,11 @@
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": ["--extensionDevelopmentPath=${workspaceFolder}", "${workspaceFolder}/data"],
- "stopOnEntry": false,
"smartStep": true,
"sourceMaps": true,
"outFiles": ["${workspaceFolder}/out/**/*", "!${workspaceFolder}/**/node_modules**/*"],
"preLaunchTask": "Compile"
},
- {
- "name": "Python: Current File",
- "type": "python",
- "request": "launch",
- "program": "${file}",
- "console": "integratedTerminal"
- },
{
"name": "Tests (Debugger, VS Code, *.test.ts)",
"type": "extensionHost",
@@ -55,7 +46,6 @@
"--extensionDevelopmentPath=${workspaceFolder}",
"--extensionTestsPath=${workspaceFolder}/out/test"
],
- "stopOnEntry": false,
"sourceMaps": true,
"smartStep": true,
"outFiles": ["${workspaceFolder}/out/**/*", "!${workspaceFolder}/**/node_modules**/*"],
@@ -83,7 +73,6 @@
"VSC_PYTHON_SMOKE_TEST": "1",
"TEST_FILES_SUFFIX": "smoke.test"
},
- "stopOnEntry": false,
"sourceMaps": true,
"outFiles": ["${workspaceFolder}/out/**/*.js", "!${workspaceFolder}/**/node_modules**/*"],
"preLaunchTask": "Compile",
@@ -103,7 +92,6 @@
"env": {
"VSC_PYTHON_CI_TEST_GREP": "" // Modify this to run a subset of the single workspace tests
},
- "stopOnEntry": false,
"sourceMaps": true,
"outFiles": ["${workspaceFolder}/out/**/*.js", "!${workspaceFolder}/**/node_modules**/*"],
"preLaunchTask": "Compile",
@@ -123,7 +111,6 @@
"env": {
"VSC_PYTHON_CI_TEST_GREP": "Language Server:"
},
- "stopOnEntry": false,
"sourceMaps": true,
"outFiles": ["${workspaceFolder}/out/**/*.js", "!${workspaceFolder}/**/node_modules**/*"],
"preLaunchTask": "preTestJediLSP",
@@ -140,7 +127,6 @@
"--extensionDevelopmentPath=${workspaceFolder}",
"--extensionTestsPath=${workspaceFolder}/out/test"
],
- "stopOnEntry": false,
"sourceMaps": true,
"smartStep": true,
"outFiles": ["${workspaceFolder}/out/**/*", "!${workspaceFolder}/**/node_modules**/*"],
@@ -236,11 +222,11 @@
"program": "${file}",
"request": "launch",
"skipFiles": ["/**"],
- "type": "pwa-node"
+ "type": "node"
},
{
"name": "Python: Current File",
- "type": "python",
+ "type": "debugpy",
"justMyCode": true,
"request": "launch",
"program": "${file}",
@@ -248,17 +234,26 @@
"cwd": "${workspaceFolder}"
},
{
- "name": "Listen",
- "type": "python",
+ "name": "Python: Attach Listen",
+ "type": "debugpy",
"request": "attach",
"listen": { "host": "localhost", "port": 5678 },
"justMyCode": true
+ },
+ {
+ "name": "Debug pytest plugin tests",
+
+ "type": "debugpy",
+ "request": "launch",
+ "module": "pytest",
+ "args": ["${workspaceFolder}/python_files/tests/pytestadapter"],
+ "justMyCode": true
}
],
"compounds": [
{
- "name": "Debug Test Discovery",
- "configurations": ["Listen", "Extension"]
+ "name": "Debug Python and Extension",
+ "configurations": ["Python: Attach Listen", "Extension"]
}
]
}
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 174a850c901e..76501f1f6d1c 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -25,8 +25,14 @@
"[python]": {
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
- "source.organizeImports": true
- }
+ "source.fixAll.eslint": "explicit",
+ "source.organizeImports.isort": "explicit"
+ },
+ "editor.defaultFormatter": "charliermarsh.ruff",
+ },
+ "[rust]": {
+ "editor.defaultFormatter": "rust-lang.rust-analyzer",
+ "editor.formatOnSave": true
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
@@ -45,25 +51,28 @@
"editor.formatOnSave": true
},
"typescript.tsdk": "./node_modules/typescript/lib", // we want to use the TS server from our node_modules folder to control its version
- "python.linting.enabled": false,
- "python.formatting.provider": "black",
- "python.sortImports.args": ["--profile", "black"],
"typescript.preferences.quoteStyle": "single",
"javascript.preferences.quoteStyle": "single",
- "typescriptHero.imports.stringQuoteStyle": "'",
"prettier.printWidth": 120,
"prettier.singleQuote": true,
"editor.codeActionsOnSave": {
- "source.fixAll.eslint": true
+ "source.fixAll.eslint": "explicit"
},
"python.languageServer": "Default",
- "python.linting.pylintEnabled": false,
- "python.linting.flake8Enabled": true,
- "cucumberautocomplete.skipDocStringsFormat": true,
- "python.linting.flake8Args": [
- // Match what black does.
- "--max-line-length=88"
- ],
"typescript.preferences.importModuleSpecifier": "relative",
- "debug.javascript.usePreview": false
+ // Branch name suggestion.
+ "git.branchProtectionPrompt": "alwaysCommitToNewBranch",
+ "git.branchRandomName.enable": true,
+ "git.branchProtection": ["main", "release/*"],
+ "git.pullBeforeCheckout": true,
+ // Open merge editor for resolving conflicts.
+ "git.mergeEditor": true,
+ "python.testing.pytestArgs": [
+ "python_files/tests"
+ ],
+ "python.testing.unittestEnabled": false,
+ "python.testing.pytestEnabled": true,
+ "rust-analyzer.linkedProjects": [
+ ".\\native_locator\\Cargo.toml"
+ ]
}
diff --git a/.vscodeignore b/.vscodeignore
index 6788f9b6d8e1..78028d097455 100644
--- a/.vscodeignore
+++ b/.vscodeignore
@@ -25,6 +25,7 @@ vscode-python-signing.*
.github/**
.mocha-reporter/**
.nvm/**
+.nox/**
.nyc_output
.prettierrc.js
.sonarcloud.properties
@@ -51,19 +52,23 @@ obj/**
out/**/*.stats.json
out/client/**/*.analyzer.html
out/coverconfig.json
-out/pythonFiles/**
+out/python_files/**
out/src/**
out/test/**
out/testMultiRootWkspc/**
precommit.hook
-pythonFiles/**/*.pyc
-pythonFiles/lib/**/*.egg-info/**
-pythonFiles/lib/python/bin/**
-pythonFiles/jedilsp_requirements/**
-pythonFiles/tests/**
+python_files/**/*.pyc
+python_files/lib/**/*.egg-info/**
+python_files/lib/python/bin/**
+python_files/tests/**
scripts/**
src/**
test/**
tmp/**
typings/**
types/**
+native_locator/src/**
+native_locator/tests/**
+native_locator/bin/**
+native_locator/target/**
+native_locator/Cargo.*
diff --git a/README.md b/README.md
index cd99d54bd221..0db0ab73a55b 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Python extension for Visual Studio Code
-A [Visual Studio Code](https://code.visualstudio.com/) [extension](https://marketplace.visualstudio.com/VSCode) with rich support for the [Python language](https://www.python.org/) (for all [actively supported versions](https://devguide.python.org/#status-of-python-branches) of the language: >=3.7), including features such as IntelliSense (Pylance), linting, debugging, code navigation, code formatting, refactoring, variable explorer, test explorer, and more!
+A [Visual Studio Code](https://code.visualstudio.com/) [extension](https://marketplace.visualstudio.com/VSCode) with rich support for the [Python language](https://www.python.org/) (for all [actively supported Python versions](https://devguide.python.org/versions/#supported-versions)), providing access points for extensions to seamlessly integrate and offer support for IntelliSense (Pylance), debugging (Python Debugger), formatting, linting, code navigation, refactoring, variable explorer, test explorer, and more!
## Support for [vscode.dev](https://vscode.dev/)
@@ -9,9 +9,21 @@ The Python extension does offer [some support](https://github.com/microsoft/vsco
## Installed extensions
-The Python extension will automatically install the [Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance) and [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter) extensions to give you the best experience when working with Python files and Jupyter notebooks. However, Pylance is an optional dependency, meaning the Python extension will remain fully functional if it fails to be installed. You can also [uninstall](https://code.visualstudio.com/docs/editor/extension-marketplace#_uninstall-an-extension) it at the expense of some features if you’re using a different language server.
+The Python extension will automatically install the following extensions by default to provide the best Python development experience in VS Code:
-Extensions installed through the marketplace are subject to the [Marketplace Terms of Use](https://cdn.vsassets.io/v/M146_20190123.39/_content/Microsoft-Visual-Studio-Marketplace-Terms-of-Use.pdf).
+- [Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance) - to provide performant Python language support
+- [Python Debugger](https://marketplace.visualstudio.com/items?itemName=ms-python.debugpy) - to provide a seamless debug experience with debugpy
+
+These extensions are optional dependencies, meaning the Python extension will remain fully functional if they fail to be installed. Any or all of these extensions can be [disabled](https://code.visualstudio.com/docs/editor/extension-marketplace#_disable-an-extension) or [uninstalled](https://code.visualstudio.com/docs/editor/extension-marketplace#_uninstall-an-extension) at the expense of some features. Extensions installed through the marketplace are subject to the [Marketplace Terms of Use](https://cdn.vsassets.io/v/M146_20190123.39/_content/Microsoft-Visual-Studio-Marketplace-Terms-of-Use.pdf).
+
+## Extensibility
+
+The Python extension provides pluggable access points for extensions that extend various feature areas to further improve your Python development experience. These extensions are all optional and depend on your project configuration and preferences.
+
+- [Python formatters](https://code.visualstudio.com/docs/python/formatting#_choose-a-formatter)
+- [Python linters](https://code.visualstudio.com/docs/python/linting#_choose-a-linter)
+
+If you encounter issues with any of the listed extensions, please file an issue in its corresponding repo.
## Quick start
@@ -37,7 +49,9 @@ Extensions installed through the marketplace are subject to the [Marketplace Ter
## Jupyter Notebook quick start
-The Python extension and the [Jupyter extension](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter) work together to give you a great Notebook experience in VS Code.
+The Python extension offers support for Jupyter notebooks via the [Jupyter extension](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter) to provide you a great Python notebook experience in VS Code.
+
+- Install the [Jupyter extension](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter).
- Open or create a Jupyter Notebook file (.ipynb) and start coding in our Notebook Editor!
@@ -58,8 +72,6 @@ Open the Command Palette (Command+Shift+P on macOS and Ctrl+Shift+P on Windows/L
| `Python: Select Interpreter` | Switch between Python interpreters, versions, and environments. |
| `Python: Start REPL` | Start an interactive Python REPL using the selected interpreter in the VS Code terminal. |
| `Python: Run Python File in Terminal` | Runs the active Python file in the VS Code terminal. You can also run a Python file by right-clicking on the file and selecting `Run Python File in Terminal`. |
-| `Python: Select Linter` | Switch from Pylint to Flake8 or other supported linters. |
-| `Format Document` | Formats code using the provided [formatter](https://code.visualstudio.com/docs/python/editing#_formatting) in the `settings.json` file. |
| `Python: Configure Tests` | Select a test framework and configure it to display the Test Explorer. |
To see all available Python commands, open the Command Palette and type `Python`. For Jupyter extension commands, just type `Jupyter`.
@@ -70,17 +82,12 @@ Learn more about the rich features of the Python extension:
- [IntelliSense](https://code.visualstudio.com/docs/python/editing#_autocomplete-and-intellisense): Edit your code with auto-completion, code navigation, syntax checking and more
- [Linting](https://code.visualstudio.com/docs/python/linting): Get additional code analysis with Pylint, Flake8 and more
-- [Code formatting](https://code.visualstudio.com/docs/python/editing#_formatting): Format your code with black, autopep or yapf
-
+- [Code formatting](https://code.visualstudio.com/docs/python/formatting): Format your code with black, autopep or yapf
- [Debugging](https://code.visualstudio.com/docs/python/debugging): Debug your Python scripts, web apps, remote or multi-threaded processes
-
- [Testing](https://code.visualstudio.com/docs/python/unit-testing): Run and debug tests through the Test Explorer with unittest or pytest.
-
- [Jupyter Notebooks](https://code.visualstudio.com/docs/python/jupyter-support): Create and edit Jupyter Notebooks, add and run code cells, render plots, visualize variables through the variable explorer, visualize dataframes with the data viewer, and more
-
- [Environments](https://code.visualstudio.com/docs/python/environments): Automatically activate and switch between virtualenv, venv, pipenv, conda and pyenv environments
-
-- [Refactoring](https://code.visualstudio.com/docs/python/editing#_refactoring): Restructure your Python code with variable extraction and method extraction. Additionally, there is componentized support to enable additional refactoring, such as import sorting, through extensions including [isort](https://marketplace.visualstudio.com/items?itemName=ms-python.isort) and [Ruff](https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff).
+- [Refactoring](https://code.visualstudio.com/docs/python/editing#_refactoring): Restructure your Python code with variable extraction and method extraction. Additionally, there is componentized support to enable additional refactoring, such as import sorting, through extensions including [isort](https://marketplace.visualstudio.com/items?itemName=ms-python.isort) and [Ruff](https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff).
@@ -90,13 +97,13 @@ The extension is available in multiple languages: `de`, `en`, `es`, `fa`, `fr`,
## Questions, issues, feature requests, and contributions
-- If you have a question about how to accomplish something with the extension, please [ask on Stack Overflow](https://stackoverflow.com/questions/tagged/visual-studio-code+python)
-- If you come across a problem with the extension, please [file an issue](https://github.com/microsoft/vscode-python)
-- Contributions are always welcome! Please see our [contributing guide](https://github.com/Microsoft/vscode-python/blob/main/CONTRIBUTING.md) for more details
+- If you have a question about how to accomplish something with the extension, please [ask on our Discussions page](https://github.com/microsoft/vscode-python/discussions/categories/q-a).
+- If you come across a problem with the extension, please [file an issue](https://github.com/microsoft/vscode-python).
+- Contributions are always welcome! Please see our [contributing guide](https://github.com/Microsoft/vscode-python/blob/main/CONTRIBUTING.md) for more details.
- Any and all feedback is appreciated and welcome!
- - If someone has already [filed an issue](https://github.com/Microsoft/vscode-python) that encompasses your feedback, please leave a 👍/👎 reaction on the issue
- - Otherwise please start a [new discussion](https://github.com/microsoft/vscode-python/discussions/categories/ideas)
-- If you're interested in the development of the extension, you can read about our [development process](https://github.com/Microsoft/vscode-python/blob/main/CONTRIBUTING.md#development-process)
+ - If someone has already [filed an issue](https://github.com/Microsoft/vscode-python) that encompasses your feedback, please leave a 👍/👎 reaction on the issue.
+ - Otherwise please start a [new discussion](https://github.com/microsoft/vscode-python/discussions/categories/ideas).
+- If you're interested in the development of the extension, you can read about our [development process](https://github.com/Microsoft/vscode-python/blob/main/CONTRIBUTING.md#development-process).
## Data and telemetry
diff --git a/ThirdPartyNotices-Repository.txt b/ThirdPartyNotices-Repository.txt
index c8854a208e5a..9e7e822af1bb 100644
--- a/ThirdPartyNotices-Repository.txt
+++ b/ThirdPartyNotices-Repository.txt
@@ -6,18 +6,17 @@ Microsoft Python extension for Visual Studio Code incorporates third party mater
1. Go for Visual Studio Code (https://github.com/Microsoft/vscode-go)
2. Files from the Python Project (https://www.python.org/)
-3. Google Diff Match and Patch (https://github.com/GerHobbelt/google-diff-match-patch)
-4. omnisharp-vscode (https://github.com/OmniSharp/omnisharp-vscode)
-5. PTVS (https://github.com/Microsoft/PTVS)
-6. Python documentation (https://docs.python.org/)
-7. python-functools32 (https://github.com/MiCHiLU/python-functools32/blob/master/functools32/functools32.py)
-8. pythonVSCode (https://github.com/DonJayamanne/pythonVSCode)
-9. Sphinx (http://sphinx-doc.org/)
-10. nteract (https://github.com/nteract/nteract)
-11. less-plugin-inline-urls (https://github.com/less/less-plugin-inline-urls/)
-12. vscode-cpptools (https://github.com/microsoft/vscode-cpptools)
-13. mocha (https://github.com/mochajs/mocha)
-14. get-pip (https://github.com/pypa/get-pip)
+3. omnisharp-vscode (https://github.com/OmniSharp/omnisharp-vscode)
+4. PTVS (https://github.com/Microsoft/PTVS)
+5. Python documentation (https://docs.python.org/)
+6. python-functools32 (https://github.com/MiCHiLU/python-functools32/blob/master/functools32/functools32.py)
+7. pythonVSCode (https://github.com/DonJayamanne/pythonVSCode)
+8. Sphinx (http://sphinx-doc.org/)
+9. nteract (https://github.com/nteract/nteract)
+10. less-plugin-inline-urls (https://github.com/less/less-plugin-inline-urls/)
+11. vscode-cpptools (https://github.com/microsoft/vscode-cpptools)
+12. mocha (https://github.com/mochajs/mocha)
+13. get-pip (https://github.com/pypa/get-pip)
%%
Go for Visual Studio Code NOTICES, INFORMATION, AND LICENSE BEGIN HERE
@@ -244,25 +243,6 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
=========================================
END OF Files from the Python Project NOTICES, INFORMATION, AND LICENSE
-%% Google Diff Match and Patch NOTICES, INFORMATION, AND LICENSE BEGIN HERE
-=========================================
- * Copyright 2006 Google Inc.
- * http://code.google.com/p/google-diff-match-patch/
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-=========================================
-END OF Google Diff Match and Patch NOTICES, INFORMATION, AND LICENSE
-
%% omnisharp-vscode NOTICES, INFORMATION, AND LICENSE BEGIN HERE
=========================================
Copyright (c) Microsoft Corporation
diff --git a/build/azure-pipeline.pre-release.yml b/build/azure-pipeline.pre-release.yml
index a5b95c91af9a..d87f482d320c 100644
--- a/build/azure-pipeline.pre-release.yml
+++ b/build/azure-pipeline.pre-release.yml
@@ -18,19 +18,27 @@ resources:
ref: main
endpoint: Monaco
+parameters:
+ - name: publishExtension
+ displayName: 🚀 Publish Extension
+ type: boolean
+ default: false
+
extends:
template: azure-pipelines/extension/pre-release.yml@templates
parameters:
+ publishExtension: ${{ parameters.publishExtension }}
+ ghCreateTag: false
l10nSourcePaths: ./src/client
buildSteps:
- task: NodeTool@0
inputs:
- versionSpec: '14.18.2'
+ versionSpec: '18.17.1'
displayName: Select Node version
- task: UsePythonVersion@0
inputs:
- versionSpec: '3.7'
+ versionSpec: '3.8'
addToPath: true
architecture: 'x64'
displayName: Select Python version
@@ -41,28 +49,31 @@ extends:
- script: python -m pip install -U pip
displayName: Upgrade pip
- - script: python -m pip install wheel
- displayName: Install wheel
-
- - script: |
- python -m pip --disable-pip-version-check install -r build/debugger-install-requirements.txt
- python ./pythonFiles/install_debugpy.py
- displayName: Install debugpy
-
- - script: |
- python -m pip install --no-deps --require-hashes --only-binary :all: -t ./pythonFiles/lib/python --implementation py -r ./requirements.txt
- displayName: Install Python dependencies
+ - script: python -m pip install wheel nox
+ displayName: Install wheel and nox
- script: |
- python -m pip install --no-deps --require-hashes --only-binary :all: -t ./pythonFiles/lib/jedilsp --implementation py --platform any --abi none -r ./pythonFiles/jedilsp_requirements/requirements.txt
- displayName: Install Jedi Language Server
+ nox --session install_python_libs
+ displayName: Install Jedi, get-pip, etc
- script: |
python ./build/update_ext_version.py --for-publishing
displayName: Update build number
+ - script: |
+ python ./build/update_package_file.py
+ displayName: Update telemetry in package.json
+
- script: npm run addExtensionPackDependencies
displayName: Update optional extension dependencies
- script: gulp prePublishBundle
displayName: Build
+
+ - script: python -c "import shutil; shutil.rmtree('.nox', ignore_errors=True)"
+ displayName: Clean up Nox
+ tsa:
+ config:
+ areaPath: 'Visual Studio Code Python Extensions'
+ serviceTreeID: '6e6194bc-7baa-4486-86d0-9f5419626d46'
+ enabled: true
diff --git a/build/azure-pipeline.stable.yml b/build/azure-pipeline.stable.yml
index 76e1e0061ebf..74ec4c4df0db 100644
--- a/build/azure-pipeline.stable.yml
+++ b/build/azure-pipeline.stable.yml
@@ -28,12 +28,12 @@ extends:
buildSteps:
- task: NodeTool@0
inputs:
- versionSpec: '14.18.2'
+ versionSpec: '18.17.1'
displayName: Select Node version
- task: UsePythonVersion@0
inputs:
- versionSpec: '3.7'
+ versionSpec: '3.8'
addToPath: true
architecture: 'x64'
displayName: Select Python version
@@ -44,28 +44,32 @@ extends:
- script: python -m pip install -U pip
displayName: Upgrade pip
- - script: python -m pip install wheel
- displayName: Install wheel
+ - script: python -m pip install wheel nox
+ displayName: Install wheel and nox
- script: |
- python -m pip --disable-pip-version-check install -r build/debugger-install-requirements.txt
- python ./pythonFiles/install_debugpy.py
- displayName: Install debugpy
-
- - script: |
- python -m pip install --no-deps --require-hashes --only-binary :all: -t ./pythonFiles/lib/python --implementation py -r ./requirements.txt
- displayName: Install Python dependencies
-
- - script: |
- python -m pip install --no-deps --require-hashes --only-binary :all: -t ./pythonFiles/lib/jedilsp --implementation py --platform any --abi none -r ./pythonFiles/jedilsp_requirements/requirements.txt
- displayName: Install Jedi Language Server
+ nox --session install_python_libs
+ displayName: Install Jedi, get-pip, etc
- script: |
python ./build/update_ext_version.py --release --for-publishing
displayName: Update build number
+ - script: |
+ python ./build/update_package_file.py
+ displayName: Update telemetry in package.json
+
- script: npm run addExtensionPackDependencies
displayName: Update optional extension dependencies
- script: gulp prePublishBundle
displayName: Build
+
+ - script: python -c "import shutil; shutil.rmtree('.nox', ignore_errors=True)"
+ displayName: Clean up Nox
+ tsa:
+ config:
+ areaPath: 'Visual Studio Code Python Extensions'
+ serviceTreeID: '6e6194bc-7baa-4486-86d0-9f5419626d46'
+ enabled: true
+ apiScanSoftwareVersion: '2024'
diff --git a/build/azure-pipelines/pipeline.yml b/build/azure-pipelines/pipeline.yml
new file mode 100644
index 000000000000..adb2fa5d1c30
--- /dev/null
+++ b/build/azure-pipelines/pipeline.yml
@@ -0,0 +1,58 @@
+###############################################################################################
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+###############################################################################################
+name: $(Date:yyyyMMdd)$(Rev:.r)
+
+trigger: none
+
+pr: none
+
+resources:
+ repositories:
+ - repository: templates
+ type: github
+ name: microsoft/vscode-engineering
+ ref: main
+ endpoint: Monaco
+
+parameters:
+ - name: quality
+ displayName: Quality
+ type: string
+ default: latest
+ values:
+ - latest
+ - next
+ - name: publishPythonApi
+ displayName: 🚀 Publish pythonExtensionApi
+ type: boolean
+ default: false
+
+extends:
+ template: azure-pipelines/npm-package/pipeline.yml@templates
+ parameters:
+ npmPackages:
+ - name: pythonExtensionApi
+ testPlatforms:
+ - name: Linux
+ nodeVersions:
+ - 18.17.1
+ - name: MacOS
+ nodeVersions:
+ - 18.17.1
+ - name: Windows
+ nodeVersions:
+ - 18.17.1
+ testSteps:
+ - template: /build/azure-pipelines/templates/test-steps.yml@self
+ parameters:
+ package: pythonExtensionApi
+ buildSteps:
+ - template: /build/azure-pipelines/templates/pack-steps.yml@self
+ parameters:
+ package: pythonExtensionApi
+ ghTagPrefix: release/pythonExtensionApi/
+ tag: ${{ parameters.quality }}
+ publishPackage: ${{ parameters.publishPythonApi }}
+ workingDirectory: $(Build.SourcesDirectory)/pythonExtensionApi
diff --git a/build/azure-pipelines/templates/pack-steps.yml b/build/azure-pipelines/templates/pack-steps.yml
new file mode 100644
index 000000000000..97037efb59ba
--- /dev/null
+++ b/build/azure-pipelines/templates/pack-steps.yml
@@ -0,0 +1,14 @@
+###############################################################################################
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+###############################################################################################
+parameters:
+- name: package
+
+steps:
+ - script: npm install --root-only
+ workingDirectory: $(Build.SourcesDirectory)
+ displayName: Install root dependencies
+ - script: npm install
+ workingDirectory: $(Build.SourcesDirectory)/${{ parameters.package }}
+ displayName: Install package dependencies
diff --git a/build/azure-pipelines/templates/test-steps.yml b/build/azure-pipelines/templates/test-steps.yml
new file mode 100644
index 000000000000..15eb3db6384d
--- /dev/null
+++ b/build/azure-pipelines/templates/test-steps.yml
@@ -0,0 +1,23 @@
+###############################################################################################
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+###############################################################################################
+parameters:
+- name: package
+ type: string
+- name: script
+ type: string
+ default: 'all:publish'
+
+steps:
+ - script: npm install --root-only
+ workingDirectory: $(Build.SourcesDirectory)
+ displayName: Install root dependencies
+ - bash: |
+ /usr/bin/Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
+ echo ">>> Started xvfb"
+ displayName: Start xvfb
+ condition: eq(variables['Agent.OS'], 'Linux')
+ - script: npm run ${{ parameters.script }}
+ workingDirectory: $(Build.SourcesDirectory)/${{ parameters.package }}
+ displayName: Verify package
diff --git a/build/build-install-requirements.txt b/build/build-install-requirements.txt
new file mode 100644
index 000000000000..8baaa59ded67
--- /dev/null
+++ b/build/build-install-requirements.txt
@@ -0,0 +1,2 @@
+# Requirements needed to run install_debugpy.py and download_get_pip.py
+packaging
diff --git a/build/ci/conda_env_1.yml b/build/ci/conda_env_1.yml
index df5c917dcf4f..e9d08d0820a4 100644
--- a/build/ci/conda_env_1.yml
+++ b/build/ci/conda_env_1.yml
@@ -1,4 +1,4 @@
name: conda_env_1
dependencies:
- - python=3.7
+ - python=3.8
- pip
diff --git a/build/debugger-install-requirements.txt b/build/debugger-install-requirements.txt
deleted file mode 100644
index 6ee0765db4b3..000000000000
--- a/build/debugger-install-requirements.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-# Requirements needed to run install_debugpy.py
-packaging
diff --git a/build/existingFiles.json b/build/existingFiles.json
index 0d7e0c3c41cc..48ab84ff565d 100644
--- a/build/existingFiles.json
+++ b/build/existingFiles.json
@@ -379,6 +379,7 @@
"src/test/common/socketStream.test.ts",
"src/test/common/terminals/activation.bash.unit.test.ts",
"src/test/common/terminals/activation.commandPrompt.unit.test.ts",
+ "src/test/common/terminals/activation.nushell.unit.test.ts",
"src/test/common/terminals/activation.conda.unit.test.ts",
"src/test/common/terminals/activation.unit.test.ts",
"src/test/common/terminals/activator/base.unit.test.ts",
@@ -499,7 +500,7 @@
"src/test/providers/shebangCodeLenseProvider.test.ts",
"src/test/providers/symbolProvider.unit.test.ts",
"src/test/providers/terminal.unit.test.ts",
- "src/test/pythonFiles/formatting/dummy.ts",
+ "src/test/python_files/formatting/dummy.ts",
"src/test/refactor/extension.refactor.extract.method.test.ts",
"src/test/refactor/extension.refactor.extract.var.test.ts",
"src/test/refactor/rename.test.ts",
diff --git a/build/fail.js b/build/fail.js
new file mode 100644
index 000000000000..2adc808d8da9
--- /dev/null
+++ b/build/fail.js
@@ -0,0 +1,6 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+process.exitCode = 1;
diff --git a/build/license-header.txt b/build/license-header.txt
index 2a8122642cb2..2970b03d7a1c 100644
--- a/build/license-header.txt
+++ b/build/license-header.txt
@@ -1,7 +1,7 @@
PLEASE NOTE: This is the license for the Python extension for Visual Studio Code. The Python extension automatically installs other extensions as optional dependencies, which can be uninstalled at any time. These extensions have separate licenses:
- - The Jupyter extension is released under an MIT License:
- https://marketplace.visualstudio.com/items/ms-toolsai.jupyter/license
+ - The Python Debugger extension is released under an MIT License:
+ https://marketplace.visualstudio.com/items/ms-python.debugpy/license
- The Pylance extension is only available in binary form and is released under a Microsoft proprietary license, the terms of which are available here:
https://marketplace.visualstudio.com/items/ms-python.vscode-pylance/license
diff --git a/build/smoke-test-requirements.txt b/build/smoke-test-requirements.txt
deleted file mode 100644
index 7d5ac3da00d9..000000000000
--- a/build/smoke-test-requirements.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-# List of requirements for smoke tests (they will attempt to run a kernel)
-jupyter
-numpy
-matplotlib
-pandas
-livelossplot
\ No newline at end of file
diff --git a/build/test-requirements.txt b/build/test-requirements.txt
index c732b3bcb228..6457f988d320 100644
--- a/build/test-requirements.txt
+++ b/build/test-requirements.txt
@@ -1,13 +1,8 @@
# pin setoptconf to prevent issue with 'use_2to3'
setoptconf==0.3.0
-# Install flake8 first, as both flake8 and autopep8 require pycodestyle,
-# but flake8 has a tighter pinning.
flake8
-autopep8
bandit
-black
-yapf
pylint
pycodestyle
pydocstyle
@@ -17,7 +12,8 @@ flask
fastapi
uvicorn
django
-isort
+testresources
+testscenarios
# Integrated TensorBoard tests
tensorboard
@@ -25,3 +21,6 @@ torch-tb-profiler
# extension build tests
freezegun
+
+# testing custom pytest plugin require the use of named pipes
+namedpipe; platform_system == "Windows"
diff --git a/build/update_ext_version.py b/build/update_ext_version.py
index bfd7ac1e9996..6ac2b15bbf0f 100644
--- a/build/update_ext_version.py
+++ b/build/update_ext_version.py
@@ -70,10 +70,23 @@ def main(package_json: pathlib.Path, argv: Sequence[str]) -> None:
major, minor, micro, suffix = parse_version(package["version"])
current_year = datetime.datetime.now().year
- if int(major) != current_year:
+ current_month = datetime.datetime.now().month
+ int_major = int(major)
+ valid_major = (
+ int_major
+ == current_year # Between JAN-DEC major version should be current year
+ or (
+ int_major == current_year - 1 and current_month == 1
+ ) # After new years the check is relaxed for JAN to allow releases of previous year DEC
+ or (
+ int_major == current_year + 1 and current_month == 12
+ ) # Before new years the check is relaxed for DEC to allow pre-releases of next year JAN
+ )
+ if not valid_major:
raise ValueError(
f"Major version [{major}] must be the current year [{current_year}].",
f"If changing major version after new year's, change to {current_year}.1.0",
+ f"Minor version must be updated based on release or pre-release channel.",
)
if args.release and not is_even(minor):
diff --git a/build/update_package_file.py b/build/update_package_file.py
new file mode 100644
index 000000000000..f82587ced846
--- /dev/null
+++ b/build/update_package_file.py
@@ -0,0 +1,22 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import json
+import pathlib
+
+EXT_ROOT = pathlib.Path(__file__).parent.parent
+PACKAGE_JSON_PATH = EXT_ROOT / "package.json"
+
+
+def main(package_json: pathlib.Path) -> None:
+ package = json.loads(package_json.read_text(encoding="utf-8"))
+ package["enableTelemetry"] = True
+
+ # Overwrite package.json with new data add a new-line at the end of the file.
+ package_json.write_text(
+ json.dumps(package, indent=4, ensure_ascii=False) + "\n", encoding="utf-8"
+ )
+
+
+if __name__ == "__main__":
+ main(PACKAGE_JSON_PATH)
diff --git a/build/webpack/common.js b/build/webpack/common.js
index 5ce66883bb41..c7f7460adf86 100644
--- a/build/webpack/common.js
+++ b/build/webpack/common.js
@@ -20,10 +20,7 @@ exports.nodeModulesToExternalize = [
'unicode/category/Mc',
'unicode/category/Nd',
'unicode/category/Pc',
- 'request',
- 'request-progress',
'source-map-support',
- 'diff-match-patch',
'sudo-prompt',
'node-stream-zip',
'xml2js',
diff --git a/build/webpack/webpack.extension.config.js b/build/webpack/webpack.extension.config.js
index b1b3922126d6..082ce52a4d32 100644
--- a/build/webpack/webpack.extension.config.js
+++ b/build/webpack/webpack.extension.config.js
@@ -19,6 +19,10 @@ const config = {
target: 'node',
entry: {
extension: './src/client/extension.ts',
+ 'shellExec.worker': './src/client/common/process/worker/shellExec.worker.ts',
+ 'plainExec.worker': './src/client/common/process/worker/plainExec.worker.ts',
+ 'registryKeys.worker': 'src/client/pythonEnvironments/common/registryKeys.worker.ts',
+ 'registryValues.worker': 'src/client/pythonEnvironments/common/registryValues.worker.ts',
},
devtool: 'source-map',
node: {
@@ -51,6 +55,10 @@ const config = {
},
],
},
+ {
+ test: /\.worker\.js$/,
+ use: { loader: 'worker-loader' },
+ },
],
},
externals: [
@@ -61,11 +69,15 @@ const config = {
// See: https://github.com/microsoft/vscode-extension-telemetry/issues/41#issuecomment-598852991
'applicationinsights-native-metrics',
'@opentelemetry/tracing',
+ '@azure/opentelemetry-instrumentation-azure-sdk',
+ '@opentelemetry/instrumentation',
+ '@azure/functions-core',
],
plugins: [...common.getDefaultPlugins('extension')],
resolve: {
extensions: ['.ts', '.js'],
plugins: [new tsconfig_paths_webpack_plugin.TsconfigPathsPlugin({ configFile: configFileName })],
+ conditionNames: ['import', 'require', 'node'],
},
output: {
filename: '[name].js',
diff --git a/data/.vscode/settings.json b/data/.vscode/settings.json
deleted file mode 100644
index 6f329d0777a4..000000000000
--- a/data/.vscode/settings.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "python.defaultInterpreterPath": "/usr/bin/python3"
-}
diff --git a/data/test.py b/data/test.py
deleted file mode 100644
index 3b316dc1e8d1..000000000000
--- a/data/test.py
+++ /dev/null
@@ -1,2 +0,0 @@
-#%%
-print('hello')
diff --git a/gulpfile.js b/gulpfile.js
index 2949490abd66..da46943f7335 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -20,14 +20,13 @@ const nativeDependencyChecker = require('node-has-native-dependencies');
const flat = require('flat');
const { argv } = require('yargs');
const os = require('os');
-const rmrf = require('rimraf');
const typescript = require('typescript');
const tsProject = ts.createProject('./tsconfig.json', { typescript });
const isCI = process.env.TRAVIS === 'true' || process.env.TF_BUILD !== undefined;
-gulp.task('compile', (done) => {
+gulp.task('compileCore', (done) => {
let failed = false;
tsProject
.src()
@@ -39,6 +38,23 @@ gulp.task('compile', (done) => {
.on('finish', () => (failed ? done(new Error('TypeScript compilation errors')) : done()));
});
+gulp.task('compileApi', (done) => {
+ spawnAsync('npm', ['run', 'compileApi'], undefined, true)
+ .then((stdout) => {
+ if (stdout.includes('error')) {
+ done(new Error(stdout));
+ } else {
+ done();
+ }
+ })
+ .catch((ex) => {
+ console.log(ex);
+ done(new Error('TypeScript compilation errors', ex));
+ });
+});
+
+gulp.task('compile', gulp.series('compileCore', 'compileApi'));
+
gulp.task('precommit', (done) => run({ exitOnError: true, mode: 'staged' }, done));
gulp.task('output:clean', () => del(['coverage']));
@@ -82,9 +98,13 @@ async function addExtensionPackDependencies() {
// extension dependencies need not be installed during development
const packageJsonContents = await fsExtra.readFile('package.json', 'utf-8');
const packageJson = JSON.parse(packageJsonContents);
- packageJson.extensionPack = ['ms-toolsai.jupyter', 'ms-python.vscode-pylance'].concat(
+ packageJson.extensionPack = ['ms-python.vscode-pylance', 'ms-python.debugpy'].concat(
packageJson.extensionPack ? packageJson.extensionPack : [],
);
+ // Remove potential duplicates.
+ packageJson.extensionPack = packageJson.extensionPack.filter(
+ (item, index) => packageJson.extensionPack.indexOf(item) === index,
+ );
await fsExtra.writeFile('package.json', JSON.stringify(packageJson, null, 4), 'utf-8');
}
@@ -222,90 +242,6 @@ gulp.task('prePublishBundle', gulp.series('webpack', 'renameSourceMaps'));
gulp.task('checkDependencies', gulp.series('checkNativeDependencies'));
gulp.task('prePublishNonBundle', gulp.series('compile'));
-gulp.task('installPythonRequirements', async () => {
- let args = [
- '-m',
- 'pip',
- '--disable-pip-version-check',
- 'install',
- '--no-user',
- '-t',
- './pythonFiles/lib/python',
- '--no-cache-dir',
- '--implementation',
- 'py',
- '--no-deps',
- '--upgrade',
- '-r',
- './requirements.txt',
- ];
- await spawnAsync(process.env.CI_PYTHON_PATH || 'python', args, undefined, true)
- .then(() => true)
- .catch((ex) => {
- console.error("Failed to install requirements using 'python'", ex);
- return false;
- });
-
- args = [
- '-m',
- 'pip',
- '--disable-pip-version-check',
- 'install',
- '--no-user',
- '-t',
- './pythonFiles/lib/jedilsp',
- '--no-cache-dir',
- '--implementation',
- 'py',
- '--no-deps',
- '--upgrade',
- '-r',
- './pythonFiles/jedilsp_requirements/requirements.txt',
- ];
- await spawnAsync(process.env.CI_PYTHON_PATH || 'python', args, undefined, true)
- .then(() => true)
- .catch((ex) => {
- console.error("Failed to install Jedi LSP requirements using 'python'", ex);
- return false;
- });
-});
-
-// See https://github.com/microsoft/vscode-python/issues/7136
-gulp.task('installDebugpy', async () => {
- // Install dependencies needed for 'install_debugpy.py'
- const depsArgs = [
- '-m',
- 'pip',
- '--disable-pip-version-check',
- 'install',
- '--no-user',
- '-t',
- './pythonFiles/lib/temp',
- '-r',
- './build/debugger-install-requirements.txt',
- ];
- await spawnAsync(process.env.CI_PYTHON_PATH || 'python', depsArgs, undefined, true)
- .then(() => true)
- .catch((ex) => {
- console.error("Failed to install dependencies need by 'install_debugpy.py' using 'python'", ex);
- return false;
- });
-
- // Install new DEBUGPY with wheels for python 3.7
- const wheelsArgs = ['./pythonFiles/install_debugpy.py'];
- const wheelsEnv = { PYTHONPATH: './pythonFiles/lib/temp' };
- await spawnAsync(process.env.CI_PYTHON_PATH || 'python', wheelsArgs, wheelsEnv, true)
- .then(() => true)
- .catch((ex) => {
- console.error("Failed to install DEBUGPY wheels using 'python'", ex);
- return false;
- });
-
- rmrf.sync('./pythonFiles/lib/temp');
-});
-
-gulp.task('installPythonLibs', gulp.series('installPythonRequirements', 'installDebugpy'));
-
function spawnAsync(command, args, env, rejectOnStdErr = false) {
env = env || {};
env = { ...process.env, ...env };
diff --git a/native_locator/Cargo.toml b/native_locator/Cargo.toml
new file mode 100644
index 000000000000..ea41be66c8a4
--- /dev/null
+++ b/native_locator/Cargo.toml
@@ -0,0 +1,23 @@
+[package]
+name = "python-finder"
+version = "0.1.0"
+edition = "2021"
+
+[target.'cfg(windows)'.dependencies]
+winreg = "0.52.0"
+
+[dependencies]
+serde = { version = "1.0.152", features = ["derive"] }
+serde_json = "1.0.93"
+serde_repr = "0.1.10"
+regex = "1.10.4"
+log = "0.4.21"
+env_logger = "0.10.2"
+
+[lib]
+doctest = false
+
+[profile.release]
+strip = true
+lto = true
+codegen-units = 1
diff --git a/native_locator/src/common_python.rs b/native_locator/src/common_python.rs
new file mode 100644
index 000000000000..67ad94ed40a1
--- /dev/null
+++ b/native_locator/src/common_python.rs
@@ -0,0 +1,89 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+use crate::known::Environment;
+use crate::locator::{Locator, LocatorResult};
+use crate::messaging::PythonEnvironment;
+use crate::utils::{self, PythonEnv};
+use std::env;
+use std::path::{Path, PathBuf};
+
+fn get_env_path(python_executable_path: &PathBuf) -> Option {
+ let parent = python_executable_path.parent()?;
+ if parent.file_name()? == "Scripts" {
+ return Some(parent.parent()?.to_path_buf());
+ } else {
+ return Some(parent.to_path_buf());
+ }
+}
+
+pub struct PythonOnPath<'a> {
+ pub environment: &'a dyn Environment,
+}
+
+impl PythonOnPath<'_> {
+ pub fn with<'a>(environment: &'a impl Environment) -> PythonOnPath {
+ PythonOnPath { environment }
+ }
+}
+
+impl Locator for PythonOnPath<'_> {
+ fn resolve(&self, env: &PythonEnv) -> Option {
+ let bin = if cfg!(windows) {
+ "python.exe"
+ } else {
+ "python"
+ };
+ if env.executable.file_name().unwrap().to_ascii_lowercase() != bin {
+ return None;
+ }
+ Some(PythonEnvironment {
+ display_name: None,
+ python_executable_path: Some(env.executable.clone()),
+ version: env.version.clone(),
+ category: crate::messaging::PythonEnvironmentCategory::System,
+ env_path: env.path.clone(),
+ python_run_command: Some(vec![env.executable.to_str().unwrap().to_string()]),
+ ..Default::default()
+ })
+ }
+
+ fn find(&mut self) -> Option {
+ let paths = self.environment.get_env_var("PATH".to_string())?;
+ let bin = if cfg!(windows) {
+ "python.exe"
+ } else {
+ "python"
+ };
+
+ // Exclude files from this folder, as they would have been discovered elsewhere (widows_store)
+ // Also the exe is merely a pointer to another file.
+ let home = self.environment.get_user_home()?;
+ let apps_path = Path::new(&home)
+ .join("AppData")
+ .join("Local")
+ .join("Microsoft")
+ .join("WindowsApps");
+ let mut environments: Vec = vec![];
+ env::split_paths(&paths)
+ .filter(|p| !p.starts_with(apps_path.clone()))
+ .map(|p| p.join(bin))
+ .filter(|p| p.exists())
+ .for_each(|full_path| {
+ let version = utils::get_version(&full_path);
+ let env_path = get_env_path(&full_path);
+ if let Some(env) = self.resolve(&PythonEnv::new(full_path, env_path, version)) {
+ environments.push(env);
+ }
+ });
+
+ if environments.is_empty() {
+ None
+ } else {
+ Some(LocatorResult {
+ environments,
+ managers: vec![],
+ })
+ }
+ }
+}
diff --git a/native_locator/src/conda.rs b/native_locator/src/conda.rs
new file mode 100644
index 000000000000..8c7164b472d6
--- /dev/null
+++ b/native_locator/src/conda.rs
@@ -0,0 +1,1097 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+use crate::known;
+use crate::known::Environment;
+use crate::locator::Locator;
+use crate::locator::LocatorResult;
+use crate::messaging;
+use crate::messaging::Architecture;
+use crate::messaging::EnvManager;
+use crate::messaging::EnvManagerType;
+use crate::messaging::PythonEnvironment;
+use crate::utils::PythonEnv;
+use crate::utils::{find_python_binary_path, get_environment_key, get_environment_manager_key};
+use log::trace;
+use log::warn;
+use regex::Regex;
+use serde::Deserialize;
+use std::collections::HashMap;
+use std::collections::HashSet;
+use std::env;
+use std::fs::read_to_string;
+use std::path::{Path, PathBuf};
+
+/// Specifically returns the file names that are valid for 'conda' on windows
+/// Path is relative to the installation folder of conda.
+#[cfg(windows)]
+fn get_relative_paths_to_conda_executable() -> Vec {
+ vec![
+ PathBuf::from("Scripts").join("conda.exe"),
+ PathBuf::from("Scripts").join("conda.bat"),
+ ]
+}
+
+/// Specifically returns the file names that are valid for 'conda' on linux/Mac
+/// Path is relative to the installation folder of conda.
+#[cfg(unix)]
+fn get_relative_paths_to_conda_executable() -> Vec {
+ vec![PathBuf::from("bin").join("conda")]
+}
+
+/// Returns the relative path to the python executable for the conda installation.
+/// Path is relative to the installation folder of conda.
+/// In windows the python.exe for the conda installation is in the root folder.
+#[cfg(windows)]
+fn get_relative_paths_to_main_python_executable() -> PathBuf {
+ PathBuf::from("python.exe")
+}
+
+/// Returns the relative path to the python executable for the conda installation.
+/// Path is relative to the installation folder of conda.
+/// In windows the python.exe for the conda installation is in the bin folder.
+#[cfg(unix)]
+fn get_relative_paths_to_main_python_executable() -> PathBuf {
+ PathBuf::from("bin").join("python")
+}
+
+#[derive(Debug)]
+struct CondaPackage {
+ #[allow(dead_code)]
+ path: PathBuf,
+ version: String,
+ arch: Option,
+}
+
+#[derive(Deserialize, Debug)]
+struct CondaMetaPackageStructure {
+ channel: Option,
+ // version: Option,
+}
+
+/// Get the path to the json file along with the version of a package in the conda environment from the 'conda-meta' directory.
+fn get_conda_package_json_path(path: &Path, package: &str) -> Option {
+ // conda-meta is in the root of the conda installation folder
+ let path = path.join("conda-meta");
+ let package_name = format!("{}-", package);
+ let regex = Regex::new(format!("^{}-((\\d+\\.*)*)-.*.json$", package).as_str());
+ std::fs::read_dir(path)
+ .ok()?
+ .filter_map(Result::ok)
+ .find_map(|entry| {
+ let path = entry.path();
+ let file_name = path.file_name()?.to_string_lossy();
+ if file_name.starts_with(&package_name) && file_name.ends_with(".json") {
+ if let Some(version) = regex.clone().ok().unwrap().captures(&file_name)?.get(1) {
+ let mut arch: Option = None;
+ // Sample contents
+ // {
+ // "build": "h966fe2a_2",
+ // "build_number": 2,
+ // "channel": "https://repo.anaconda.com/pkgs/main/win-64",
+ // "constrains": [],
+ // }
+ // 32bit channel is https://repo.anaconda.com/pkgs/main/win-32/
+ // 64bit channel is "channel": "https://repo.anaconda.com/pkgs/main/osx-arm64",
+ if let Some(contents) = read_to_string(&path).ok() {
+ if let Some(js) =
+ serde_json::from_str::(&contents).ok()
+ {
+ if let Some(channel) = js.channel {
+ if channel.ends_with("64") {
+ arch = Some(Architecture::X64);
+ } else if channel.ends_with("32") {
+ arch = Some(Architecture::X86);
+ }
+ }
+ }
+ }
+ return Some(CondaPackage {
+ path: path.clone(),
+ version: version.as_str().to_string(),
+ arch,
+ });
+ }
+ }
+ None
+ })
+}
+
+fn get_conda_executable(path: &PathBuf) -> Option {
+ for relative_path in get_relative_paths_to_conda_executable() {
+ let exe = path.join(&relative_path);
+ if exe.exists() {
+ return Some(exe);
+ }
+ }
+
+ None
+}
+
+/// Specifically returns the file names that are valid for 'conda' on windows
+#[cfg(windows)]
+fn get_conda_bin_names() -> Vec<&'static str> {
+ vec!["conda.exe", "conda.bat"]
+}
+
+/// Specifically returns the file names that are valid for 'conda' on linux/Mac
+#[cfg(unix)]
+fn get_conda_bin_names() -> Vec<&'static str> {
+ vec!["conda"]
+}
+
+/// Find the conda binary on the PATH environment variable
+fn find_conda_binary_on_path(environment: &dyn known::Environment) -> Option {
+ let paths = environment.get_env_var("PATH".to_string())?;
+ for path in env::split_paths(&paths) {
+ for bin in get_conda_bin_names() {
+ let conda_path = path.join(bin);
+ if let Ok(metadata) = std::fs::metadata(&conda_path) {
+ if metadata.is_file() || metadata.is_symlink() {
+ return Some(conda_path);
+ }
+ }
+ }
+ }
+ None
+}
+
+#[cfg(windows)]
+fn get_known_conda_locations(environment: &dyn known::Environment) -> Vec {
+ let user_profile = environment.get_env_var("USERPROFILE".to_string()).unwrap();
+ let program_data = environment.get_env_var("PROGRAMDATA".to_string()).unwrap();
+ let all_user_profile = environment
+ .get_env_var("ALLUSERSPROFILE".to_string())
+ .unwrap();
+ let home_drive = environment.get_env_var("HOMEDRIVE".to_string()).unwrap();
+ let mut known_paths = vec![
+ Path::new(&user_profile).join("Anaconda3\\Scripts"),
+ Path::new(&program_data).join("Anaconda3\\Scripts"),
+ Path::new(&all_user_profile).join("Anaconda3\\Scripts"),
+ Path::new(&home_drive).join("Anaconda3\\Scripts"),
+ Path::new(&user_profile).join("Miniconda3\\Scripts"),
+ Path::new(&program_data).join("Miniconda3\\Scripts"),
+ Path::new(&all_user_profile).join("Miniconda3\\Scripts"),
+ Path::new(&home_drive).join("Miniconda3\\Scripts"),
+ ];
+ known_paths.append(&mut environment.get_know_global_search_locations());
+ known_paths
+}
+
+#[cfg(unix)]
+fn get_known_conda_locations(environment: &dyn known::Environment) -> Vec {
+ let mut known_paths = vec![
+ PathBuf::from("/opt/anaconda3/bin"),
+ PathBuf::from("/opt/miniconda3/bin"),
+ PathBuf::from("/usr/local/anaconda3/bin"),
+ PathBuf::from("/usr/local/miniconda3/bin"),
+ PathBuf::from("/usr/anaconda3/bin"),
+ PathBuf::from("/usr/miniconda3/bin"),
+ PathBuf::from("/home/anaconda3/bin"),
+ PathBuf::from("/home/miniconda3/bin"),
+ PathBuf::from("/anaconda3/bin"),
+ PathBuf::from("/miniconda3/bin"),
+ ];
+ if let Some(home) = environment.get_user_home() {
+ known_paths.push(PathBuf::from(home.clone()).join("anaconda3/bin"));
+ known_paths.push(PathBuf::from(home).join("miniconda3/bin"));
+ }
+ known_paths.append(&mut environment.get_know_global_search_locations());
+ known_paths
+}
+
+/// Find conda binary in known locations
+fn find_conda_binary_in_known_locations(environment: &dyn known::Environment) -> Option {
+ let conda_bin_names = get_conda_bin_names();
+ let known_locations = get_known_conda_locations(environment);
+ for location in known_locations {
+ for bin in &conda_bin_names {
+ let conda_path = location.join(bin);
+ if let Some(metadata) = std::fs::metadata(&conda_path).ok() {
+ if metadata.is_file() || metadata.is_symlink() {
+ return Some(conda_path);
+ }
+ }
+ }
+ }
+ None
+}
+
+/// Find the conda binary on the system
+pub fn find_conda_binary(environment: &dyn known::Environment) -> Option {
+ let conda_binary_on_path = find_conda_binary_on_path(environment);
+ match conda_binary_on_path {
+ Some(conda_binary_on_path) => Some(conda_binary_on_path),
+ None => find_conda_binary_in_known_locations(environment),
+ }
+}
+
+fn get_conda_manager(path: &PathBuf) -> Option {
+ let conda_exe = get_conda_executable(path)?;
+ let conda_pkg = get_conda_package_json_path(path, "conda")?;
+
+ Some(EnvManager {
+ executable_path: conda_exe,
+ version: Some(conda_pkg.version),
+ tool: EnvManagerType::Conda,
+ company: None,
+ company_display_name: None,
+ })
+}
+
+#[derive(Debug, Clone)]
+struct CondaEnvironment {
+ name: String,
+ named: bool,
+ env_path: PathBuf,
+ python_executable_path: Option,
+ version: Option,
+ conda_install_folder: Option,
+ arch: Option,
+}
+fn get_conda_environment_info(env_path: &PathBuf, named: bool) -> Option {
+ let metadata = env_path.metadata();
+ if let Ok(metadata) = metadata {
+ if metadata.is_dir() {
+ let conda_install_folder = get_conda_installation_used_to_create_conda_env(env_path);
+ let env_path = env_path.clone();
+ if let Some(python_binary) = find_python_binary_path(&env_path) {
+ if let Some(package_info) = get_conda_package_json_path(&env_path, "python") {
+ return Some(CondaEnvironment {
+ name: env_path.file_name()?.to_string_lossy().to_string(),
+ env_path,
+ named,
+ python_executable_path: Some(python_binary),
+ version: Some(package_info.version),
+ conda_install_folder,
+ arch: package_info.arch,
+ });
+ } else {
+ return Some(CondaEnvironment {
+ name: env_path.file_name()?.to_string_lossy().to_string(),
+ env_path,
+ named,
+ python_executable_path: Some(python_binary),
+ version: None,
+ conda_install_folder,
+ arch: None,
+ });
+ }
+ } else {
+ return Some(CondaEnvironment {
+ name: env_path.file_name()?.to_string_lossy().to_string(),
+ env_path,
+ named,
+ python_executable_path: None,
+ version: None,
+ conda_install_folder,
+ arch: None,
+ });
+ }
+ }
+ }
+
+ None
+}
+
+fn get_environments_from_envs_folder_in_conda_directory(
+ path: &Path,
+) -> Option> {
+ let mut envs: Vec = vec![];
+ // iterate through all sub directories in the env folder
+ // for each sub directory, check if it has a python executable
+ // if it does, create a PythonEnvironment object and add it to the list
+ for entry in std::fs::read_dir(path.join("envs"))
+ .ok()?
+ .filter_map(Result::ok)
+ {
+ if let Some(env) = get_conda_environment_info(&entry.path(), true) {
+ envs.push(env);
+ }
+ }
+
+ Some(envs)
+}
+
+fn get_conda_envs_from_environment_txt(environment: &dyn known::Environment) -> Vec {
+ let mut envs = vec![];
+ if let Some(home) = environment.get_user_home() {
+ let home = Path::new(&home);
+ let environment_txt = home.join(".conda").join("environments.txt");
+ if let Ok(reader) = std::fs::read_to_string(environment_txt.clone()) {
+ trace!("Found environments.txt file {:?}", environment_txt);
+ for line in reader.lines() {
+ envs.push(line.to_string());
+ }
+ }
+ }
+ envs
+}
+
+#[derive(Debug)]
+struct Condarc {
+ env_dirs: Vec,
+}
+
+/**
+ * Get the list of conda environments found in other locations such as
+ * /.conda/envs
+ * /AppData/Local/conda/conda/envs
+ */
+pub fn get_conda_environment_paths_from_conda_rc(
+ environment: &dyn known::Environment,
+) -> Vec {
+ if let Some(paths) = get_conda_conda_rc(environment) {
+ paths.env_dirs
+ } else {
+ vec![]
+ }
+}
+
+fn get_conda_environment_paths_from_known_paths(
+ environment: &dyn known::Environment,
+) -> Vec {
+ if let Some(home) = environment.get_user_home() {
+ let mut env_paths: Vec = vec![];
+ let _ = [
+ PathBuf::from(".conda").join("envs"),
+ PathBuf::from("AppData")
+ .join("Local")
+ .join("conda")
+ .join("conda")
+ .join("envs"),
+ ]
+ .iter()
+ .map(|path| {
+ let full_path = home.join(path);
+ for entry in std::fs::read_dir(full_path).ok()?.filter_map(Result::ok) {
+ if entry.path().is_dir() {
+ trace!("Search for conda envs in location {:?}", entry.path());
+ env_paths.push(entry.path());
+ }
+ }
+ None::<()>
+ });
+ return env_paths;
+ }
+ vec![]
+}
+
+#[cfg(windows)]
+fn get_conda_rc_search_paths(environment: &dyn known::Environment) -> Vec {
+ let mut search_paths: Vec = vec![
+ "C:\\ProgramData\\conda\\.condarc",
+ "C:\\ProgramData\\conda\\condarc",
+ "C:\\ProgramData\\conda\\condarc.d",
+ ]
+ .iter()
+ .map(|p| PathBuf::from(p))
+ .collect();
+
+ if let Some(conda_root) = environment.get_env_var("CONDA_ROOT".to_string()) {
+ search_paths.append(&mut vec![
+ PathBuf::from(conda_root.clone()).join(".condarc"),
+ PathBuf::from(conda_root.clone()).join("condarc"),
+ PathBuf::from(conda_root.clone()).join(".condarc.d"),
+ ]);
+ }
+ if let Some(home) = environment.get_user_home() {
+ search_paths.append(&mut vec![
+ home.join(".config").join("conda").join(".condarc"),
+ home.join(".config").join("conda").join("condarc"),
+ home.join(".config").join("conda").join("condarc.d"),
+ home.join(".conda").join(".condarc"),
+ home.join(".conda").join("condarc"),
+ home.join(".conda").join("condarc.d"),
+ home.join(".condarc"),
+ ]);
+ }
+ if let Some(conda_prefix) = environment.get_env_var("CONDA_PREFIX".to_string()) {
+ search_paths.append(&mut vec![
+ PathBuf::from(conda_prefix.clone()).join(".condarc"),
+ PathBuf::from(conda_prefix.clone()).join("condarc"),
+ PathBuf::from(conda_prefix.clone()).join(".condarc.d"),
+ ]);
+ }
+ if let Some(condarc) = environment.get_env_var("CONDARC".to_string()) {
+ search_paths.append(&mut vec![PathBuf::from(condarc)]);
+ }
+
+ search_paths
+}
+#[cfg(unix)]
+fn get_conda_rc_search_paths(environment: &dyn known::Environment) -> Vec {
+ let mut search_paths: Vec = vec![
+ "/etc/conda/.condarc",
+ "/etc/conda/condarc",
+ "/etc/conda/condarc.d/",
+ "/var/lib/conda/.condarc",
+ "/var/lib/conda/condarc",
+ "/var/lib/conda/condarc.d/",
+ ]
+ .iter()
+ .map(|p| PathBuf::from(p))
+ .map(|p| {
+ // This only applies in tests.
+ // We need this, as the root folder cannot be mocked.
+ if let Some(root) = environment.get_root() {
+ root.join(p.to_string_lossy()[1..].to_string())
+ } else {
+ p
+ }
+ })
+ .collect();
+
+ if let Some(conda_root) = environment.get_env_var("CONDA_ROOT".to_string()) {
+ search_paths.append(&mut vec![
+ PathBuf::from(conda_root.clone()).join(".condarc"),
+ PathBuf::from(conda_root.clone()).join("condarc"),
+ PathBuf::from(conda_root.clone()).join(".condarc.d"),
+ ]);
+ }
+ if let Some(xdg_config_home) = environment.get_env_var("XDG_CONFIG_HOME".to_string()) {
+ search_paths.append(&mut vec![
+ PathBuf::from(xdg_config_home.clone()).join(".condarc"),
+ PathBuf::from(xdg_config_home.clone()).join("condarc"),
+ PathBuf::from(xdg_config_home.clone()).join(".condarc.d"),
+ ]);
+ }
+ if let Some(home) = environment.get_user_home() {
+ search_paths.append(&mut vec![
+ home.join(".config").join("conda").join(".condarc"),
+ home.join(".config").join("conda").join("condarc"),
+ home.join(".config").join("conda").join("condarc.d"),
+ home.join(".conda").join(".condarc"),
+ home.join(".conda").join("condarc"),
+ home.join(".conda").join("condarc.d"),
+ home.join(".condarc"),
+ ]);
+ }
+ if let Some(conda_prefix) = environment.get_env_var("CONDA_PREFIX".to_string()) {
+ search_paths.append(&mut vec![
+ PathBuf::from(conda_prefix.clone()).join(".condarc"),
+ PathBuf::from(conda_prefix.clone()).join("condarc"),
+ PathBuf::from(conda_prefix.clone()).join(".condarc.d"),
+ ]);
+ }
+ if let Some(condarc) = environment.get_env_var("CONDARC".to_string()) {
+ search_paths.append(&mut vec![PathBuf::from(condarc)]);
+ }
+
+ search_paths
+}
+
+/**
+ * The .condarc file contains a list of directories where conda environments are created.
+ * https://conda.io/projects/conda/en/latest/configuration.html#envs-dirs
+ *
+ * TODO: Search for the .condarc file in the following locations:
+ * https://conda.io/projects/conda/en/latest/user-guide/configuration/use-condarc.html#searching-for-condarc
+ */
+fn get_conda_conda_rc(environment: &dyn known::Environment) -> Option {
+ let conda_rc = get_conda_rc_search_paths(environment)
+ .into_iter()
+ .find(|p| p.exists())?;
+ let mut start_consuming_values = false;
+ trace!("conda_rc: {:?}", conda_rc);
+ let reader = std::fs::read_to_string(conda_rc).ok()?;
+ let mut env_dirs = vec![];
+ for line in reader.lines() {
+ if line.starts_with("envs_dirs:") && !start_consuming_values {
+ start_consuming_values = true;
+ continue;
+ }
+ if start_consuming_values {
+ if line.trim().starts_with("-") {
+ if let Some(env_dir) = line.splitn(2, '-').nth(1) {
+ let env_dir = PathBuf::from(env_dir.trim()).join("envs");
+ if env_dir.exists() {
+ env_dirs.push(env_dir);
+ }
+ }
+ continue;
+ } else {
+ break;
+ }
+ }
+ }
+ return Some(Condarc { env_dirs });
+}
+
+/**
+ * When we create conda environments in specific folder using the -p argument, the location of the conda executable is not know.
+ * If the user has multiple conda installations, any one of those could have created that specific environment.
+ * Fortunately the conda-meta/history file contains the path to the conda executable (script) that was used to create the environment.
+ * The format of the file is as follows:
+ * # cmd: C:\Users\user\miniconda3\Scripts\conda-script.py create --name myenv
+ *
+ * Thus all we need to do is to look for the 'cmd' line in the file and extract the path to the conda executable and match that against the path provided.
+ */
+fn was_conda_environment_created_by_specific_conda(
+ env: &CondaEnvironment,
+ root_conda_path: &PathBuf,
+) -> bool {
+ if let Some(cmd_line) = env.conda_install_folder.clone() {
+ if cmd_line
+ .to_lowercase()
+ .contains(&root_conda_path.to_string_lossy().to_lowercase())
+ {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ false
+}
+
+/**
+ * The conda-meta/history file in conda environments contain the command used to create the conda environment.
+ * And example is `# cmd: \Scripts\conda-script.py create -n sample``
+ * And example is `# cmd: conda create -n sample``
+ *
+ * Sometimes the cmd line contains the fully qualified path to the conda install folder.
+ * This function returns the path to the conda installation that was used to create the environment.
+ */
+fn get_conda_installation_used_to_create_conda_env(env_path: &PathBuf) -> Option {
+ let conda_meta_history = env_path.join("conda-meta").join("history");
+ if let Ok(reader) = std::fs::read_to_string(conda_meta_history.clone()) {
+ if let Some(line) = reader.lines().map(|l| l.trim()).find(|l| {
+ l.to_lowercase().starts_with("# cmd:") && l.to_lowercase().contains(" create -")
+ }) {
+ // Sample lines
+ // # cmd: \Scripts\conda-script.py create -n samlpe1
+ // # cmd: \Scripts\conda-script.py create -p
+ // # cmd: /Users/donjayamanne/miniconda3/bin/conda create -n conda1
+ let start_index = line.to_lowercase().find("# cmd:")? + "# cmd:".len();
+ let end_index = line.to_lowercase().find(" create -")?;
+ let cmd_line = PathBuf::from(line[start_index..end_index].trim().to_string());
+ if let Some(cmd_line) = cmd_line.parent() {
+ if let Some(name) = cmd_line.file_name() {
+ if name.to_ascii_lowercase() == "bin" || name.to_ascii_lowercase() == "scripts"
+ {
+ if let Some(cmd_line) = cmd_line.parent() {
+ return Some(cmd_line.to_str()?.to_string());
+ }
+ }
+ return Some(cmd_line.to_str()?.to_string());
+ }
+ }
+ }
+ }
+
+ None
+}
+
+#[cfg(windows)]
+fn get_known_conda_install_locations(environment: &dyn known::Environment) -> Vec {
+ let user_profile = environment.get_env_var("USERPROFILE".to_string()).unwrap();
+ let program_data = environment.get_env_var("PROGRAMDATA".to_string()).unwrap();
+ let all_user_profile = environment
+ .get_env_var("ALLUSERSPROFILE".to_string())
+ .unwrap();
+ let home_drive = environment.get_env_var("HOMEDRIVE".to_string()).unwrap();
+ let mut known_paths = vec![
+ Path::new(&user_profile).join("Anaconda3"),
+ Path::new(&program_data).join("Anaconda3"),
+ Path::new(&all_user_profile).join("Anaconda3"),
+ Path::new(&home_drive).join("Anaconda3"),
+ Path::new(&user_profile).join("Miniconda3"),
+ Path::new(&program_data).join("Miniconda3"),
+ Path::new(&all_user_profile).join("Miniconda3"),
+ Path::new(&home_drive).join("Miniconda3"),
+ Path::new(&all_user_profile).join("miniforge3"),
+ Path::new(&home_drive).join("miniforge3"),
+ ];
+ if let Some(home) = environment.get_user_home() {
+ known_paths.push(PathBuf::from(home.clone()).join("anaconda3"));
+ known_paths.push(PathBuf::from(home.clone()).join("miniconda3"));
+ known_paths.push(PathBuf::from(home.clone()).join("miniforge3"));
+ known_paths.push(PathBuf::from(home).join(".conda"));
+ }
+ known_paths
+}
+
+#[cfg(unix)]
+fn get_known_conda_install_locations(environment: &dyn known::Environment) -> Vec {
+ let mut known_paths = vec![
+ PathBuf::from("/opt/anaconda3"),
+ PathBuf::from("/opt/miniconda3"),
+ PathBuf::from("/usr/local/anaconda3"),
+ PathBuf::from("/usr/local/miniconda3"),
+ PathBuf::from("/usr/anaconda3"),
+ PathBuf::from("/usr/miniconda3"),
+ PathBuf::from("/home/anaconda3"),
+ PathBuf::from("/home/miniconda3"),
+ PathBuf::from("/anaconda3"),
+ PathBuf::from("/miniconda3"),
+ PathBuf::from("/miniforge3"),
+ PathBuf::from("/miniforge3"),
+ ];
+ if let Some(home) = environment.get_user_home() {
+ known_paths.push(PathBuf::from(home.clone()).join("anaconda3"));
+ known_paths.push(PathBuf::from(home.clone()).join("miniconda3"));
+ known_paths.push(PathBuf::from(home.clone()).join("miniforge3"));
+ known_paths.push(PathBuf::from(home).join(".conda"));
+ }
+ known_paths
+}
+
+fn get_activation_command(env: &CondaEnvironment, manager: &EnvManager) -> Option> {
+ if env.python_executable_path.is_none() {
+ return None;
+ }
+ let conda_exe = manager.executable_path.to_str().unwrap().to_string();
+ if env.named {
+ Some(vec![
+ conda_exe,
+ "run".to_string(),
+ "-n".to_string(),
+ env.name.clone(),
+ "python".to_string(),
+ ])
+ } else {
+ Some(vec![
+ conda_exe,
+ "run".to_string(),
+ "-p".to_string(),
+ env.env_path.to_str().unwrap().to_string(),
+ "python".to_string(),
+ ])
+ }
+}
+
+fn get_root_python_environment(path: &PathBuf, manager: &EnvManager) -> Option {
+ let python_exe = path.join(get_relative_paths_to_main_python_executable());
+ if !python_exe.exists() {
+ return None;
+ }
+ if let Some(package_info) = get_conda_package_json_path(&path, "python") {
+ let conda_exe = manager.executable_path.to_str().unwrap().to_string();
+ return Some(PythonEnvironment {
+ // Do not set the name to `base`
+ // Ideally we would like to see this idetnfieid as a base env.
+ // However if user has 2 conda installations, then the second base env
+ // will be activated in python extension using first conda executable and -n base,
+ // I.e. base env of the first install will be activated instead of this.
+ // Hence lets always just give the path.
+ // name: Some("base".to_string()),
+ category: messaging::PythonEnvironmentCategory::Conda,
+ python_executable_path: Some(python_exe),
+ version: Some(package_info.version),
+ arch: package_info.arch,
+ env_path: Some(path.clone()),
+ env_manager: Some(manager.clone()),
+ python_run_command: Some(vec![
+ conda_exe,
+ "run".to_string(),
+ "-p".to_string(),
+ path.to_str().unwrap().to_string(),
+ "python".to_string(),
+ ]),
+ ..Default::default()
+ });
+ }
+ None
+}
+
+fn get_conda_environments_in_specified_install_path(
+ conda_install_folder: &PathBuf,
+ possible_conda_envs: &mut HashMap,
+) -> Option {
+ let mut managers: Vec = vec![];
+ let mut environments: Vec = vec![];
+ let mut detected_envs: HashSet = HashSet::new();
+ let mut detected_managers: HashSet = HashSet::new();
+ if !conda_install_folder.is_dir() || !conda_install_folder.exists() {
+ return None;
+ }
+
+ if let Some(manager) = get_conda_manager(&conda_install_folder) {
+ // 1. Base environment.
+ if let Some(env) = get_root_python_environment(&conda_install_folder, &manager) {
+ if let Some(env_path) = env.clone().env_path {
+ possible_conda_envs.remove(&env_path);
+ let key = env_path.to_string_lossy().to_string();
+ if !detected_envs.contains(&key) {
+ detected_envs.insert(key);
+ environments.push(env);
+ }
+ }
+ }
+
+ // 2. All environments in the `/envs` folder
+ let mut envs: Vec = vec![];
+ if let Some(environments) =
+ get_environments_from_envs_folder_in_conda_directory(conda_install_folder)
+ {
+ environments.iter().for_each(|env| {
+ possible_conda_envs.remove(&env.env_path);
+ envs.push(env.clone());
+ });
+ }
+
+ // 3. All environments in the environments.txt and other locations (such as `conda config --show envs_dirs`)
+ // Only include those environments that were created by the specific conda installation
+ // Ignore environments that are in the env sub directory of the conda folder, as those would have been
+ // tracked elsewhere, we're only interested in conda envs located in other parts of the file system created using the -p flag.
+ // E.g conda_install_folder is `/`
+ // Then all folders such as `//envs/env1` can be ignored
+ // As these would have been discovered in previous step.
+ for (key, env) in possible_conda_envs.clone().iter() {
+ if env
+ .env_path
+ .to_string_lossy()
+ .contains(conda_install_folder.to_str().unwrap())
+ {
+ continue;
+ }
+ if was_conda_environment_created_by_specific_conda(&env, conda_install_folder) {
+ envs.push(env.clone());
+ possible_conda_envs.remove(key);
+ }
+ }
+
+ // Finally construct the PythonEnvironment objects
+ envs.iter().for_each(|env| {
+ let exe = env.python_executable_path.clone();
+ let arch = env.arch.clone();
+ let mut env = PythonEnvironment::new(
+ None,
+ Some(env.name.clone()),
+ exe.clone(),
+ messaging::PythonEnvironmentCategory::Conda,
+ env.version.clone(),
+ Some(env.env_path.clone()),
+ Some(manager.clone()),
+ get_activation_command(env, &manager),
+ );
+ env.arch = arch;
+ if let Some(key) = get_environment_key(&env) {
+ if !detected_envs.contains(&key) {
+ detected_envs.insert(key);
+ environments.push(env);
+ }
+ }
+ });
+
+ let key = get_environment_manager_key(&manager);
+ if !detected_managers.contains(&key) {
+ detected_managers.insert(key);
+ managers.push(manager);
+ }
+ }
+
+ if managers.is_empty() && environments.is_empty() {
+ return None;
+ }
+
+ Some(LocatorResult {
+ managers,
+ environments,
+ })
+}
+
+fn find_conda_environments_from_known_conda_install_locations(
+ environment: &dyn known::Environment,
+ possible_conda_envs: &mut HashMap,
+) -> Option {
+ let mut managers: Vec = vec![];
+ let mut environments: Vec = vec![];
+
+ // We know conda is installed in `/Anaconda3`, `/miniforge3`, etc
+ // Look for these and discover all environments in these locations
+ for possible_conda_install_folder in get_known_conda_install_locations(environment) {
+ if let Some(mut result) = get_conda_environments_in_specified_install_path(
+ &possible_conda_install_folder,
+ possible_conda_envs,
+ ) {
+ managers.append(&mut result.managers);
+ environments.append(&mut result.environments);
+ }
+ }
+
+ // We know conda environments are listed in the `environments.txt` file
+ // Sometimes the base environment is also listed in these paths
+ // Go through them an look for possible conda install folders in these paths.
+ // & then look for conda environments in each of them.
+ // This accounts for cases where Conda install location is in some un-common (custom) location
+ let mut env_paths_to_remove: Vec = vec![];
+ for (key, env) in possible_conda_envs
+ .clone()
+ .iter()
+ .filter(|(_, env)| is_conda_install_location(&env.env_path))
+ {
+ if let Some(mut result) =
+ get_conda_environments_in_specified_install_path(&env.env_path, possible_conda_envs)
+ {
+ possible_conda_envs.remove(key);
+ managers.append(&mut result.managers);
+ environments.append(&mut result.environments);
+ env_paths_to_remove.push(env.env_path.clone());
+ }
+ }
+
+ if managers.is_empty() && environments.is_empty() {
+ return None;
+ }
+
+ Some(LocatorResult {
+ managers,
+ environments,
+ })
+}
+
+fn is_conda_install_location(path: &PathBuf) -> bool {
+ let envs_path = path.join("envs");
+ return envs_path.exists() && envs_path.is_dir();
+}
+
+pub fn get_conda_version(conda_binary: &PathBuf) -> Option {
+ let mut parent = conda_binary.parent()?;
+ if parent.ends_with("bin") {
+ parent = parent.parent()?;
+ }
+ if parent.ends_with("Library") {
+ parent = parent.parent()?;
+ }
+ match get_conda_package_json_path(&parent, "conda") {
+ Some(result) => Some(result.version),
+ None => match get_conda_package_json_path(&parent.parent()?, "conda") {
+ Some(result) => Some(result.version),
+ None => None,
+ },
+ }
+}
+
+fn get_known_conda_envs_from_various_locations(
+ environment: &dyn known::Environment,
+) -> HashMap {
+ let mut env_paths = get_conda_envs_from_environment_txt(environment)
+ .iter()
+ .map(|e| PathBuf::from(e))
+ .collect::>();
+
+ let mut env_paths_from_conda_rc = get_conda_environment_paths_from_conda_rc(environment);
+ env_paths.append(&mut env_paths_from_conda_rc);
+
+ let mut envs_from_known_paths = get_conda_environment_paths_from_known_paths(environment);
+ env_paths.append(&mut envs_from_known_paths);
+
+ let mut envs: Vec = vec![];
+ env_paths.iter().for_each(|path| {
+ if !path.exists() {
+ return;
+ }
+ if let Some(env) = get_conda_environment_info(&path, false) {
+ envs.push(env);
+ }
+ });
+
+ envs.into_iter().fold(HashMap::new(), |mut acc, env| {
+ acc.insert(env.env_path.clone(), env);
+ acc
+ })
+}
+
+fn get_conda_environments_from_known_locations_that_have_not_been_discovered(
+ known_environment: &Vec,
+ environment: &dyn known::Environment,
+ undiscovered_environments: &mut HashMap,
+) -> Option {
+ if undiscovered_environments.is_empty() {
+ return None;
+ }
+
+ // Ok, weird, we have an environment in environments.txt file that was not discovered.
+ // Let's try to discover it.
+ warn!(
+ "Found environments in environments.txt that were not discovered: {:?}",
+ undiscovered_environments
+ );
+
+ let manager = match known_environment
+ .iter()
+ .find_map(|env| env.env_manager.as_ref())
+ {
+ Some(manager) => Some(manager.clone()),
+ None => {
+ // Old approach of finding the conda executable.
+ let conda_binary = find_conda_binary(environment)?;
+ Some(EnvManager::new(
+ conda_binary.clone(),
+ get_conda_version(&conda_binary),
+ EnvManagerType::Conda,
+ ))
+ }
+ };
+
+ if let Some(manager) = manager {
+ let mut environments: Vec = vec![];
+ for (_, env) in undiscovered_environments {
+ let exe = env.python_executable_path.clone();
+ let env = PythonEnvironment::new(
+ None,
+ Some(env.name.clone()),
+ exe.clone(),
+ messaging::PythonEnvironmentCategory::Conda,
+ env.version.clone(),
+ Some(env.env_path.clone()),
+ Some(manager.clone()),
+ get_activation_command(&env, &manager),
+ );
+ environments.push(env);
+ }
+ if environments.len() > 0 {
+ return Some(LocatorResult {
+ managers: vec![manager],
+ environments,
+ });
+ }
+ } else {
+ warn!("Could not find conda executable to discover environments in environments.txt");
+ }
+
+ None
+}
+
+pub struct Conda<'a> {
+ pub manager: Option,
+ pub environment: &'a dyn Environment,
+ pub discovered_environment_paths: HashSet,
+ pub discovered_managers: HashSet,
+}
+
+pub trait CondaLocator {
+ fn find_in(&mut self, possible_conda_folder: &PathBuf) -> Option;
+}
+
+impl Conda<'_> {
+ pub fn with<'a>(environment: &'a impl Environment) -> Conda {
+ Conda {
+ environment,
+ manager: None,
+ discovered_environment_paths: HashSet::new(),
+ discovered_managers: HashSet::new(),
+ }
+ }
+ fn filter_result(&mut self, result: Option) -> Option {
+ if let Some(result) = result {
+ let envs: Vec = result
+ .environments
+ .iter()
+ .filter(|e| {
+ if let Some(env_path) = e.env_path.clone() {
+ if self.discovered_environment_paths.contains(&env_path) {
+ return false;
+ }
+ self.discovered_environment_paths.insert(env_path);
+ return true;
+ }
+ false
+ })
+ .cloned()
+ .collect();
+
+ let managers: Vec = result
+ .managers
+ .iter()
+ .filter(|e| {
+ let key = get_environment_manager_key(e);
+ if self.discovered_managers.contains(&key) {
+ return false;
+ }
+ self.discovered_managers.insert(key);
+ return true;
+ })
+ .cloned()
+ .collect();
+
+ if envs.len() > 0 || managers.len() > 0 {
+ return Some(LocatorResult {
+ managers: managers,
+ environments: envs,
+ });
+ }
+ }
+ None
+ }
+}
+
+impl CondaLocator for Conda<'_> {
+ fn find_in(&mut self, possible_conda_folder: &PathBuf) -> Option {
+ if !is_conda_install_location(possible_conda_folder) {
+ return None;
+ }
+ let mut possible_conda_envs = get_known_conda_envs_from_various_locations(self.environment);
+ self.filter_result(get_conda_environments_in_specified_install_path(
+ possible_conda_folder,
+ &mut possible_conda_envs,
+ ))
+ }
+}
+
+impl Locator for Conda<'_> {
+ fn resolve(&self, _env: &PythonEnv) -> Option {
+ // We will find everything in find
+ None
+ }
+
+ fn find(&mut self) -> Option {
+ let mut managers: Vec = vec![];
+ let mut environments: Vec = vec![];
+ let mut detected_managers: HashSet = HashSet::new();
+ let mut possible_conda_envs = get_known_conda_envs_from_various_locations(self.environment);
+
+ if let Some(result) =
+ self.filter_result(find_conda_environments_from_known_conda_install_locations(
+ self.environment,
+ &mut possible_conda_envs,
+ ))
+ {
+ result.managers.iter().for_each(|m| {
+ detected_managers.insert(get_environment_manager_key(m));
+ managers.push(m.clone());
+ });
+
+ result
+ .environments
+ .iter()
+ .for_each(|e| environments.push(e.clone()));
+ }
+
+ if let Some(result) = self.filter_result(
+ get_conda_environments_from_known_locations_that_have_not_been_discovered(
+ &environments,
+ self.environment,
+ &mut possible_conda_envs,
+ ),
+ ) {
+ result.managers.iter().for_each(|m| {
+ let key = get_environment_manager_key(m);
+ if !detected_managers.contains(&key) {
+ warn!("Found a new manager using the fallback mechanism: {:?}", m);
+ detected_managers.insert(key);
+ managers.push(m.clone());
+ }
+ });
+
+ result.environments.iter().for_each(|e| {
+ warn!(
+ "Found a new conda environment using the fallback mechanism: {:?}",
+ e
+ );
+ environments.push(e.clone());
+ });
+ }
+
+ if managers.is_empty() && environments.is_empty() {
+ return None;
+ }
+
+ Some(LocatorResult {
+ managers,
+ environments,
+ })
+ }
+}
diff --git a/native_locator/src/global_virtualenvs.rs b/native_locator/src/global_virtualenvs.rs
new file mode 100644
index 000000000000..8004775e3ee2
--- /dev/null
+++ b/native_locator/src/global_virtualenvs.rs
@@ -0,0 +1,69 @@
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License.
+
+use crate::{
+ known,
+ utils::{find_python_binary_path, get_version, PythonEnv},
+};
+use std::{fs, path::PathBuf};
+
+pub fn get_global_virtualenv_dirs(environment: &impl known::Environment) -> Vec {
+ let mut venv_dirs: Vec = vec![];
+
+ if let Some(work_on_home) = environment.get_env_var("WORKON_HOME".to_string()) {
+ if let Ok(work_on_home) = fs::canonicalize(work_on_home) {
+ if work_on_home.exists() {
+ venv_dirs.push(work_on_home);
+ }
+ }
+ }
+
+ if let Some(home) = environment.get_user_home() {
+ let home = PathBuf::from(home);
+ for dir in [
+ PathBuf::from("envs"),
+ PathBuf::from(".direnv"),
+ PathBuf::from(".venvs"),
+ PathBuf::from(".virtualenvs"),
+ PathBuf::from(".local").join("share").join("virtualenvs"),
+ ] {
+ let venv_dir = home.join(dir);
+ if venv_dir.exists() {
+ venv_dirs.push(venv_dir);
+ }
+ }
+ if cfg!(target_os = "linux") {
+ let envs = PathBuf::from("Envs");
+ if envs.exists() {
+ venv_dirs.push(envs);
+ }
+ }
+ }
+
+ venv_dirs
+}
+
+pub fn list_global_virtual_envs(environment: &impl known::Environment) -> Vec {
+ let mut python_envs: Vec = vec![];
+ for root_dir in get_global_virtualenv_dirs(environment).iter() {
+ if let Ok(dirs) = fs::read_dir(root_dir) {
+ for venv_dir in dirs {
+ if let Ok(venv_dir) = venv_dir {
+ let venv_dir = venv_dir.path();
+ if !venv_dir.is_dir() {
+ continue;
+ }
+ if let Some(executable) = find_python_binary_path(&venv_dir) {
+ python_envs.push(PythonEnv::new(
+ executable.clone(),
+ Some(venv_dir),
+ get_version(&executable),
+ ));
+ }
+ }
+ }
+ }
+ }
+
+ python_envs
+}
diff --git a/native_locator/src/homebrew.rs b/native_locator/src/homebrew.rs
new file mode 100644
index 000000000000..78cefd2cd74b
--- /dev/null
+++ b/native_locator/src/homebrew.rs
@@ -0,0 +1,283 @@
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License.
+
+use crate::{
+ known::Environment,
+ locator::{Locator, LocatorResult},
+ messaging::PythonEnvironment,
+ utils::PythonEnv,
+};
+use regex::Regex;
+use std::{collections::HashSet, path::PathBuf};
+
+fn is_symlinked_python_executable(path: &PathBuf) -> Option {
+ let name = path.file_name()?.to_string_lossy();
+ if !name.starts_with("python") || name.ends_with("-config") || name.ends_with("-build") {
+ return None;
+ }
+ let metadata = std::fs::symlink_metadata(&path).ok()?;
+ if metadata.is_file() || !metadata.file_type().is_symlink() {
+ return None;
+ }
+ Some(std::fs::canonicalize(path).ok()?)
+}
+
+fn get_homebrew_prefix_env_var(environment: &dyn Environment) -> Option {
+ if let Some(homebrew_prefix) = environment.get_env_var("HOMEBREW_PREFIX".to_string()) {
+ let homebrew_prefix_bin = PathBuf::from(homebrew_prefix).join("bin");
+ if homebrew_prefix_bin.exists() {
+ return Some(homebrew_prefix_bin);
+ }
+ }
+ None
+}
+
+fn get_homebrew_prefix_bin(environment: &dyn Environment) -> Option {
+ if let Some(homebrew_prefix) = get_homebrew_prefix_env_var(environment) {
+ return Some(homebrew_prefix);
+ }
+
+ // Homebrew install folders documented here https://docs.brew.sh/Installation
+ // /opt/homebrew for Apple Silicon,
+ // /usr/local for macOS Intel
+ // /home/linuxbrew/.linuxbrew for Linux
+ [
+ "/home/linuxbrew/.linuxbrew/bin",
+ "/opt/homebrew/bin",
+ "/usr/local/bin",
+ ]
+ .iter()
+ .map(|p| PathBuf::from(p))
+ .find(|p| p.exists())
+}
+
+fn get_env_path(python_exe_from_bin_dir: &PathBuf, resolved_file: &PathBuf) -> Option {
+ // If the fully resolved file path contains the words `/homebrew/` or `/linuxbrew/`
+ // Then we know this is definitely a home brew version of python.
+ // And in these cases we can compute the sysprefix.
+
+ let resolved_file = resolved_file.to_str()?;
+ // 1. MacOS Silicon
+ if python_exe_from_bin_dir
+ .to_string_lossy()
+ .to_lowercase()
+ .starts_with("/opt/homebrew/bin/python")
+ {
+ // Resolved exe is something like `/opt/homebrew/Cellar/python@3.12/3.12.3/Frameworks/Python.framework/Versions/3.12/bin/python3.12`
+ let reg_ex = Regex::new("/opt/homebrew/Cellar/python@((\\d+\\.?)*)/(\\d+\\.?)*/Frameworks/Python.framework/Versions/(\\d+\\.?)*/bin/python(\\d+\\.?)*").unwrap();
+ let captures = reg_ex.captures(&resolved_file)?;
+ let version = captures.get(1).map(|m| m.as_str()).unwrap_or_default();
+ // SysPrefix- /opt/homebrew/opt/python@3.12/Frameworks/Python.framework/Versions/3.12
+ let sys_prefix = PathBuf::from(format!(
+ "/opt/homebrew/opt/python@{}/Frameworks/Python.framework/Versions/{}",
+ version, version
+ ));
+
+ return if sys_prefix.exists() {
+ Some(sys_prefix)
+ } else {
+ None
+ };
+ }
+
+ // 2. Linux
+ if python_exe_from_bin_dir
+ .to_string_lossy()
+ .to_lowercase()
+ .starts_with("/usr/local/bin/python")
+ {
+ // Resolved exe is something like `/home/linuxbrew/.linuxbrew/Cellar/python@3.12/3.12.3/bin/python3.12`
+ let reg_ex = Regex::new("/home/linuxbrew/.linuxbrew/Cellar/python@(\\d+\\.?\\d+\\.?)/(\\d+\\.?\\d+\\.?\\d+\\.?)/bin/python.*").unwrap();
+ let captures = reg_ex.captures(&resolved_file)?;
+ let version = captures.get(1).map(|m| m.as_str()).unwrap_or_default();
+ let full_version = captures.get(2).map(|m| m.as_str()).unwrap_or_default();
+ // SysPrefix- /home/linuxbrew/.linuxbrew/Cellar/python@3.12/3.12.3
+ let sys_prefix = PathBuf::from(format!(
+ "/home/linuxbrew/.linuxbrew/Cellar/python@{}/{}",
+ version, full_version
+ ));
+
+ return if sys_prefix.exists() {
+ Some(sys_prefix)
+ } else {
+ None
+ };
+ }
+
+ // 3. MacOS Intel
+ if python_exe_from_bin_dir
+ .to_string_lossy()
+ .to_lowercase()
+ .starts_with("/usr/local/bin/python")
+ {
+ // Resolved exe is something like `/usr/local/Cellar/python@3.12/3.12.3/Frameworks/Python.framework/Versions/3.12/bin/python3.12`
+ let reg_ex = Regex::new("/usr/local/Cellar/python@(\\d+\\.?\\d+\\.?)/(\\d+\\.?\\d+\\.?\\d+\\.?)/Frameworks/Python.framework/Versions/(\\d+\\.?\\d+\\.?)/bin/python.*").unwrap();
+ let captures = reg_ex.captures(&resolved_file)?;
+ let version = captures.get(1).map(|m| m.as_str()).unwrap_or_default();
+ let full_version = captures.get(2).map(|m| m.as_str()).unwrap_or_default();
+ // SysPrefix- /usr/local/Cellar/python@3.8/3.8.19/Frameworks/Python.framework/Versions/3.8
+ let sys_prefix = PathBuf::from(format!(
+ "/usr/local/Cellar/python@{}/{}/Frameworks/Python.framework/Versions/{}",
+ version, full_version, version
+ ));
+
+ return if sys_prefix.exists() {
+ Some(sys_prefix)
+ } else {
+ None
+ };
+ }
+ None
+}
+
+fn get_python_info(
+ python_exe_from_bin_dir: &PathBuf,
+ reported: &mut HashSet,
+ python_version_regex: &Regex,
+) -> Option {
+ // Possible we do not have python3.12 or the like in bin directory
+ // & we have only python3, in that case we should add python3 to the list
+ if let Some(resolved_exe) = is_symlinked_python_executable(python_exe_from_bin_dir) {
+ let user_friendly_exe = python_exe_from_bin_dir;
+ let python_version = resolved_exe.to_string_lossy().to_string();
+ let version = match python_version_regex.captures(&python_version) {
+ Some(captures) => match captures.get(1) {
+ Some(version) => Some(version.as_str().to_string()),
+ None => None,
+ },
+ None => None,
+ };
+ if reported.contains(&resolved_exe.to_string_lossy().to_string()) {
+ return None;
+ }
+ reported.insert(resolved_exe.to_string_lossy().to_string());
+ return Some(PythonEnvironment::new(
+ None,
+ None,
+ Some(user_friendly_exe.clone()),
+ crate::messaging::PythonEnvironmentCategory::Homebrew,
+ version,
+ get_env_path(python_exe_from_bin_dir, &resolved_exe),
+ None,
+ Some(vec![user_friendly_exe.to_string_lossy().to_string()]),
+ ));
+ }
+ None
+}
+
+pub struct Homebrew<'a> {
+ pub environment: &'a dyn Environment,
+}
+
+impl Homebrew<'_> {
+ #[cfg(unix)]
+ pub fn with<'a>(environment: &'a impl Environment) -> Homebrew {
+ Homebrew { environment }
+ }
+}
+
+impl Locator for Homebrew<'_> {
+ fn resolve(&self, env: &PythonEnv) -> Option {
+ let python_regex = Regex::new(r"/(\d+\.\d+\.\d+)/").unwrap();
+ let exe = env.executable.clone();
+ let exe_file_name = exe.file_name()?;
+ let mut reported: HashSet = HashSet::new();
+ if exe.starts_with("/opt/homebrew/bin/python")
+ || exe.starts_with("/opt/homebrew/Cellar/python@")
+ || exe.starts_with("/opt/homebrew/opt/python@")
+ || exe.starts_with("/opt/homebrew/opt/python")
+ || exe.starts_with("/opt/homebrew/Frameworks/Python.framework/Versions/")
+ {
+ // Symlink - /opt/homebrew/bin/python3.12
+ // Symlink - /opt/homebrew/opt/python3/bin/python3.12
+ // Symlink - /opt/homebrew/Cellar/python@3.12/3.12.3/bin/python3.12
+ // Symlink - /opt/homebrew/opt/python@3.12/bin/python3.12
+ // Symlink - /opt/homebrew/Cellar/python@3.12/3.12.3/Frameworks/Python.framework/Versions/3.12/bin/python3.12
+ // Symlink - /opt/homebrew/Cellar/python@3.12/3.12.3/Frameworks/Python.framework/Versions/Current/bin/python3.12
+ // Symlink - /opt/homebrew/Frameworks/Python.framework/Versions/3.12/bin/python3.12
+ // Symlink - /opt/homebrew/Frameworks/Python.framework/Versions/Current/bin/python3.12
+ // Real exe - /opt/homebrew/Cellar/python@3.12/3.12.3/Frameworks/Python.framework/Versions/3.12/bin/python3.12
+ // SysPrefix- /opt/homebrew/opt/python@3.12/Frameworks/Python.framework/Versions/3.12
+ get_python_info(
+ &PathBuf::from("/opt/homebrew/bin").join(exe_file_name),
+ &mut reported,
+ &python_regex,
+ )
+ } else if exe.starts_with("/usr/local/bin/python")
+ || exe.starts_with("/usr/local/opt/python@")
+ || exe.starts_with("/usr/local/Cellar/python@")
+ {
+ // Symlink - /usr/local/bin/python3.8
+ // Symlink - /usr/local/opt/python@3.8/bin/python3.8
+ // Symlink - /usr/local/Cellar/python@3.8/3.8.19/bin/python3.8
+ // Real exe - /usr/local/Cellar/python@3.8/3.8.19/Frameworks/Python.framework/Versions/3.8/bin/python3.8
+ // SysPrefix- /usr/local/Cellar/python@3.8/3.8.19/Frameworks/Python.framework/Versions/3.8
+ get_python_info(
+ &PathBuf::from("/usr/local/bin").join(exe_file_name),
+ &mut reported,
+ &python_regex,
+ )
+ } else if exe.starts_with("/usr/local/bin/python")
+ || exe.starts_with("/home/linuxbrew/.linuxbrew/bin/python")
+ || exe.starts_with("/home/linuxbrew/.linuxbrew/opt/python@")
+ || exe.starts_with("/home/linuxbrew/.linuxbrew/Cellar/python")
+ {
+ // Symlink - /usr/local/bin/python3.12
+ // Symlink - /home/linuxbrew/.linuxbrew/bin/python3.12
+ // Symlink - /home/linuxbrew/.linuxbrew/opt/python@3.12/bin/python3.12
+ // Real exe - /home/linuxbrew/.linuxbrew/Cellar/python@3.12/3.12.3/bin/python3.12
+ // SysPrefix- /home/linuxbrew/.linuxbrew/Cellar/python@3.12/3.12.3
+
+ get_python_info(
+ &PathBuf::from("/usr/local/bin").join(exe_file_name),
+ &mut reported,
+ &python_regex,
+ )
+ } else {
+ None
+ }
+ }
+
+ fn find(&mut self) -> Option {
+ let homebrew_prefix_bin = get_homebrew_prefix_bin(self.environment)?;
+ let mut reported: HashSet = HashSet::new();
+ let python_regex = Regex::new(r"/(\d+\.\d+\.\d+)/").unwrap();
+ let mut environments: Vec = vec![];
+ for file in std::fs::read_dir(&homebrew_prefix_bin)
+ .ok()?
+ .filter_map(Result::ok)
+ {
+ // If this file name is `python3`, then ignore this for now.
+ // We would prefer to use `python3.x` instead of `python3`.
+ // That way its more consistent and future proof
+ if let Some(file_name) = file.file_name().to_str() {
+ if file_name.to_lowercase() == "python3" {
+ continue;
+ }
+ }
+
+ if let Some(env) = get_python_info(&file.path(), &mut reported, &python_regex) {
+ environments.push(env);
+ }
+ }
+
+ // Possible we do not have python3.12 or the like in bin directory
+ // & we have only python3, in that case we should add python3 to the list
+ if let Some(env) = get_python_info(
+ &homebrew_prefix_bin.join("python3"),
+ &mut reported,
+ &python_regex,
+ ) {
+ environments.push(env);
+ }
+
+ if environments.is_empty() {
+ None
+ } else {
+ Some(LocatorResult {
+ managers: vec![],
+ environments,
+ })
+ }
+ }
+}
diff --git a/native_locator/src/known.rs b/native_locator/src/known.rs
new file mode 100644
index 000000000000..bd9e7bc4de34
--- /dev/null
+++ b/native_locator/src/known.rs
@@ -0,0 +1,76 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+use std::{env, path::PathBuf};
+
+pub trait Environment {
+ fn get_user_home(&self) -> Option;
+ /**
+ * Only used in tests, this is the root `/`.
+ */
+ #[allow(dead_code)]
+ fn get_root(&self) -> Option;
+ fn get_env_var(&self, key: String) -> Option;
+ fn get_know_global_search_locations(&self) -> Vec;
+}
+
+pub struct EnvironmentApi {}
+
+#[cfg(windows)]
+impl Environment for EnvironmentApi {
+ fn get_user_home(&self) -> Option {
+ get_user_home()
+ }
+ fn get_root(&self) -> Option {
+ None
+ }
+ fn get_env_var(&self, key: String) -> Option {
+ get_env_var(key)
+ }
+ fn get_know_global_search_locations(&self) -> Vec {
+ vec![]
+ }
+}
+
+#[cfg(unix)]
+impl Environment for EnvironmentApi {
+ fn get_user_home(&self) -> Option {
+ get_user_home()
+ }
+ fn get_root(&self) -> Option {
+ None
+ }
+ fn get_env_var(&self, key: String) -> Option {
+ get_env_var(key)
+ }
+ fn get_know_global_search_locations(&self) -> Vec {
+ vec![
+ PathBuf::from("/usr/bin"),
+ PathBuf::from("/usr/local/bin"),
+ PathBuf::from("/bin"),
+ PathBuf::from("/home/bin"),
+ PathBuf::from("/sbin"),
+ PathBuf::from("/usr/sbin"),
+ PathBuf::from("/usr/local/sbin"),
+ PathBuf::from("/home/sbin"),
+ PathBuf::from("/opt"),
+ PathBuf::from("/opt/bin"),
+ PathBuf::from("/opt/sbin"),
+ PathBuf::from("/opt/homebrew/bin"),
+ ]
+ }
+}
+
+fn get_user_home() -> Option {
+ let home = env::var("HOME").or_else(|_| env::var("USERPROFILE"));
+ match home {
+ Ok(home) => Some(PathBuf::from(home)),
+ Err(_) => None,
+ }
+}
+
+fn get_env_var(key: String) -> Option {
+ match env::var(key) {
+ Ok(path) => Some(path),
+ Err(_) => None,
+ }
+}
diff --git a/native_locator/src/lib.rs b/native_locator/src/lib.rs
new file mode 100644
index 000000000000..ba353c71ce12
--- /dev/null
+++ b/native_locator/src/lib.rs
@@ -0,0 +1,18 @@
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License.
+
+pub mod messaging;
+pub mod utils;
+pub mod common_python;
+pub mod logging;
+pub mod conda;
+pub mod known;
+pub mod pyenv;
+pub mod global_virtualenvs;
+pub mod virtualenvwrapper;
+pub mod pipenv;
+pub mod virtualenv;
+pub mod venv;
+pub mod locator;
+pub mod windows_registry;
+pub mod windows_store;
diff --git a/native_locator/src/locator.rs b/native_locator/src/locator.rs
new file mode 100644
index 000000000000..a318c102230a
--- /dev/null
+++ b/native_locator/src/locator.rs
@@ -0,0 +1,27 @@
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License.
+
+use crate::{
+ messaging::{EnvManager, PythonEnvironment},
+ utils::PythonEnv,
+};
+
+#[derive(Debug, Clone)]
+pub struct LocatorResult {
+ pub managers: Vec,
+ pub environments: Vec,
+}
+
+pub trait Locator {
+ /**
+ * Given a Python environment, this will convert it to a PythonEnvironment that can be supported by this locator.
+ * If an environment is not supported by this locator, this will return None.
+ *
+ * I.e. use this to test whether an environment is of a specific type.
+ */
+ fn resolve(&self, env: &PythonEnv) -> Option;
+ /**
+ * Finds all environments specific to this locator.
+ */
+ fn find(&mut self) -> Option;
+}
diff --git a/native_locator/src/logging.rs b/native_locator/src/logging.rs
new file mode 100644
index 000000000000..66532ff67eff
--- /dev/null
+++ b/native_locator/src/logging.rs
@@ -0,0 +1,41 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+use serde::{Deserialize, Serialize};
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum LogLevel {
+ #[serde(rename = "debug")]
+ Debug,
+ #[serde(rename = "info")]
+ Info,
+ #[serde(rename = "warning")]
+ Warning,
+ #[serde(rename = "error")]
+ Error,
+}
+
+#[derive(Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct Log {
+ pub message: String,
+ pub level: LogLevel,
+}
+
+#[derive(Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct LogMessage {
+ pub jsonrpc: String,
+ pub method: String,
+ pub params: Log,
+}
+
+impl LogMessage {
+ pub fn new(message: String, level: LogLevel) -> Self {
+ Self {
+ jsonrpc: "2.0".to_string(),
+ method: "log".to_string(),
+ params: Log { message, level },
+ }
+ }
+}
diff --git a/native_locator/src/main.rs b/native_locator/src/main.rs
new file mode 100644
index 000000000000..4964b09cac40
--- /dev/null
+++ b/native_locator/src/main.rs
@@ -0,0 +1,129 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+use crate::messaging::initialize_logger;
+use global_virtualenvs::list_global_virtual_envs;
+use known::EnvironmentApi;
+use locator::Locator;
+use log::LevelFilter;
+use messaging::{create_dispatcher, JsonRpcDispatcher, MessageDispatcher};
+use std::time::SystemTime;
+use utils::PythonEnv;
+
+mod common_python;
+mod conda;
+mod global_virtualenvs;
+mod homebrew;
+mod known;
+mod locator;
+mod logging;
+mod messaging;
+mod pipenv;
+mod pyenv;
+mod utils;
+mod venv;
+mod virtualenv;
+mod virtualenvwrapper;
+mod windows_registry;
+mod windows_store;
+
+fn main() {
+ let environment = EnvironmentApi {};
+ initialize_logger(LevelFilter::Trace);
+
+ log::info!("Starting Native Locator");
+ let now = SystemTime::now();
+ let mut dispatcher = create_dispatcher();
+
+ let virtualenv_locator = virtualenv::VirtualEnv::new();
+ let venv_locator = venv::Venv::new();
+ let mut virtualenvwrapper = virtualenvwrapper::VirtualEnvWrapper::with(&environment);
+ let pipenv_locator = pipenv::PipEnv::new();
+ let mut path_locator = common_python::PythonOnPath::with(&environment);
+ let mut conda_locator = conda::Conda::with(&environment);
+
+ #[cfg(unix)]
+ let mut homebrew_locator = homebrew::Homebrew::with(&environment);
+ #[cfg(windows)]
+ let mut windows_store = windows_store::WindowsStore::with(&environment);
+ #[cfg(windows)]
+ let mut windows_registry = windows_registry::WindowsRegistry::with(&mut conda_locator);
+
+ // Step 1: These environments take precedence over all others.
+ // As they are very specific and guaranteed to be specific type.
+ #[cfg(windows)]
+ find_environments(&mut windows_store, &mut dispatcher);
+ #[cfg(windows)]
+ find_environments(&mut windows_registry, &mut dispatcher);
+ let mut pyenv_locator = pyenv::PyEnv::with(&environment, &mut conda_locator);
+ find_environments(&mut virtualenvwrapper, &mut dispatcher);
+ find_environments(&mut pyenv_locator, &mut dispatcher);
+ #[cfg(unix)]
+ find_environments(&mut homebrew_locator, &mut dispatcher);
+ find_environments(&mut conda_locator, &mut dispatcher);
+
+ // Step 2: Search in some global locations for virtual envs.
+ for env in list_global_virtual_envs(&environment).iter() {
+ if dispatcher.was_environment_reported(&env) {
+ continue;
+ }
+
+ // First must be homebrew, as it is the most specific and supports symlinks
+ #[cfg(unix)]
+ let homebrew_result = resolve_environment(&homebrew_locator, env, &mut dispatcher);
+ #[cfg(unix)]
+ if homebrew_result {
+ continue;
+ }
+
+ let _ = // Pipeenv before virtualenvwrapper as it is more specific.
+ // Because pipenv environments are also virtualenvwrapper environments.
+ resolve_environment(&pipenv_locator, env, &mut dispatcher)
+ // Before venv, as all venvs are also virtualenvwrapper environments.
+ || resolve_environment(&virtualenvwrapper, env, &mut dispatcher)
+ // Before virtualenv as this is more specific.
+ // All venvs are also virtualenvs environments.
+ || resolve_environment(&venv_locator, env, &mut dispatcher)
+ || resolve_environment(&virtualenv_locator, env, &mut dispatcher);
+ }
+
+ // Step 3: Finally find in the current PATH variable
+ find_environments(&mut path_locator, &mut dispatcher);
+
+ match now.elapsed() {
+ Ok(elapsed) => {
+ log::info!("Native Locator took {} milliseconds.", elapsed.as_millis());
+ }
+ Err(e) => {
+ log::error!("Error getting elapsed time: {:?}", e);
+ }
+ }
+
+ dispatcher.exit();
+}
+
+fn resolve_environment(
+ locator: &dyn Locator,
+ env: &PythonEnv,
+ dispatcher: &mut JsonRpcDispatcher,
+) -> bool {
+ if let Some(env) = locator.resolve(env) {
+ dispatcher.report_environment(env);
+ return true;
+ }
+ false
+}
+
+fn find_environments(locator: &mut dyn Locator, dispatcher: &mut JsonRpcDispatcher) -> Option<()> {
+ if let Some(result) = locator.find() {
+ result
+ .environments
+ .iter()
+ .for_each(|e| dispatcher.report_environment(e.clone()));
+ result
+ .managers
+ .iter()
+ .for_each(|m| dispatcher.report_environment_manager(m.clone()));
+ }
+ Some(())
+}
diff --git a/native_locator/src/messaging.rs b/native_locator/src/messaging.rs
new file mode 100644
index 000000000000..808da631f455
--- /dev/null
+++ b/native_locator/src/messaging.rs
@@ -0,0 +1,297 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+use crate::{
+ logging::{LogLevel, LogMessage},
+ utils::{get_environment_key, get_environment_manager_key, PythonEnv},
+};
+use env_logger::Builder;
+use log::LevelFilter;
+use serde::{Deserialize, Serialize};
+use std::{collections::HashSet, path::PathBuf, time::UNIX_EPOCH};
+
+pub trait MessageDispatcher {
+ fn was_environment_reported(&self, env: &PythonEnv) -> bool;
+ fn report_environment_manager(&mut self, env: EnvManager) -> ();
+ fn report_environment(&mut self, env: PythonEnvironment) -> ();
+ fn exit(&mut self) -> ();
+}
+
+#[derive(Serialize, Deserialize, Copy, Clone)]
+#[serde(rename_all = "camelCase")]
+#[derive(Debug)]
+pub enum EnvManagerType {
+ Conda,
+ Pyenv,
+}
+
+#[derive(Serialize, Deserialize, Clone)]
+#[serde(rename_all = "camelCase")]
+#[derive(Debug)]
+pub struct EnvManager {
+ pub executable_path: PathBuf,
+ pub version: Option,
+ pub tool: EnvManagerType,
+ pub company: Option,
+ pub company_display_name: Option,
+}
+
+impl EnvManager {
+ pub fn new(executable_path: PathBuf, version: Option, tool: EnvManagerType) -> Self {
+ Self {
+ executable_path,
+ version,
+ tool,
+ company: None,
+ company_display_name: None,
+ }
+ }
+}
+
+#[derive(Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+#[derive(Debug)]
+pub struct EnvManagerMessage {
+ pub jsonrpc: String,
+ pub method: String,
+ pub params: EnvManager,
+}
+
+impl EnvManagerMessage {
+ pub fn new(params: EnvManager) -> Self {
+ Self {
+ jsonrpc: "2.0".to_string(),
+ method: "envManager".to_string(),
+ params,
+ }
+ }
+}
+
+#[derive(Serialize, Deserialize, Clone)]
+#[serde(rename_all = "camelCase")]
+#[derive(Debug)]
+pub enum PythonEnvironmentCategory {
+ System,
+ Homebrew,
+ Conda,
+ Pyenv,
+ PyenvVirtualEnv,
+ WindowsStore,
+ WindowsRegistry,
+ Pipenv,
+ VirtualEnvWrapper,
+ Venv,
+ VirtualEnv,
+}
+
+#[derive(Serialize, Deserialize, Clone)]
+#[serde(rename_all = "camelCase")]
+#[derive(Debug)]
+pub enum Architecture {
+ X64,
+ X86,
+}
+
+#[derive(Serialize, Deserialize, Clone)]
+#[serde(rename_all = "camelCase")]
+#[derive(Debug)]
+pub struct PythonEnvironment {
+ pub display_name: Option,
+ pub name: Option,
+ pub python_executable_path: Option,
+ pub category: PythonEnvironmentCategory,
+ pub version: Option,
+ pub env_path: Option,
+ pub env_manager: Option,
+ pub python_run_command: Option>,
+ /**
+ * The project path for the Pipenv environment.
+ */
+ pub project_path: Option,
+ pub arch: Option,
+ pub symlinks: Option>,
+ pub creation_time: Option,
+ pub modified_time: Option,
+ pub company: Option,
+ pub company_display_name: Option,
+}
+
+impl Default for PythonEnvironment {
+ fn default() -> Self {
+ Self {
+ display_name: None,
+ name: None,
+ python_executable_path: None,
+ category: PythonEnvironmentCategory::System,
+ version: None,
+ env_path: None,
+ env_manager: None,
+ python_run_command: None,
+ project_path: None,
+ arch: None,
+ symlinks: None,
+ creation_time: None,
+ modified_time: None,
+ company: None,
+ company_display_name: None,
+ }
+ }
+}
+
+impl PythonEnvironment {
+ pub fn new(
+ display_name: Option,
+ name: Option,
+ python_executable_path: Option,
+ category: PythonEnvironmentCategory,
+ version: Option,
+ env_path: Option,
+ env_manager: Option,
+ python_run_command: Option>,
+ ) -> Self {
+ Self {
+ display_name,
+ name,
+ python_executable_path,
+ category,
+ version,
+ env_path,
+ env_manager,
+ python_run_command,
+ project_path: None,
+ arch: None,
+ symlinks: None,
+ creation_time: None,
+ modified_time: None,
+ company: None,
+ company_display_name: None,
+ }
+ }
+}
+
+#[derive(Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+#[derive(Debug)]
+pub struct PythonEnvironmentMessage {
+ pub jsonrpc: String,
+ pub method: String,
+ pub params: PythonEnvironment,
+}
+
+impl PythonEnvironmentMessage {
+ pub fn new(params: PythonEnvironment) -> Self {
+ Self {
+ jsonrpc: "2.0".to_string(),
+ method: "pythonEnvironment".to_string(),
+ params,
+ }
+ }
+}
+
+#[derive(Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+#[derive(Debug)]
+pub struct ExitMessage {
+ pub jsonrpc: String,
+ pub method: String,
+ pub params: Option<()>,
+}
+
+impl ExitMessage {
+ pub fn new() -> Self {
+ Self {
+ jsonrpc: "2.0".to_string(),
+ method: "exit".to_string(),
+ params: None,
+ }
+ }
+}
+
+pub struct JsonRpcDispatcher {
+ pub reported_managers: HashSet,
+ pub reported_environments: HashSet,
+}
+pub fn send_message(message: T) -> () {
+ let message = serde_json::to_string(&message).unwrap();
+ print!(
+ "Content-Length: {}\r\nContent-Type: application/vscode-jsonrpc; charset=utf-8\r\n\r\n{}",
+ message.len(),
+ message
+ );
+}
+
+pub fn initialize_logger(log_level: LevelFilter) {
+ Builder::new()
+ .format(|_, record| {
+ let level = match record.level() {
+ log::Level::Debug => LogLevel::Debug,
+ log::Level::Error => LogLevel::Error,
+ log::Level::Info => LogLevel::Info,
+ log::Level::Warn => LogLevel::Warning,
+ _ => LogLevel::Debug,
+ };
+ send_message(LogMessage::new(
+ format!("{}", record.args()).to_string(),
+ level,
+ ));
+ Ok(())
+ })
+ .filter(None, log_level)
+ .init();
+}
+
+impl JsonRpcDispatcher {}
+impl MessageDispatcher for JsonRpcDispatcher {
+ fn was_environment_reported(&self, env: &PythonEnv) -> bool {
+ if let Some(key) = env.executable.as_os_str().to_str() {
+ return self.reported_environments.contains(key);
+ }
+ false
+ }
+
+ fn report_environment_manager(&mut self, env: EnvManager) -> () {
+ let key = get_environment_manager_key(&env);
+ if !self.reported_managers.contains(&key) {
+ self.reported_managers.insert(key);
+ send_message(EnvManagerMessage::new(env));
+ }
+ }
+ fn report_environment(&mut self, env: PythonEnvironment) -> () {
+ if let Some(key) = get_environment_key(&env) {
+ if let Some(ref manager) = env.env_manager {
+ self.report_environment_manager(manager.clone());
+ }
+ if !self.reported_environments.contains(&key) {
+ self.reported_environments.insert(key);
+
+ // Get the creation and modified times.
+ let mut env = env.clone();
+ if let Some(ref exe) = env.python_executable_path {
+ if let Ok(metadata) = exe.metadata() {
+ if let Ok(ctime) = metadata.created() {
+ if let Ok(ctime) = ctime.duration_since(UNIX_EPOCH) {
+ env.creation_time = Some(ctime.as_millis());
+ }
+ }
+ if let Ok(mtime) = metadata.modified() {
+ if let Ok(mtime) = mtime.duration_since(UNIX_EPOCH) {
+ env.modified_time = Some(mtime.as_millis());
+ }
+ }
+ }
+ }
+ send_message(PythonEnvironmentMessage::new(env));
+ }
+ }
+ }
+ fn exit(&mut self) -> () {
+ send_message(ExitMessage::new());
+ }
+}
+
+pub fn create_dispatcher() -> JsonRpcDispatcher {
+ JsonRpcDispatcher {
+ reported_managers: HashSet::new(),
+ reported_environments: HashSet::new(),
+ }
+}
diff --git a/native_locator/src/pipenv.rs b/native_locator/src/pipenv.rs
new file mode 100644
index 000000000000..cb49c1c6ef33
--- /dev/null
+++ b/native_locator/src/pipenv.rs
@@ -0,0 +1,60 @@
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License.
+
+use crate::locator::{Locator, LocatorResult};
+use crate::messaging::PythonEnvironment;
+use crate::utils::PythonEnv;
+use std::fs;
+use std::path::PathBuf;
+
+fn get_pipenv_project(env: &PythonEnv) -> Option {
+ let project_file = env.path.clone()?.join(".project");
+ if let Ok(contents) = fs::read_to_string(project_file) {
+ let project_folder = PathBuf::from(contents.trim().to_string());
+ if project_folder.exists() {
+ return Some(project_folder);
+ }
+ }
+ None
+}
+
+fn is_pipenv(env: &PythonEnv) -> bool {
+ // If we have a Pipfile, then this is a pipenv environment.
+ // Else likely a virtualenvwrapper or the like.
+ if let Some(project_path) = get_pipenv_project(env) {
+ if project_path.join("Pipfile").exists() {
+ return true;
+ }
+ }
+ false
+}
+
+pub struct PipEnv {}
+
+impl PipEnv {
+ pub fn new() -> PipEnv {
+ PipEnv {}
+ }
+}
+
+impl Locator for PipEnv {
+ fn resolve(&self, env: &PythonEnv) -> Option {
+ if !is_pipenv(env) {
+ return None;
+ }
+ let project_path = get_pipenv_project(env)?;
+ Some(PythonEnvironment {
+ python_executable_path: Some(env.executable.clone()),
+ category: crate::messaging::PythonEnvironmentCategory::Pipenv,
+ version: env.version.clone(),
+ env_path: env.path.clone(),
+ python_run_command: Some(vec![env.executable.to_str().unwrap().to_string()]),
+ project_path: Some(project_path),
+ ..Default::default()
+ })
+ }
+
+ fn find(&mut self) -> Option {
+ None
+ }
+}
diff --git a/native_locator/src/pyenv.rs b/native_locator/src/pyenv.rs
new file mode 100644
index 000000000000..e87729de5eda
--- /dev/null
+++ b/native_locator/src/pyenv.rs
@@ -0,0 +1,290 @@
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License.
+
+use crate::conda::CondaLocator;
+use crate::known;
+use crate::known::Environment;
+use crate::locator::Locator;
+use crate::locator::LocatorResult;
+use crate::messaging;
+use crate::messaging::EnvManager;
+use crate::messaging::EnvManagerType;
+use crate::messaging::PythonEnvironment;
+use crate::utils::find_and_parse_pyvenv_cfg;
+use crate::utils::find_python_binary_path;
+use crate::utils::PythonEnv;
+use regex::Regex;
+use std::fs;
+use std::path::PathBuf;
+
+#[cfg(windows)]
+fn get_home_pyenv_dir(environment: &dyn known::Environment) -> Option {
+ let home = environment.get_user_home()?;
+ Some(PathBuf::from(home).join(".pyenv").join("pyenv-win"))
+}
+
+#[cfg(unix)]
+fn get_home_pyenv_dir(environment: &dyn known::Environment) -> Option {
+ let home = environment.get_user_home()?;
+ Some(PathBuf::from(home).join(".pyenv"))
+}
+
+fn get_binary_from_known_paths(environment: &dyn known::Environment) -> Option {
+ for known_path in environment.get_know_global_search_locations() {
+ let bin = known_path.join("pyenv");
+ if bin.exists() {
+ return Some(bin);
+ }
+ }
+ None
+}
+
+fn get_pyenv_dir(environment: &dyn known::Environment) -> Option {
+ // Check if the pyenv environment variables exist: PYENV on Windows, PYENV_ROOT on Unix.
+ // They contain the path to pyenv's installation folder.
+ // If they don't exist, use the default path: ~/.pyenv/pyenv-win on Windows, ~/.pyenv on Unix.
+ // If the interpreter path starts with the path to the pyenv folder, then it is a pyenv environment.
+ // See https://github.com/pyenv/pyenv#locating-the-python-installation for general usage,
+ // And https://github.com/pyenv-win/pyenv-win for Windows specifics.
+
+ match environment.get_env_var("PYENV_ROOT".to_string()) {
+ Some(dir) => Some(PathBuf::from(dir)),
+ None => match environment.get_env_var("PYENV".to_string()) {
+ Some(dir) => Some(PathBuf::from(dir)),
+ None => get_home_pyenv_dir(environment),
+ },
+ }
+}
+
+fn get_pyenv_binary(environment: &dyn known::Environment) -> Option {
+ let dir = get_pyenv_dir(environment)?;
+ let exe = PathBuf::from(dir).join("bin").join("pyenv");
+ if fs::metadata(&exe).is_ok() {
+ Some(exe)
+ } else {
+ get_binary_from_known_paths(environment)
+ }
+}
+
+fn get_version(folder_name: &String) -> Option {
+ // Stable Versions = like 3.10.10
+ let python_regex = Regex::new(r"^(\d+\.\d+\.\d+)$").unwrap();
+ match python_regex.captures(&folder_name) {
+ Some(captures) => match captures.get(1) {
+ Some(version) => Some(version.as_str().to_string()),
+ None => None,
+ },
+ None => {
+ // Dev Versions = like 3.10-dev
+ let python_regex = Regex::new(r"^(\d+\.\d+-dev)$").unwrap();
+ match python_regex.captures(&folder_name) {
+ Some(captures) => match captures.get(1) {
+ Some(version) => Some(version.as_str().to_string()),
+ None => None,
+ },
+ None => {
+ // Alpha, rc Versions = like 3.10.0a3
+ let python_regex = Regex::new(r"^(\d+\.\d+.\d+\w\d+)").unwrap();
+ match python_regex.captures(&folder_name) {
+ Some(captures) => match captures.get(1) {
+ Some(version) => Some(version.as_str().to_string()),
+ None => None,
+ },
+ None => {
+ // win32 versions, rc Versions = like 3.11.0a-win32
+ let python_regex = Regex::new(r"^(\d+\.\d+.\d+\w\d+)-win32").unwrap();
+ match python_regex.captures(&folder_name) {
+ Some(captures) => match captures.get(1) {
+ Some(version) => Some(version.as_str().to_string()),
+ None => None,
+ },
+ None => None,
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+fn get_pure_python_environment(
+ executable: &PathBuf,
+ path: &PathBuf,
+ manager: &Option,
+) -> Option {
+ let file_name = path.file_name()?.to_string_lossy().to_string();
+ let version = get_version(&file_name)?;
+ let mut env = messaging::PythonEnvironment::new(
+ None,
+ None,
+ Some(executable.clone()),
+ messaging::PythonEnvironmentCategory::Pyenv,
+ Some(version),
+ Some(path.clone()),
+ manager.clone(),
+ Some(vec![executable
+ .clone()
+ .into_os_string()
+ .into_string()
+ .unwrap()]),
+ );
+ if file_name.ends_with("-win32") {
+ env.arch = Some(messaging::Architecture::X86);
+ }
+
+ Some(env)
+}
+
+fn is_conda_environment(path: &PathBuf) -> bool {
+ if let Some(name) = path.file_name() {
+ let name = name.to_ascii_lowercase().to_string_lossy().to_string();
+ return name.starts_with("anaconda")
+ || name.starts_with("miniconda")
+ || name.starts_with("miniforge");
+ }
+ false
+}
+
+fn get_virtual_env_environment(
+ executable: &PathBuf,
+ path: &PathBuf,
+ manager: &Option,
+) -> Option {
+ let pyenv_cfg = find_and_parse_pyvenv_cfg(executable)?;
+ let folder_name = path.file_name().unwrap().to_string_lossy().to_string();
+ Some(messaging::PythonEnvironment::new(
+ None,
+ Some(folder_name),
+ Some(executable.clone()),
+ messaging::PythonEnvironmentCategory::PyenvVirtualEnv,
+ Some(pyenv_cfg.version),
+ Some(path.clone()),
+ manager.clone(),
+ Some(vec![executable
+ .clone()
+ .into_os_string()
+ .into_string()
+ .unwrap()]),
+ ))
+}
+
+pub fn list_pyenv_environments(
+ manager: &Option,
+ environment: &dyn known::Environment,
+ conda_locator: &mut dyn CondaLocator,
+) -> Option> {
+ let pyenv_dir = get_pyenv_dir(environment)?;
+ let mut envs: Vec = vec![];
+ let versions_dir = PathBuf::from(&pyenv_dir)
+ .join("versions")
+ .into_os_string()
+ .into_string()
+ .ok()?;
+
+ for entry in fs::read_dir(&versions_dir).ok()?.filter_map(Result::ok) {
+ let path = entry.path();
+ if !path.is_dir() {
+ continue;
+ }
+ if let Some(executable) = find_python_binary_path(&path) {
+ if let Some(env) = get_pure_python_environment(&executable, &path, manager) {
+ envs.push(env);
+ } else if let Some(env) = get_virtual_env_environment(&executable, &path, manager) {
+ envs.push(env);
+ } else if is_conda_environment(&path) {
+ if let Some(result) = conda_locator.find_in(&path) {
+ result.environments.iter().for_each(|e| {
+ envs.push(e.clone());
+ });
+ }
+ }
+ }
+ }
+
+ Some(envs)
+}
+
+#[cfg(windows)]
+fn get_pyenv_manager_version(
+ _pyenv_binary_path: &PathBuf,
+ environment: &dyn known::Environment,
+) -> Option {
+ // In windows, the version is stored in the `.pyenv/.version` file
+ let pyenv_dir = get_pyenv_dir(environment)?;
+ let mut version_file = PathBuf::from(&pyenv_dir).join(".version");
+ if !version_file.exists() {
+ // We might have got the path `~/.pyenv/pyenv-win`
+ version_file = pyenv_dir.parent()?.join(".version");
+ if !version_file.exists() {
+ return None;
+ }
+ }
+ let version = fs::read_to_string(version_file).ok()?;
+ let version_regex = Regex::new(r"(\d+\.\d+\.\d+)").unwrap();
+ let captures = version_regex.captures(&version)?.get(1)?;
+ Some(captures.as_str().to_string())
+}
+
+#[cfg(unix)]
+fn get_pyenv_manager_version(
+ pyenv_binary_path: &PathBuf,
+ _environment: &dyn known::Environment,
+) -> Option {
+ // Look for version in path
+ // Sample /opt/homebrew/Cellar/pyenv/2.4.0/libexec/pyenv
+ if !pyenv_binary_path.to_string_lossy().contains("/pyenv/") {
+ return None;
+ }
+ // Find the real path, generally we have a symlink.
+ let real_path = fs::read_link(pyenv_binary_path)
+ .ok()?
+ .to_string_lossy()
+ .to_string();
+ let version_regex = Regex::new(r"pyenv/(\d+\.\d+\.\d+)/").unwrap();
+ let captures = version_regex.captures(&real_path)?.get(1)?;
+ Some(captures.as_str().to_string())
+}
+
+pub struct PyEnv<'a> {
+ pub environment: &'a dyn Environment,
+ pub conda_locator: &'a mut dyn CondaLocator,
+}
+
+impl PyEnv<'_> {
+ pub fn with<'a>(
+ environment: &'a impl Environment,
+ conda_locator: &'a mut impl CondaLocator,
+ ) -> PyEnv<'a> {
+ PyEnv {
+ environment,
+ conda_locator,
+ }
+ }
+}
+
+impl Locator for PyEnv<'_> {
+ fn resolve(&self, _env: &PythonEnv) -> Option {
+ // We will find everything in gather
+ None
+ }
+
+ fn find(&mut self) -> Option {
+ let pyenv_binary = get_pyenv_binary(self.environment)?;
+ let version = get_pyenv_manager_version(&pyenv_binary, self.environment);
+ let manager = messaging::EnvManager::new(pyenv_binary, version, EnvManagerType::Pyenv);
+ let mut environments: Vec = vec![];
+ if let Some(envs) =
+ list_pyenv_environments(&Some(manager.clone()), self.environment, self.conda_locator)
+ {
+ for env in envs {
+ environments.push(env);
+ }
+ }
+
+ Some(LocatorResult {
+ managers: vec![manager],
+ environments,
+ })
+ }
+}
diff --git a/native_locator/src/utils.rs b/native_locator/src/utils.rs
new file mode 100644
index 000000000000..d9a30c3a7f8a
--- /dev/null
+++ b/native_locator/src/utils.rs
@@ -0,0 +1,148 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+use crate::messaging::{EnvManager, PythonEnvironment};
+use regex::Regex;
+use std::{
+ fs,
+ path::{Path, PathBuf},
+};
+
+#[derive(Debug)]
+pub struct PythonEnv {
+ pub executable: PathBuf,
+ pub path: Option,
+ pub version: Option,
+}
+
+impl PythonEnv {
+ pub fn new(executable: PathBuf, path: Option, version: Option) -> Self {
+ Self {
+ executable,
+ path,
+ version,
+ }
+ }
+}
+
+#[derive(Debug)]
+pub struct PyEnvCfg {
+ pub version: String,
+}
+
+const PYVENV_CONFIG_FILE: &str = "pyvenv.cfg";
+
+pub fn find_pyvenv_config_path(python_executable: &PathBuf) -> Option {
+ // Check if the pyvenv.cfg file is in the parent directory relative to the interpreter.
+ // env
+ // |__ pyvenv.cfg <--- check if this file exists
+ // |__ bin or Scripts
+ // |__ python <--- interpreterPath
+ let cfg = python_executable.parent()?.join(PYVENV_CONFIG_FILE);
+ if fs::metadata(&cfg).is_ok() {
+ return Some(cfg);
+ }
+
+ // Check if the pyvenv.cfg file is in the directory as the interpreter.
+ // env
+ // |__ pyvenv.cfg <--- check if this file exists
+ // |__ python <--- interpreterPath
+ let cfg = python_executable
+ .parent()?
+ .parent()?
+ .join(PYVENV_CONFIG_FILE);
+ if fs::metadata(&cfg).is_ok() {
+ return Some(cfg);
+ }
+
+ None
+}
+
+pub fn find_and_parse_pyvenv_cfg(python_executable: &PathBuf) -> Option {
+ let cfg = find_pyvenv_config_path(&PathBuf::from(python_executable))?;
+ if !fs::metadata(&cfg).is_ok() {
+ return None;
+ }
+
+ let contents = fs::read_to_string(&cfg).ok()?;
+ let version_regex = Regex::new(r"^version\s*=\s*(\d+\.\d+\.\d+)$").unwrap();
+ let version_info_regex = Regex::new(r"^version_info\s*=\s*(\d+\.\d+\.\d+.*)$").unwrap();
+ for line in contents.lines() {
+ if !line.contains("version") {
+ continue;
+ }
+ if let Some(captures) = version_regex.captures(line) {
+ if let Some(value) = captures.get(1) {
+ return Some(PyEnvCfg {
+ version: value.as_str().to_string(),
+ });
+ }
+ }
+ if let Some(captures) = version_info_regex.captures(line) {
+ if let Some(value) = captures.get(1) {
+ return Some(PyEnvCfg {
+ version: value.as_str().to_string(),
+ });
+ }
+ }
+ }
+ None
+}
+
+pub fn get_version(python_executable: &PathBuf) -> Option {
+ if let Some(parent_folder) = python_executable.parent() {
+ if let Some(pyenv_cfg) = find_and_parse_pyvenv_cfg(&parent_folder.to_path_buf()) {
+ return Some(pyenv_cfg.version);
+ }
+ }
+ None
+}
+
+pub fn find_python_binary_path(env_path: &Path) -> Option {
+ let python_bin_name = if cfg!(windows) {
+ "python.exe"
+ } else {
+ "python"
+ };
+ let path_1 = env_path.join("bin").join(python_bin_name);
+ let path_2 = env_path.join("Scripts").join(python_bin_name);
+ let path_3 = env_path.join(python_bin_name);
+ let paths = vec![path_1, path_2, path_3];
+ paths.into_iter().find(|path| path.exists())
+}
+
+pub fn list_python_environments(path: &PathBuf) -> Option> {
+ let mut python_envs: Vec = vec![];
+ for venv_dir in fs::read_dir(path).ok()? {
+ if let Ok(venv_dir) = venv_dir {
+ let venv_dir = venv_dir.path();
+ if !venv_dir.is_dir() {
+ continue;
+ }
+ if let Some(executable) = find_python_binary_path(&venv_dir) {
+ python_envs.push(PythonEnv::new(
+ executable.clone(),
+ Some(venv_dir),
+ get_version(&executable),
+ ));
+ }
+ }
+ }
+
+ Some(python_envs)
+}
+
+pub fn get_environment_key(env: &PythonEnvironment) -> Option {
+ if let Some(ref path) = env.python_executable_path {
+ return Some(path.to_string_lossy().to_string());
+ }
+ if let Some(ref path) = env.env_path {
+ return Some(path.to_string_lossy().to_string());
+ }
+
+ None
+}
+
+pub fn get_environment_manager_key(env: &EnvManager) -> String {
+ return env.executable_path.to_string_lossy().to_string();
+}
diff --git a/native_locator/src/venv.rs b/native_locator/src/venv.rs
new file mode 100644
index 000000000000..0df22263e0f3
--- /dev/null
+++ b/native_locator/src/venv.rs
@@ -0,0 +1,54 @@
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License.
+
+use crate::{
+ locator::{Locator, LocatorResult},
+ messaging::PythonEnvironment,
+ utils::{self, PythonEnv},
+};
+
+pub fn is_venv(env: &PythonEnv) -> bool {
+ // env path cannot be empty.
+ if env.path.is_none() {
+ return false;
+ }
+ return utils::find_pyvenv_config_path(&env.executable).is_some();
+}
+pub struct Venv {}
+
+impl Venv {
+ pub fn new() -> Venv {
+ Venv {}
+ }
+}
+
+impl Locator for Venv {
+ fn resolve(&self, env: &PythonEnv) -> Option {
+ if is_venv(&env) {
+ return Some(PythonEnvironment {
+ name: Some(
+ env.path
+ .clone()
+ .expect("env.path can never be empty for venvs")
+ .file_name()
+ .unwrap()
+ .to_string_lossy()
+ .to_string(),
+ ),
+ python_executable_path: Some(env.executable.clone()),
+ version: env.version.clone(),
+ category: crate::messaging::PythonEnvironmentCategory::Venv,
+ env_path: env.path.clone(),
+ python_run_command: Some(vec![env.executable.to_str().unwrap().to_string()]),
+ ..Default::default()
+ });
+ }
+ None
+ }
+
+ fn find(&mut self) -> Option {
+ // There are no common global locations for virtual environments.
+ // We expect the user of this class to call `is_compatible`
+ None
+ }
+}
diff --git a/native_locator/src/virtualenv.rs b/native_locator/src/virtualenv.rs
new file mode 100644
index 000000000000..9532d46faa73
--- /dev/null
+++ b/native_locator/src/virtualenv.rs
@@ -0,0 +1,85 @@
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License.
+
+use crate::locator::{Locator, LocatorResult};
+use crate::messaging::PythonEnvironment;
+use crate::utils::PythonEnv;
+
+pub fn is_virtualenv(env: &PythonEnv) -> bool {
+ if env.path.is_none() {
+ return false;
+ }
+ if let Some(file_path) = env.executable.parent() {
+ // Check if there are any activate.* files in the same directory as the interpreter.
+ //
+ // env
+ // |__ activate, activate.* <--- check if any of these files exist
+ // |__ python <--- interpreterPath
+
+ // if let Some(parent_path) = PathBuf::from(env.)
+ // const directory = path.dirname(interpreterPath);
+ // const files = await fsapi.readdir(directory);
+ // const regex = /^activate(\.([A-z]|\d)+)?$/i;
+ if file_path.join("activate").exists() || file_path.join("activate.bat").exists() {
+ return true;
+ }
+
+ // Support for activate.ps, etc.
+ match std::fs::read_dir(file_path) {
+ Ok(files) => {
+ for file in files {
+ if let Ok(file) = file {
+ if let Some(file_name) = file.file_name().to_str() {
+ if file_name.starts_with("activate") {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+ Err(_) => return false,
+ };
+ }
+
+ false
+}
+
+pub struct VirtualEnv {}
+
+impl VirtualEnv {
+ pub fn new() -> VirtualEnv {
+ VirtualEnv {}
+ }
+}
+
+impl Locator for VirtualEnv {
+ fn resolve(&self, env: &PythonEnv) -> Option {
+ if is_virtualenv(env) {
+ return Some(PythonEnvironment {
+ name: Some(
+ env.path
+ .clone()
+ .expect("env.path can never be empty for virtualenvs")
+ .file_name()
+ .unwrap()
+ .to_string_lossy()
+ .to_string(),
+ ),
+ python_executable_path: Some(env.executable.clone()),
+ version: env.version.clone(),
+ category: crate::messaging::PythonEnvironmentCategory::VirtualEnv,
+ env_path: env.path.clone(),
+ python_run_command: Some(vec![env.executable.to_str().unwrap().to_string()]),
+ ..Default::default()
+ });
+ }
+ None
+ }
+
+ fn find(&mut self) -> Option {
+ // There are no common global locations for virtual environments.
+ // We expect the user of this class to call `is_compatible`
+ None
+ }
+}
diff --git a/native_locator/src/virtualenvwrapper.rs b/native_locator/src/virtualenvwrapper.rs
new file mode 100644
index 000000000000..9a06fc2494cb
--- /dev/null
+++ b/native_locator/src/virtualenvwrapper.rs
@@ -0,0 +1,135 @@
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License.
+
+use crate::locator::{Locator, LocatorResult};
+use crate::messaging::PythonEnvironment;
+use crate::utils::list_python_environments;
+use crate::virtualenv;
+use crate::{known::Environment, utils::PythonEnv};
+use std::fs;
+use std::path::PathBuf;
+
+#[cfg(windows)]
+fn get_default_virtualenvwrapper_path(environment: &dyn Environment) -> Option {
+ // In Windows, the default path for WORKON_HOME is %USERPROFILE%\Envs.
+ // If 'Envs' is not available we should default to '.virtualenvs'. Since that
+ // is also valid for windows.
+ if let Some(home) = environment.get_user_home() {
+ let home = PathBuf::from(home).join("Envs");
+ if home.exists() {
+ return Some(home);
+ }
+ let home = PathBuf::from(home).join("virtualenvs");
+ if home.exists() {
+ return Some(home);
+ }
+ }
+ None
+}
+
+#[cfg(unix)]
+fn get_default_virtualenvwrapper_path(environment: &dyn Environment) -> Option {
+ if let Some(home) = environment.get_user_home() {
+ let home = PathBuf::from(home).join(".virtualenvs");
+ if home.exists() {
+ return Some(home);
+ }
+ }
+ None
+}
+
+pub fn get_work_on_home_path(environment: &dyn Environment) -> Option {
+ // The WORKON_HOME variable contains the path to the root directory of all virtualenvwrapper environments.
+ // If the interpreter path belongs to one of them then it is a virtualenvwrapper type of environment.
+ if let Some(work_on_home) = environment.get_env_var("WORKON_HOME".to_string()) {
+ if let Ok(work_on_home) = std::fs::canonicalize(work_on_home) {
+ if work_on_home.exists() {
+ return Some(work_on_home);
+ }
+ }
+ }
+ get_default_virtualenvwrapper_path(environment)
+}
+
+pub fn is_virtualenvwrapper(env: &PythonEnv, environment: &dyn Environment) -> bool {
+ if env.path.is_none() {
+ return false;
+ }
+
+ // For environment to be a virtualenvwrapper based it has to follow these two rules:
+ // 1. It should be in a sub-directory under the WORKON_HOME
+ // 2. It should be a valid virtualenv environment
+ if let Some(work_on_home_dir) = get_work_on_home_path(environment) {
+ if env.executable.starts_with(&work_on_home_dir) && virtualenv::is_virtualenv(env) {
+ return true;
+ }
+ }
+
+ false
+}
+
+fn get_project(env: &PythonEnv) -> Option {
+ let project_file = env.path.clone()?.join(".project");
+ if let Ok(contents) = fs::read_to_string(project_file) {
+ let project_folder = PathBuf::from(contents.trim().to_string());
+ if project_folder.exists() {
+ return Some(project_folder);
+ }
+ }
+ None
+}
+
+pub struct VirtualEnvWrapper<'a> {
+ pub environment: &'a dyn Environment,
+}
+
+impl VirtualEnvWrapper<'_> {
+ pub fn with<'a>(environment: &'a impl Environment) -> VirtualEnvWrapper {
+ VirtualEnvWrapper { environment }
+ }
+}
+
+impl Locator for VirtualEnvWrapper<'_> {
+ fn resolve(&self, env: &PythonEnv) -> Option {
+ if !is_virtualenvwrapper(env, self.environment) {
+ return None;
+ }
+ Some(PythonEnvironment {
+ name: Some(
+ env.path
+ .clone()
+ .expect("env.path cannot be empty for virtualenv rapper")
+ .file_name()
+ .unwrap()
+ .to_string_lossy()
+ .to_string(),
+ ),
+ python_executable_path: Some(env.executable.clone()),
+ version: env.version.clone(),
+ category: crate::messaging::PythonEnvironmentCategory::VirtualEnvWrapper,
+ env_path: env.path.clone(),
+ project_path: get_project(env),
+ python_run_command: Some(vec![env.executable.to_str().unwrap().to_string()]),
+ ..Default::default()
+ })
+ }
+
+ fn find(&mut self) -> Option {
+ let work_on_home = get_work_on_home_path(self.environment)?;
+ let envs = list_python_environments(&work_on_home)?;
+ let mut environments: Vec = vec![];
+ envs.iter().for_each(|env| {
+ if let Some(env) = self.resolve(env) {
+ environments.push(env);
+ }
+ });
+ if environments.is_empty() {
+ None
+ } else {
+ Some(LocatorResult {
+ managers: vec![],
+ environments,
+ })
+ }
+ }
+}
diff --git a/native_locator/src/windows_registry.rs b/native_locator/src/windows_registry.rs
new file mode 100644
index 000000000000..2f3c6d04a42e
--- /dev/null
+++ b/native_locator/src/windows_registry.rs
@@ -0,0 +1,242 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+#[cfg(windows)]
+use crate::conda::CondaLocator;
+#[cfg(windows)]
+use crate::locator::{Locator, LocatorResult};
+#[cfg(windows)]
+use crate::messaging::EnvManager;
+#[cfg(windows)]
+use crate::messaging::{PythonEnvironment, PythonEnvironmentCategory};
+#[cfg(windows)]
+use crate::utils::PythonEnv;
+#[cfg(windows)]
+use std::path::PathBuf;
+#[cfg(windows)]
+use winreg::RegKey;
+
+#[cfg(windows)]
+fn get_registry_pythons_from_key_for_company(
+ key_container: &str,
+ company_key: &RegKey,
+ company: &str,
+ conda_locator: &mut dyn CondaLocator,
+) -> Option {
+ use log::{trace, warn};
+
+ use crate::messaging::Architecture;
+ let mut managers: Vec = vec![];
+ let mut environments = vec![];
+ let company_display_name: Option = company_key.get_value("DisplayName").ok();
+ for installed_python in company_key.enum_keys().filter_map(Result::ok) {
+ match company_key.open_subkey(installed_python.clone()) {
+ Ok(installed_python_key) => {
+ match installed_python_key.open_subkey("InstallPath") {
+ Ok(install_path_key) => {
+ let env_path: String =
+ install_path_key.get_value("").ok().unwrap_or_default();
+ let env_path = PathBuf::from(env_path);
+ trace!(
+ "Found Python ({}) in {}\\Software\\Python\\{}\\{}",
+ env_path.to_str().unwrap_or_default(),
+ key_container,
+ company,
+ installed_python,
+ );
+
+ // Possible this is a conda install folder.
+ if let Some(conda_result) = conda_locator.find_in(&env_path) {
+ for manager in conda_result.managers {
+ let mut mgr = manager.clone();
+ mgr.company = Some(company.to_string());
+ mgr.company_display_name = company_display_name.clone();
+ managers.push(mgr)
+ }
+ for env in conda_result.environments {
+ let mut env = env.clone();
+ env.company = Some(company.to_string());
+ env.company_display_name = company_display_name.clone();
+ if let Some(mgr) = env.env_manager {
+ let mut mgr = mgr.clone();
+ mgr.company = Some(company.to_string());
+ mgr.company_display_name = company_display_name.clone();
+ env.env_manager = Some(mgr);
+ }
+ environments.push(env);
+ }
+ continue;
+ }
+
+ let env_path = if env_path.exists() {
+ Some(env_path)
+ } else {
+ None
+ };
+ let executable: String = install_path_key
+ .get_value("ExecutablePath")
+ .ok()
+ .unwrap_or_default();
+ if executable.len() == 0 {
+ warn!(
+ "Executable is empty {}\\Software\\Python\\{}\\{}\\ExecutablePath",
+ key_container, company, installed_python
+ );
+ continue;
+ }
+ let executable = PathBuf::from(executable);
+ if !executable.exists() {
+ warn!(
+ "Python executable ({}) file not found for {}\\Software\\Python\\{}\\{}",
+ executable.to_str().unwrap_or_default(),
+ key_container,
+ company,
+ installed_python
+ );
+ continue;
+ }
+ let version: String = installed_python_key
+ .get_value("Version")
+ .ok()
+ .unwrap_or_default();
+ let architecture: String = installed_python_key
+ .get_value("SysArchitecture")
+ .ok()
+ .unwrap_or_default();
+ let display_name: String = installed_python_key
+ .get_value("DisplayName")
+ .ok()
+ .unwrap_or_default();
+
+ let mut env = PythonEnvironment::new(
+ Some(display_name),
+ None,
+ Some(executable.clone()),
+ PythonEnvironmentCategory::WindowsRegistry,
+ if version.len() > 0 {
+ Some(version)
+ } else {
+ None
+ },
+ env_path,
+ None,
+ Some(vec![executable.to_string_lossy().to_string()]),
+ );
+ if architecture.contains("32") {
+ env.arch = Some(Architecture::X86);
+ } else if architecture.contains("64") {
+ env.arch = Some(Architecture::X64);
+ }
+ env.company = Some(company.to_string());
+ env.company_display_name = company_display_name.clone();
+ environments.push(env);
+ }
+ Err(err) => {
+ warn!(
+ "Failed to open {}\\Software\\Python\\{}\\{}\\InstallPath, {:?}",
+ key_container, company, installed_python, err
+ );
+ }
+ }
+ }
+ Err(err) => {
+ warn!(
+ "Failed to open {}\\Software\\Python\\{}\\{}, {:?}",
+ key_container, company, installed_python, err
+ );
+ }
+ }
+ }
+
+ Some(LocatorResult {
+ environments,
+ managers,
+ })
+}
+
+#[cfg(windows)]
+fn get_registry_pythons(conda_locator: &mut dyn CondaLocator) -> Option {
+ use log::{trace, warn};
+
+ let mut environments = vec![];
+ let mut managers: Vec = vec![];
+
+ struct RegistryKey {
+ pub name: &'static str,
+ pub key: winreg::RegKey,
+ }
+ let search_keys = [
+ RegistryKey {
+ name: "HKLM",
+ key: winreg::RegKey::predef(winreg::enums::HKEY_LOCAL_MACHINE),
+ },
+ RegistryKey {
+ name: "HKCU",
+ key: winreg::RegKey::predef(winreg::enums::HKEY_CURRENT_USER),
+ },
+ ];
+ for (name, key) in search_keys.iter().map(|f| (f.name, &f.key)) {
+ match key.open_subkey("Software\\Python") {
+ Ok(python_key) => {
+ for company in python_key.enum_keys().filter_map(Result::ok) {
+ trace!("Searching {}\\Software\\Python\\{}", name, company);
+ match python_key.open_subkey(&company) {
+ Ok(company_key) => {
+ if let Some(result) = get_registry_pythons_from_key_for_company(
+ name,
+ &company_key,
+ &company,
+ conda_locator,
+ ) {
+ managers.extend(result.managers);
+ environments.extend(result.environments);
+ }
+ }
+ Err(err) => {
+ warn!(
+ "Failed to open {}\\Software\\Python\\{}, {:?}",
+ name, company, err
+ );
+ }
+ }
+ }
+ }
+ Err(err) => {
+ warn!("Failed to open {}\\Software\\Python, {:?}", name, err)
+ }
+ }
+ }
+ Some(LocatorResult {
+ environments,
+ managers,
+ })
+}
+
+#[cfg(windows)]
+pub struct WindowsRegistry<'a> {
+ pub conda_locator: &'a mut dyn CondaLocator,
+}
+
+#[cfg(windows)]
+impl WindowsRegistry<'_> {
+ #[allow(dead_code)]
+ pub fn with<'a>(conda_locator: &'a mut impl CondaLocator) -> WindowsRegistry<'a> {
+ WindowsRegistry { conda_locator }
+ }
+}
+
+#[cfg(windows)]
+impl Locator for WindowsRegistry<'_> {
+ fn resolve(&self, _env: &PythonEnv) -> Option {
+ None
+ }
+
+ fn find(&mut self) -> Option {
+ if let Some(result) = get_registry_pythons(self.conda_locator) {
+ if !result.environments.is_empty() || !result.managers.is_empty() {
+ return Some(result);
+ }
+ }
+ None
+ }
+}
diff --git a/native_locator/src/windows_store.rs b/native_locator/src/windows_store.rs
new file mode 100644
index 000000000000..f9ed251f9674
--- /dev/null
+++ b/native_locator/src/windows_store.rs
@@ -0,0 +1,244 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+#[cfg(windows)]
+use crate::known;
+#[cfg(windows)]
+use crate::known::Environment;
+#[cfg(windows)]
+use crate::locator::{Locator, LocatorResult};
+#[cfg(windows)]
+use crate::messaging::PythonEnvironment;
+#[cfg(windows)]
+use crate::utils::PythonEnv;
+#[cfg(windows)]
+use log::{trace, warn};
+#[cfg(windows)]
+use std::path::Path;
+#[cfg(windows)]
+use std::path::PathBuf;
+#[cfg(windows)]
+use winreg::RegKey;
+
+#[cfg(windows)]
+pub fn is_windows_python_executable(path: &PathBuf) -> bool {
+ let name = path.file_name().unwrap().to_string_lossy().to_lowercase();
+ // TODO: Is it safe to assume the number 3?
+ name.starts_with("python3.") && name.ends_with(".exe")
+}
+
+#[cfg(windows)]
+fn list_windows_store_python_executables(
+ environment: &dyn known::Environment,
+) -> Option> {
+ use crate::messaging::Architecture;
+ use regex::Regex;
+ use std::collections::HashMap;
+
+ let mut python_envs: Vec = vec![];
+ let home = environment.get_user_home()?;
+ let apps_path = Path::new(&home)
+ .join("AppData")
+ .join("Local")
+ .join("Microsoft")
+ .join("WindowsApps");
+ let hkcu = winreg::RegKey::predef(winreg::enums::HKEY_CURRENT_USER);
+ trace!("Searching for Windows Store Python in {:?}", apps_path);
+ let folder_version_regex =
+ Regex::new("PythonSoftwareFoundation.Python.(\\d+\\.\\d+)_.*").unwrap();
+ let exe_version_regex = Regex::new("python(\\d+\\.\\d+).exe").unwrap();
+ #[derive(Default)]
+ struct PotentialPython {
+ path: Option,
+ name: Option,
+ exe: Option,
+ version: String,
+ }
+ let mut potential_matches: HashMap = HashMap::new();
+ for path in std::fs::read_dir(apps_path)
+ .ok()?
+ .filter_map(Result::ok)
+ .map(|f| f.path())
+ {
+ if let Some(name) = path.file_name() {
+ let name = name.to_string_lossy().to_string();
+ if name.starts_with("PythonSoftwareFoundation.Python.") {
+ let simple_version = folder_version_regex.captures(&name)?;
+ let simple_version = simple_version
+ .get(1)
+ .map(|m| m.as_str())
+ .unwrap_or_default();
+ if simple_version.len() == 0 {
+ continue;
+ }
+ if let Some(existing) = potential_matches.get_mut(&simple_version.to_string()) {
+ existing.path = Some(path.clone());
+ existing.name = Some(name.clone());
+ } else {
+ let item = PotentialPython {
+ path: Some(path.clone()),
+ name: Some(name.clone()),
+ version: simple_version.to_string(),
+ ..Default::default()
+ };
+ potential_matches.insert(simple_version.to_string(), item);
+ }
+ } else if name.starts_with("python") && name.ends_with(".exe") {
+ if name == "python.exe" || name == "python3.exe" {
+ // Unfortunately we have no idea what these point to.
+ // Even old python code didn't report these, hopefully users will not use these.
+ // If they do, we might have to spawn Python to find the real path and match it to one of the items discovered.
+ continue;
+ }
+ if let Some(simple_version) = exe_version_regex.captures(&name) {
+ let simple_version = simple_version
+ .get(1)
+ .map(|m| m.as_str())
+ .unwrap_or_default();
+ if simple_version.len() == 0 {
+ continue;
+ }
+ if let Some(existing) = potential_matches.get_mut(&simple_version.to_string()) {
+ existing.exe = Some(path.clone());
+ } else {
+ let item = PotentialPython {
+ exe: Some(path.clone()),
+ version: simple_version.to_string(),
+ ..Default::default()
+ };
+ potential_matches.insert(simple_version.to_string(), item);
+ }
+ }
+ }
+ }
+ }
+
+ for (_, item) in potential_matches {
+ if item.exe.is_none() {
+ warn!(
+ "Did not find a Windows Store exe for version {:?} that coresponds to path {:?}",
+ item.version, item.path
+ );
+ continue;
+ }
+ if item.path.is_none() {
+ warn!(
+ "Did not find a Windows Store path for version {:?} that coresponds to exe {:?}",
+ item.version, item.exe
+ );
+ continue;
+ }
+ let name = item.name.unwrap_or_default();
+ let path = item.path.unwrap_or_default();
+ let exe = item.exe.unwrap_or_default();
+ let parent = path.parent()?.to_path_buf(); // This dir definitely exists.
+ if let Some(result) = get_package_display_name_and_location(&name, &hkcu) {
+ let env_path = PathBuf::from(result.env_path);
+ let env = PythonEnvironment {
+ display_name: Some(result.display_name),
+ python_executable_path: Some(exe.clone()),
+ category: crate::messaging::PythonEnvironmentCategory::WindowsStore,
+ env_path: Some(env_path.clone()),
+ python_run_command: Some(vec![exe.to_string_lossy().to_string()]),
+ arch: if result.is64_bit {
+ Some(Architecture::X64)
+ } else {
+ None
+ },
+ version: Some(item.version.clone()),
+ symlinks: Some(vec![
+ parent.join(format!("python{:?}.exe", item.version)),
+ path.join("python.exe"),
+ path.join("python3.exe"),
+ path.join(format!("python{:?}.exe", item.version)),
+ env_path.join("python.exe"),
+ env_path.join(format!("python{:?}.exe", item.version)),
+ ]),
+ ..Default::default()
+ };
+ python_envs.push(env);
+ } else {
+ warn!(
+ "Failed to get package display name & location for Windows Store Package {:?}",
+ path
+ );
+ }
+ }
+ Some(python_envs)
+}
+
+#[cfg(windows)]
+fn get_package_full_name_from_registry(name: &String, hkcu: &RegKey) -> Option {
+ let key = format!("Software\\Classes\\Local Settings\\Software\\Microsoft\\Windows\\CurrentVersion\\AppModel\\SystemAppData\\{}\\Schemas", name);
+ trace!("Opening registry key {:?}", key);
+ let package_key = hkcu.open_subkey(key).ok()?;
+ let value = package_key.get_value("PackageFullName").ok()?;
+ Some(value)
+}
+
+#[derive(Debug)]
+#[cfg(windows)]
+struct StorePythonInfo {
+ display_name: String,
+ env_path: String,
+ is64_bit: bool,
+}
+
+#[cfg(windows)]
+fn get_package_display_name_and_location(name: &String, hkcu: &RegKey) -> Option {
+ if let Some(name) = get_package_full_name_from_registry(name, &hkcu) {
+ let key = format!("Software\\Classes\\Local Settings\\Software\\Microsoft\\Windows\\CurrentVersion\\AppModel\\Repository\\Packages\\{}", name);
+ trace!("Opening registry key {:?}", key);
+ let package_key = hkcu.open_subkey(key).ok()?;
+ let display_name = package_key.get_value("DisplayName").ok()?;
+ let env_path = package_key.get_value("PackageRootFolder").ok()?;
+
+ return Some(StorePythonInfo {
+ display_name,
+ env_path,
+ is64_bit: name.contains("_x64_"),
+ });
+ }
+ None
+}
+
+#[cfg(windows)]
+pub struct WindowsStore<'a> {
+ pub environment: &'a dyn Environment,
+}
+
+#[cfg(windows)]
+impl WindowsStore<'_> {
+ #[allow(dead_code)]
+ pub fn with<'a>(environment: &'a impl Environment) -> WindowsStore {
+ WindowsStore { environment }
+ }
+}
+
+#[cfg(windows)]
+impl Locator for WindowsStore<'_> {
+ fn resolve(&self, env: &PythonEnv) -> Option {
+ if is_windows_python_executable(&env.executable) {
+ return Some(PythonEnvironment {
+ python_executable_path: Some(env.executable.clone()),
+ category: crate::messaging::PythonEnvironmentCategory::WindowsStore,
+ python_run_command: Some(vec![env.executable.to_str().unwrap().to_string()]),
+ ..Default::default()
+ });
+ }
+ None
+ }
+
+ fn find(&mut self) -> Option {
+ let environments = list_windows_store_python_executables(self.environment)?;
+
+ if environments.is_empty() {
+ None
+ } else {
+ Some(LocatorResult {
+ managers: vec![],
+ environments,
+ })
+ }
+ }
+}
diff --git a/native_locator/tests/common.rs b/native_locator/tests/common.rs
new file mode 100644
index 000000000000..1df03a005a73
--- /dev/null
+++ b/native_locator/tests/common.rs
@@ -0,0 +1,147 @@
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License.
+
+use python_finder::known::Environment;
+use serde_json::Value;
+use std::{collections::HashMap, path::PathBuf};
+
+#[allow(dead_code)]
+pub fn test_file_path(paths: &[&str]) -> PathBuf {
+ let mut root = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
+
+ paths.iter().for_each(|p| root.push(p));
+
+ root
+}
+
+#[allow(dead_code)]
+pub fn join_test_paths(paths: &[&str]) -> PathBuf {
+ let path: PathBuf = paths.iter().map(|p| p.to_string()).collect();
+ path
+}
+
+#[allow(dead_code)]
+pub trait TestMessages {
+ fn get_messages(&self) -> Vec;
+}
+
+#[allow(dead_code)]
+pub struct TestEnvironment {
+ vars: HashMap,
+ home: Option,
+ root: Option,
+ globals_locations: Vec,
+}
+#[allow(dead_code)]
+pub fn create_test_environment(
+ vars: HashMap,
+ home: Option,
+ globals_locations: Vec,
+ root: Option,
+) -> TestEnvironment {
+ impl Environment for TestEnvironment {
+ fn get_env_var(&self, key: String) -> Option {
+ self.vars.get(&key).cloned()
+ }
+ fn get_root(&self) -> Option {
+ self.root.clone()
+ }
+ fn get_user_home(&self) -> Option {
+ self.home.clone()
+ }
+ fn get_know_global_search_locations(&self) -> Vec {
+ self.globals_locations.clone()
+ }
+ }
+ TestEnvironment {
+ vars,
+ home,
+ root,
+ globals_locations,
+ }
+}
+
+fn compare_json(expected: &Value, actual: &Value) -> bool {
+ if expected == actual {
+ return true;
+ }
+
+ if expected.is_object() {
+ if expected.as_object().is_none() && actual.as_object().is_none() {
+ return true;
+ }
+
+ if expected.as_object().is_none() && actual.as_object().is_some() {
+ return false;
+ }
+ if expected.as_object().is_some() && actual.as_object().is_none() {
+ return false;
+ }
+
+ let expected = expected.as_object().unwrap();
+ let actual = actual.as_object().unwrap();
+
+ for (key, value) in expected.iter() {
+ if !actual.contains_key(key) {
+ return false;
+ }
+ if !compare_json(value, actual.get(key).unwrap()) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ if expected.is_array() {
+ let expected = expected.as_array().unwrap();
+ let actual = actual.as_array().unwrap();
+
+ if expected.len() != actual.len() {
+ return false;
+ }
+
+ for (i, value) in expected.iter().enumerate() {
+ if !compare_json(value, actual.get(i).unwrap()) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ false
+}
+
+#[allow(dead_code)]
+pub fn assert_messages(expected_json: &[Value], actual_json: &[Value]) {
+ let mut expected_json = expected_json.to_vec();
+ assert_eq!(
+ expected_json.len(),
+ actual_json.len(),
+ "Incorrect number of messages"
+ );
+
+ if expected_json.len() == 0 {
+ return;
+ }
+
+ // Ignore the order of the json items when comparing.
+ for actual in actual_json.iter() {
+ let mut valid_index: Option = None;
+ for (i, expected) in expected_json.iter().enumerate() {
+ if !compare_json(expected, &actual) {
+ continue;
+ }
+
+ // Ensure we verify using standard assert_eq!, just in case the code is faulty..
+ valid_index = Some(i);
+ assert_eq!(expected, actual);
+ }
+ if let Some(index) = valid_index {
+ // This is to ensure we don't compare the same item twice.
+ expected_json.remove(index);
+ } else {
+ // Use traditional assert so we can see the fully output in the test results.
+ assert_eq!(&expected_json[0], actual);
+ }
+ }
+}
diff --git a/native_locator/tests/common_python_test.rs b/native_locator/tests/common_python_test.rs
new file mode 100644
index 000000000000..ceebf4931ab6
--- /dev/null
+++ b/native_locator/tests/common_python_test.rs
@@ -0,0 +1,55 @@
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License.
+
+mod common;
+
+#[test]
+#[cfg(unix)]
+fn find_python_in_path_this() {
+ use crate::common::{
+ assert_messages, create_test_environment, join_test_paths, test_file_path,
+ };
+ use python_finder::{common_python, locator::Locator, messaging::PythonEnvironment};
+ use serde_json::json;
+ use std::collections::HashMap;
+
+ let user_home = test_file_path(&["tests/unix/known/user_home"]);
+ let unix_python_exe = join_test_paths(&[user_home.clone().to_str().unwrap(), "python"]);
+
+ let known = create_test_environment(
+ HashMap::from([(
+ "PATH".to_string(),
+ user_home.clone().to_string_lossy().to_string(),
+ )]),
+ Some(user_home.clone()),
+ Vec::new(),
+ None,
+ );
+
+ let mut locator = common_python::PythonOnPath::with(&known);
+ let result = locator.find().unwrap();
+
+ assert_eq!(result.environments.len(), 1);
+
+ let env = PythonEnvironment {
+ display_name: None,
+ env_manager: None,
+ project_path: None,
+ name: None,
+ python_executable_path: Some(unix_python_exe.clone()),
+ category: python_finder::messaging::PythonEnvironmentCategory::System,
+ version: None,
+ python_run_command: Some(vec![unix_python_exe.clone().to_str().unwrap().to_string()]),
+ env_path: Some(user_home.clone()),
+ arch: None,
+ ..Default::default()
+ };
+ assert_messages(
+ &[json!(env)],
+ &result
+ .environments
+ .iter()
+ .map(|e| json!(e))
+ .collect::>(),
+ );
+}
diff --git a/native_locator/tests/conda_test.rs b/native_locator/tests/conda_test.rs
new file mode 100644
index 000000000000..db6c1338ca9f
--- /dev/null
+++ b/native_locator/tests/conda_test.rs
@@ -0,0 +1,302 @@
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License.
+
+mod common;
+
+#[test]
+#[cfg(unix)]
+fn does_not_find_any_conda_envs() {
+ use crate::common::create_test_environment;
+ use python_finder::{conda, locator::Locator};
+ use std::{collections::HashMap, path::PathBuf};
+
+ let known = create_test_environment(
+ HashMap::from([("PATH".to_string(), "".to_string())]),
+ Some(PathBuf::from("SOME_BOGUS_HOME_DIR")),
+ Vec::new(),
+ None,
+ );
+
+ let mut locator = conda::Conda::with(&known);
+ let result = locator.find();
+
+ assert_eq!(result.is_none(), true);
+}
+
+#[test]
+#[cfg(unix)]
+fn no_paths_from_conda_rc_if_conda_rc_does_not_exist() {
+ use crate::common::{create_test_environment, test_file_path};
+ use python_finder::conda::get_conda_environment_paths_from_conda_rc;
+ use std::collections::HashMap;
+
+ let user_home = test_file_path(&["tests/unix/no_conda_rc/user_home"]);
+ let root = test_file_path(&["tests/unix/no_conda_rc/root"]);
+
+ let known = create_test_environment(
+ HashMap::from([("PATH".to_string(), "".to_string())]),
+ Some(user_home),
+ Vec::new(),
+ Some(root),
+ );
+
+ let result = get_conda_environment_paths_from_conda_rc(&known);
+
+ assert_eq!(result.len(), 0);
+}
+
+#[test]
+#[cfg(unix)]
+fn paths_from_conda_rc() {
+ use crate::common::{create_test_environment, test_file_path};
+ use python_finder::conda::get_conda_environment_paths_from_conda_rc;
+ use std::{collections::HashMap, fs, path::PathBuf};
+
+ fn create_conda_rc(file: &PathBuf, paths: &Vec) {
+ use std::fs::File;
+ use std::io::Write;
+ let mut file = File::create(file).unwrap();
+
+ writeln!(file, "envs_dirs:").unwrap();
+ for path in paths {
+ writeln!(file, " - {}", path.to_string_lossy()).unwrap();
+ }
+ }
+
+ fn test_with(conda_rc_file: &PathBuf) {
+ let home = test_file_path(&["tests/unix/conda_rc/user_home"]);
+ let root = test_file_path(&["tests/unix/conda_rc/root"]);
+ let conda_dir = home.join(".conda");
+ let conda_envs = conda_dir.join("envs");
+
+ let known = create_test_environment(
+ HashMap::from([("PATH".to_string(), "".to_string())]),
+ Some(home.clone()),
+ Vec::new(),
+ Some(root.clone()),
+ );
+ fs::remove_dir_all(home.clone()).unwrap_or_default();
+ fs::remove_dir_all(root.clone()).unwrap_or_default();
+
+ fs::create_dir_all(home.clone()).unwrap_or_default();
+ fs::create_dir_all(root.clone()).unwrap_or_default();
+ fs::create_dir_all(conda_envs.clone()).unwrap_or_default();
+ fs::create_dir_all(conda_rc_file.parent().unwrap()).unwrap_or_default();
+
+ create_conda_rc(conda_rc_file, &vec![conda_dir.clone()]);
+
+ let result = get_conda_environment_paths_from_conda_rc(&known);
+ assert_eq!(result.len(), 1);
+ assert_eq!(result[0], conda_envs);
+
+ fs::remove_dir_all(home.clone()).unwrap_or_default();
+ fs::remove_dir_all(root.clone()).unwrap_or_default();
+ }
+
+ let home = test_file_path(&["tests/unix/conda_rc/user_home"]);
+ let root = test_file_path(&["tests/unix/conda_rc/root"]);
+
+ test_with(&root.join("etc/conda/.condarc"));
+ test_with(&home.join(".condarc"));
+}
+
+#[test]
+#[cfg(unix)]
+fn find_conda_exe_and_empty_envs() {
+ use crate::common::{create_test_environment, join_test_paths, test_file_path};
+ use python_finder::messaging::{EnvManager, EnvManagerType};
+ use python_finder::{conda, locator::Locator};
+ use serde_json::json;
+ use std::collections::HashMap;
+ let user_home = test_file_path(&["tests/unix/conda_without_envs/user_home"]);
+ let conda_dir = test_file_path(&["tests/unix/conda_without_envs/user_home"]);
+
+ let known = create_test_environment(
+ HashMap::from([(
+ "PATH".to_string(),
+ conda_dir.clone().to_str().unwrap().to_string(),
+ )]),
+ Some(user_home),
+ Vec::new(),
+ None,
+ );
+
+ let mut locator = conda::Conda::with(&known);
+ let result = locator.find().unwrap();
+ let managers = result.managers;
+ assert_eq!(managers.len(), 1);
+
+ let conda_exe = join_test_paths(&[
+ conda_dir.clone().to_str().unwrap(),
+ "anaconda3",
+ "bin",
+ "conda",
+ ]);
+ let expected_conda_manager = EnvManager {
+ executable_path: conda_exe.clone(),
+ version: Some("4.0.2".to_string()),
+ tool: EnvManagerType::Conda,
+ company: None,
+ company_display_name: None,
+ };
+ assert_eq!(managers.len(), 1);
+ assert_eq!(json!(expected_conda_manager), json!(managers[0]));
+}
+
+#[test]
+#[cfg(unix)]
+fn find_conda_from_custom_install_location() {
+ use crate::common::{create_test_environment, test_file_path};
+ use python_finder::messaging::{EnvManager, EnvManagerType, PythonEnvironment};
+ use python_finder::{conda, locator::Locator};
+ use serde_json::json;
+ use std::collections::HashMap;
+ use std::fs;
+
+ let home = test_file_path(&["tests/unix/conda_custom_install_path/user_home"]);
+ let conda_dir =
+ test_file_path(&["tests/unix/conda_custom_install_path/user_home/some_location/anaconda3"]);
+ let environments_txt =
+ test_file_path(&["tests/unix/conda_custom_install_path/user_home/.conda/environments.txt"]);
+
+ fs::create_dir_all(environments_txt.parent().unwrap()).unwrap_or_default();
+ fs::write(
+ environments_txt.clone(),
+ format!("{}", conda_dir.clone().to_str().unwrap().to_string()),
+ )
+ .unwrap();
+
+ let known = create_test_environment(HashMap::new(), Some(home), Vec::new(), None);
+
+ let mut locator = conda::Conda::with(&known);
+ let result = locator.find().unwrap();
+
+ assert_eq!(result.managers.len(), 1);
+ assert_eq!(result.environments.len(), 1);
+
+ let conda_exe = conda_dir.clone().join("bin").join("conda");
+ let expected_conda_manager = EnvManager {
+ executable_path: conda_exe.clone(),
+ version: Some("4.0.2".to_string()),
+ tool: EnvManagerType::Conda,
+ company: None,
+ company_display_name: None,
+ };
+ assert_eq!(json!(expected_conda_manager), json!(result.managers[0]));
+
+ let expected_conda_env = PythonEnvironment {
+ display_name: None,
+ name: None,
+ project_path: None,
+ python_executable_path: Some(conda_dir.clone().join("bin").join("python")),
+ category: python_finder::messaging::PythonEnvironmentCategory::Conda,
+ version: Some("10.0.1".to_string()),
+ env_path: Some(conda_dir.clone()),
+ env_manager: Some(expected_conda_manager.clone()),
+ python_run_command: Some(vec![
+ conda_exe.clone().to_str().unwrap().to_string(),
+ "run".to_string(),
+ "-p".to_string(),
+ conda_dir.to_string_lossy().to_string(),
+ "python".to_string(),
+ ]),
+ arch: None,
+ ..Default::default()
+ };
+ assert_eq!(json!(expected_conda_env), json!(result.environments[0]));
+
+ // Reset environments.txt
+ fs::write(environments_txt.clone(), "").unwrap();
+}
+
+#[test]
+#[cfg(unix)]
+fn finds_two_conda_envs_from_known_location() {
+ use crate::common::{
+ assert_messages, create_test_environment, join_test_paths, test_file_path,
+ };
+ use python_finder::messaging::{EnvManager, EnvManagerType, PythonEnvironment};
+ use python_finder::{conda, locator::Locator};
+ use serde_json::json;
+ use std::collections::HashMap;
+
+ let home = test_file_path(&["tests/unix/conda/user_home"]);
+ let conda_dir = test_file_path(&["tests/unix/conda/user_home/anaconda3"]);
+ let conda_1 = join_test_paths(&[conda_dir.clone().to_str().unwrap(), "envs/one"]);
+ let conda_2 = join_test_paths(&[conda_dir.clone().to_str().unwrap(), "envs/two"]);
+
+ let known = create_test_environment(
+ HashMap::from([(
+ "PATH".to_string(),
+ conda_dir.clone().to_str().unwrap().to_string(),
+ )]),
+ Some(home),
+ Vec::new(),
+ None,
+ );
+
+ let mut locator = conda::Conda::with(&known);
+ let result = locator.find().unwrap();
+
+ let managers = result.managers;
+ let environments = result.environments;
+ assert_eq!(managers.len(), 1);
+
+ let conda_exe = join_test_paths(&[conda_dir.clone().to_str().unwrap(), "bin", "conda"]);
+ let conda_1_exe = join_test_paths(&[conda_1.clone().to_str().unwrap(), "python"]);
+ let conda_2_exe = join_test_paths(&[conda_2.clone().to_str().unwrap(), "python"]);
+
+ let expected_conda_manager = EnvManager {
+ executable_path: conda_exe.clone(),
+ version: Some("4.0.2".to_string()),
+ tool: EnvManagerType::Conda,
+ company: None,
+ company_display_name: None,
+ };
+
+ assert_eq!(managers.len(), 1);
+ assert_eq!(json!(expected_conda_manager), json!(managers[0]));
+
+ let expected_conda_1 = PythonEnvironment {
+ display_name: None,
+ name: Some("one".to_string()),
+ project_path: None,
+ python_executable_path: Some(conda_1_exe.clone()),
+ category: python_finder::messaging::PythonEnvironmentCategory::Conda,
+ version: Some("10.0.1".to_string()),
+ env_path: Some(conda_1.clone()),
+ env_manager: Some(expected_conda_manager.clone()),
+ python_run_command: Some(vec![
+ conda_exe.clone().to_str().unwrap().to_string(),
+ "run".to_string(),
+ "-n".to_string(),
+ "one".to_string(),
+ "python".to_string(),
+ ]),
+ arch: None,
+ ..Default::default()
+ };
+ let expected_conda_2 = PythonEnvironment {
+ display_name: None,
+ name: Some("two".to_string()),
+ project_path: None,
+ python_executable_path: Some(conda_2_exe.clone()),
+ category: python_finder::messaging::PythonEnvironmentCategory::Conda,
+ version: None,
+ env_path: Some(conda_2.clone()),
+ env_manager: Some(expected_conda_manager.clone()),
+ python_run_command: Some(vec![
+ conda_exe.clone().to_str().unwrap().to_string(),
+ "run".to_string(),
+ "-n".to_string(),
+ "two".to_string(),
+ "python".to_string(),
+ ]),
+ arch: None,
+ ..Default::default()
+ };
+ assert_messages(
+ &[json!(expected_conda_1), json!(expected_conda_2)],
+ &environments.iter().map(|e| json!(e)).collect::>(),
+ );
+}
diff --git a/native_locator/tests/pyenv_test.rs b/native_locator/tests/pyenv_test.rs
new file mode 100644
index 000000000000..132cc4160a6c
--- /dev/null
+++ b/native_locator/tests/pyenv_test.rs
@@ -0,0 +1,255 @@
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License.
+
+mod common;
+
+#[test]
+#[cfg(unix)]
+fn does_not_find_any_pyenv_envs() {
+ use crate::common::create_test_environment;
+ use python_finder::{conda::Conda, locator::Locator, pyenv};
+ use std::{collections::HashMap, path::PathBuf};
+
+ let known = create_test_environment(
+ HashMap::new(),
+ Some(PathBuf::from("SOME_BOGUS_HOME_DIR")),
+ Vec::new(),
+ None,
+ );
+
+ let mut conda = Conda::with(&known);
+ let mut locator = pyenv::PyEnv::with(&known, &mut conda);
+ let result = locator.find();
+
+ assert_eq!(result.is_none(), true);
+}
+
+#[test]
+#[cfg(unix)]
+fn does_not_find_any_pyenv_envs_even_with_pyenv_installed() {
+ use crate::common::{
+ assert_messages, create_test_environment, join_test_paths, test_file_path,
+ };
+ use python_finder::messaging::{EnvManager, EnvManagerType};
+ use python_finder::pyenv;
+ use python_finder::{conda::Conda, locator::Locator};
+ use serde_json::json;
+ use std::{collections::HashMap, path::PathBuf};
+
+ let home = test_file_path(&["tests", "unix", "pyenv_without_envs", "user_home"]);
+ let homebrew_bin = test_file_path(&[
+ "tests",
+ "unix",
+ "pyenv_without_envs",
+ "home",
+ "opt",
+ "homebrew",
+ "bin",
+ ]);
+ let pyenv_exe = join_test_paths(&[homebrew_bin.to_str().unwrap(), "pyenv"]);
+ let known = create_test_environment(
+ HashMap::new(),
+ Some(home.clone()),
+ vec![PathBuf::from(homebrew_bin)],
+ None,
+ );
+
+ let mut conda = Conda::with(&known);
+ let mut locator = pyenv::PyEnv::with(&known, &mut conda);
+ let result = locator.find().unwrap();
+
+ let managers = result.clone().managers;
+ assert_eq!(managers.len(), 1);
+
+ let expected_manager = EnvManager {
+ executable_path: pyenv_exe.clone(),
+ version: None,
+ tool: EnvManagerType::Pyenv,
+ company: None,
+ company_display_name: None,
+ };
+ assert_eq!(json!(expected_manager), json!(result.managers[0]));
+}
+
+#[test]
+#[cfg(unix)]
+fn find_pyenv_envs() {
+ use crate::common::{
+ assert_messages, create_test_environment, join_test_paths, test_file_path,
+ };
+ use python_finder::conda::Conda;
+ use python_finder::locator::Locator;
+ use python_finder::{
+ messaging::{EnvManager, EnvManagerType, PythonEnvironment},
+ pyenv,
+ };
+ use serde_json::json;
+ use std::{collections::HashMap, path::PathBuf};
+
+ let home = test_file_path(&["tests", "unix", "pyenv", "user_home"]);
+ let homebrew_bin =
+ test_file_path(&["tests", "unix", "pyenv", "home", "opt", "homebrew", "bin"]);
+ let pyenv_exe = join_test_paths(&[homebrew_bin.to_str().unwrap(), "pyenv"]);
+ let known = create_test_environment(
+ HashMap::new(),
+ Some(home.clone()),
+ vec![PathBuf::from(homebrew_bin)],
+ None,
+ );
+
+ let mut conda = Conda::with(&known);
+ let mut locator = pyenv::PyEnv::with(&known, &mut conda);
+ let result = locator.find().unwrap();
+
+ assert_eq!(result.managers.len(), 1);
+
+ let expected_manager = EnvManager {
+ executable_path: pyenv_exe.clone(),
+ version: None,
+ tool: EnvManagerType::Pyenv,
+ company: None,
+ company_display_name: None,
+ };
+ assert_eq!(json!(expected_manager), json!(result.managers[0]));
+
+ let expected_3_9_9 = json!(PythonEnvironment {
+ display_name: None,
+ project_path: None,
+ name: None,
+ python_executable_path: Some(join_test_paths(&[
+ home.to_str().unwrap(),
+ ".pyenv/versions/3.9.9/bin/python"
+ ])),
+ python_run_command: Some(vec![join_test_paths(&[
+ home.to_str().unwrap(),
+ ".pyenv/versions/3.9.9/bin/python"
+ ])
+ .to_str()
+ .unwrap()
+ .to_string()]),
+ category: python_finder::messaging::PythonEnvironmentCategory::Pyenv,
+ version: Some("3.9.9".to_string()),
+ env_path: Some(join_test_paths(&[
+ home.to_str().unwrap(),
+ ".pyenv/versions/3.9.9"
+ ])),
+ env_manager: Some(expected_manager.clone()),
+ arch: None,
+ ..Default::default()
+ });
+ let expected_virtual_env = PythonEnvironment {
+ display_name: None,
+ project_path: None,
+ name: Some("my-virtual-env".to_string()),
+ python_executable_path: Some(join_test_paths(&[
+ home.to_str().unwrap(),
+ ".pyenv/versions/my-virtual-env/bin/python",
+ ])),
+ python_run_command: Some(vec![join_test_paths(&[
+ home.to_str().unwrap(),
+ ".pyenv/versions/my-virtual-env/bin/python",
+ ])
+ .to_str()
+ .unwrap()
+ .to_string()]),
+ category: python_finder::messaging::PythonEnvironmentCategory::PyenvVirtualEnv,
+ version: Some("3.10.13".to_string()),
+ env_path: Some(join_test_paths(&[
+ home.to_str().unwrap(),
+ ".pyenv/versions/my-virtual-env",
+ ])),
+ env_manager: Some(expected_manager.clone()),
+ arch: None,
+ ..Default::default()
+ };
+ let expected_3_12_1 = PythonEnvironment {
+ display_name: None,
+ project_path: None,
+ name: None,
+ python_executable_path: Some(join_test_paths(&[
+ home.to_str().unwrap(),
+ ".pyenv/versions/3.12.1/bin/python",
+ ])),
+ python_run_command: Some(vec![join_test_paths(&[
+ home.to_str().unwrap(),
+ ".pyenv/versions/3.12.1/bin/python",
+ ])
+ .to_str()
+ .unwrap()
+ .to_string()]),
+ category: python_finder::messaging::PythonEnvironmentCategory::Pyenv,
+ version: Some("3.12.1".to_string()),
+ env_path: Some(join_test_paths(&[
+ home.to_str().unwrap(),
+ ".pyenv/versions/3.12.1",
+ ])),
+ env_manager: Some(expected_manager.clone()),
+ arch: None,
+ ..Default::default()
+ };
+ let expected_3_13_dev = PythonEnvironment {
+ display_name: None,
+ project_path: None,
+ name: None,
+ python_executable_path: Some(join_test_paths(&[
+ home.to_str().unwrap(),
+ ".pyenv/versions/3.13-dev/bin/python",
+ ])),
+ python_run_command: Some(vec![join_test_paths(&[
+ home.to_str().unwrap(),
+ ".pyenv/versions/3.13-dev/bin/python",
+ ])
+ .to_str()
+ .unwrap()
+ .to_string()]),
+ category: python_finder::messaging::PythonEnvironmentCategory::Pyenv,
+ version: Some("3.13-dev".to_string()),
+ env_path: Some(join_test_paths(&[
+ home.to_str().unwrap(),
+ ".pyenv/versions/3.13-dev",
+ ])),
+ env_manager: Some(expected_manager.clone()),
+ arch: None,
+ ..Default::default()
+ };
+ let expected_3_12_1a3 = PythonEnvironment {
+ display_name: None,
+ project_path: None,
+ name: None,
+ python_executable_path: Some(join_test_paths(&[
+ home.to_str().unwrap(),
+ ".pyenv/versions/3.12.1a3/bin/python",
+ ])),
+ python_run_command: Some(vec![join_test_paths(&[
+ home.to_str().unwrap(),
+ ".pyenv/versions/3.12.1a3/bin/python",
+ ])
+ .to_str()
+ .unwrap()
+ .to_string()]),
+ category: python_finder::messaging::PythonEnvironmentCategory::Pyenv,
+ version: Some("3.12.1a3".to_string()),
+ env_path: Some(join_test_paths(&[
+ home.to_str().unwrap(),
+ ".pyenv/versions/3.12.1a3",
+ ])),
+ env_manager: Some(expected_manager.clone()),
+ arch: None,
+ ..Default::default()
+ };
+
+ assert_messages(
+ &[
+ json!(expected_3_9_9),
+ json!(expected_virtual_env),
+ json!(expected_3_12_1),
+ json!(expected_3_13_dev),
+ json!(expected_3_12_1a3),
+ ],
+ &result
+ .environments
+ .iter()
+ .map(|e| json!(e))
+ .collect::>(),
+ )
+}
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/NormCase/tests/A/__init__.py b/native_locator/tests/unix/conda/user_home/.conda/environments.txt
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/NormCase/tests/A/__init__.py
rename to native_locator/tests/unix/conda/user_home/.conda/environments.txt
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/NormCase/tests/A/b/C/__init__.py b/native_locator/tests/unix/conda/user_home/anaconda3/bin/conda
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/NormCase/tests/A/b/C/__init__.py
rename to native_locator/tests/unix/conda/user_home/anaconda3/bin/conda
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/NormCase/tests/A/b/__init__.py b/native_locator/tests/unix/conda/user_home/anaconda3/conda-meta/conda-4.0.2-pyhd3eb1b0_0.json
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/NormCase/tests/A/b/__init__.py
rename to native_locator/tests/unix/conda/user_home/anaconda3/conda-meta/conda-4.0.2-pyhd3eb1b0_0.json
diff --git a/native_locator/tests/unix/conda/user_home/anaconda3/conda-meta/python-10.0.1-hdf0ec26_0_cpython.json b/native_locator/tests/unix/conda/user_home/anaconda3/conda-meta/python-10.0.1-hdf0ec26_0_cpython.json
new file mode 100644
index 000000000000..23127993ac05
--- /dev/null
+++ b/native_locator/tests/unix/conda/user_home/anaconda3/conda-meta/python-10.0.1-hdf0ec26_0_cpython.json
@@ -0,0 +1 @@
+10.1.1
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/NormCase/tests/__init__.py b/native_locator/tests/unix/conda/user_home/anaconda3/conda-meta/python-slugify-5.0.2-pyhd3eb1b0_0.json
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/NormCase/tests/__init__.py
rename to native_locator/tests/unix/conda/user_home/anaconda3/conda-meta/python-slugify-5.0.2-pyhd3eb1b0_0.json
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/__init__.py b/native_locator/tests/unix/conda/user_home/anaconda3/envs/.conda_envs_dir_test
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/__init__.py
rename to native_locator/tests/unix/conda/user_home/anaconda3/envs/.conda_envs_dir_test
diff --git a/native_locator/tests/unix/conda/user_home/anaconda3/envs/one/conda-meta/python-10.0.1-hdf0ec26_0_cpython.json b/native_locator/tests/unix/conda/user_home/anaconda3/envs/one/conda-meta/python-10.0.1-hdf0ec26_0_cpython.json
new file mode 100644
index 000000000000..23127993ac05
--- /dev/null
+++ b/native_locator/tests/unix/conda/user_home/anaconda3/envs/one/conda-meta/python-10.0.1-hdf0ec26_0_cpython.json
@@ -0,0 +1 @@
+10.1.1
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/v/__init__.py b/native_locator/tests/unix/conda/user_home/anaconda3/envs/one/conda-meta/python-slugify-5.0.2-pyhd3eb1b0_0.json
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/v/__init__.py
rename to native_locator/tests/unix/conda/user_home/anaconda3/envs/one/conda-meta/python-slugify-5.0.2-pyhd3eb1b0_0.json
diff --git a/src/test/pythonFiles/environments/conda/bin/python b/native_locator/tests/unix/conda/user_home/anaconda3/envs/one/python
similarity index 100%
rename from src/test/pythonFiles/environments/conda/bin/python
rename to native_locator/tests/unix/conda/user_home/anaconda3/envs/one/python
diff --git a/src/test/pythonFiles/environments/conda/envs/numpy/bin/python b/native_locator/tests/unix/conda/user_home/anaconda3/envs/two/python
similarity index 100%
rename from src/test/pythonFiles/environments/conda/envs/numpy/bin/python
rename to native_locator/tests/unix/conda/user_home/anaconda3/envs/two/python
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/__init__.py b/native_locator/tests/unix/conda_custom_install_path/user_home/.conda/environments.txt
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/__init__.py
rename to native_locator/tests/unix/conda_custom_install_path/user_home/.conda/environments.txt
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/y/__init__.py b/native_locator/tests/unix/conda_custom_install_path/user_home/some_location/anaconda3/bin/conda
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/y/__init__.py
rename to native_locator/tests/unix/conda_custom_install_path/user_home/some_location/anaconda3/bin/conda
diff --git a/src/test/pythonFiles/environments/conda/envs/scipy/bin/python b/native_locator/tests/unix/conda_custom_install_path/user_home/some_location/anaconda3/bin/python
similarity index 100%
rename from src/test/pythonFiles/environments/conda/envs/scipy/bin/python
rename to native_locator/tests/unix/conda_custom_install_path/user_home/some_location/anaconda3/bin/python
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/y/z/__init__.py b/native_locator/tests/unix/conda_custom_install_path/user_home/some_location/anaconda3/conda-meta/conda-4.0.2-pyhd3eb1b0_0.json
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/y/z/__init__.py
rename to native_locator/tests/unix/conda_custom_install_path/user_home/some_location/anaconda3/conda-meta/conda-4.0.2-pyhd3eb1b0_0.json
diff --git a/native_locator/tests/unix/conda_custom_install_path/user_home/some_location/anaconda3/conda-meta/python-10.0.1-hdf0ec26_0_cpython.json b/native_locator/tests/unix/conda_custom_install_path/user_home/some_location/anaconda3/conda-meta/python-10.0.1-hdf0ec26_0_cpython.json
new file mode 100644
index 000000000000..23127993ac05
--- /dev/null
+++ b/native_locator/tests/unix/conda_custom_install_path/user_home/some_location/anaconda3/conda-meta/python-10.0.1-hdf0ec26_0_cpython.json
@@ -0,0 +1 @@
+10.1.1
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/y/z/a/__init__.py b/native_locator/tests/unix/conda_custom_install_path/user_home/some_location/anaconda3/conda-meta/python-slugify-5.0.2-pyhd3eb1b0_0.json
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/y/z/a/__init__.py
rename to native_locator/tests/unix/conda_custom_install_path/user_home/some_location/anaconda3/conda-meta/python-slugify-5.0.2-pyhd3eb1b0_0.json
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/y/z/b/__init__.py b/native_locator/tests/unix/conda_custom_install_path/user_home/some_location/anaconda3/envs/.conda_envs_dir_test
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/y/z/b/__init__.py
rename to native_locator/tests/unix/conda_custom_install_path/user_home/some_location/anaconda3/envs/.conda_envs_dir_test
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/notests/tests/__init__.py b/native_locator/tests/unix/conda_without_envs/user_home/.conda/environments.txt
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/notests/tests/__init__.py
rename to native_locator/tests/unix/conda_without_envs/user_home/.conda/environments.txt
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/simple/tests/__init__.py b/native_locator/tests/unix/conda_without_envs/user_home/anaconda3/bin/conda
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/simple/tests/__init__.py
rename to native_locator/tests/unix/conda_without_envs/user_home/anaconda3/bin/conda
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/syntax-error/tests/__init__.py b/native_locator/tests/unix/conda_without_envs/user_home/anaconda3/conda-meta/conda-4.0.2-pyhd3eb1b0_0.json
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/syntax-error/tests/__init__.py
rename to native_locator/tests/unix/conda_without_envs/user_home/anaconda3/conda-meta/conda-4.0.2-pyhd3eb1b0_0.json
diff --git a/native_locator/tests/unix/conda_without_envs/user_home/anaconda3/conda-meta/python-10.0.1-hdf0ec26_0_cpython.json b/native_locator/tests/unix/conda_without_envs/user_home/anaconda3/conda-meta/python-10.0.1-hdf0ec26_0_cpython.json
new file mode 100644
index 000000000000..23127993ac05
--- /dev/null
+++ b/native_locator/tests/unix/conda_without_envs/user_home/anaconda3/conda-meta/python-10.0.1-hdf0ec26_0_cpython.json
@@ -0,0 +1 @@
+10.1.1
diff --git a/src/test/pythonFiles/environments/conda/envs/numpy/python.exe b/native_locator/tests/unix/conda_without_envs/user_home/anaconda3/conda-meta/python-slugify-5.0.2-pyhd3eb1b0_0.json
similarity index 100%
rename from src/test/pythonFiles/environments/conda/envs/numpy/python.exe
rename to native_locator/tests/unix/conda_without_envs/user_home/anaconda3/conda-meta/python-slugify-5.0.2-pyhd3eb1b0_0.json
diff --git a/src/test/pythonFiles/environments/conda/envs/scipy/python.exe b/native_locator/tests/unix/conda_without_envs/user_home/anaconda3/envs/.conda_envs_dir_test
similarity index 100%
rename from src/test/pythonFiles/environments/conda/envs/scipy/python.exe
rename to native_locator/tests/unix/conda_without_envs/user_home/anaconda3/envs/.conda_envs_dir_test
diff --git a/src/test/pythonFiles/environments/path1/one b/native_locator/tests/unix/known/user_home/python
similarity index 100%
rename from src/test/pythonFiles/environments/path1/one
rename to native_locator/tests/unix/known/user_home/python
diff --git a/native_locator/tests/unix/known/user_home/python.version b/native_locator/tests/unix/known/user_home/python.version
new file mode 100644
index 000000000000..4044f90867df
--- /dev/null
+++ b/native_locator/tests/unix/known/user_home/python.version
@@ -0,0 +1 @@
+12.0.0
diff --git a/src/test/pythonFiles/environments/path1/one.exe b/native_locator/tests/unix/pyenv/home/opt/homebrew/bin/pyenv
similarity index 100%
rename from src/test/pythonFiles/environments/path1/one.exe
rename to native_locator/tests/unix/pyenv/home/opt/homebrew/bin/pyenv
diff --git a/src/test/pythonFiles/environments/path1/python.exe b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/3.12.1/bin/python
similarity index 100%
rename from src/test/pythonFiles/environments/path1/python.exe
rename to native_locator/tests/unix/pyenv/user_home/.pyenv/versions/3.12.1/bin/python
diff --git a/src/test/pythonFiles/environments/path2/one b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/3.12.1a3/bin/python
similarity index 100%
rename from src/test/pythonFiles/environments/path2/one
rename to native_locator/tests/unix/pyenv/user_home/.pyenv/versions/3.12.1a3/bin/python
diff --git a/src/test/pythonFiles/environments/path2/one.exe b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/3.13-dev/bin/python
similarity index 100%
rename from src/test/pythonFiles/environments/path2/one.exe
rename to native_locator/tests/unix/pyenv/user_home/.pyenv/versions/3.13-dev/bin/python
diff --git a/src/test/pythonFiles/environments/path2/python.exe b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/3.9.9/bin/python
similarity index 100%
rename from src/test/pythonFiles/environments/path2/python.exe
rename to native_locator/tests/unix/pyenv/user_home/.pyenv/versions/3.9.9/bin/python
diff --git a/src/test/pythonFiles/tensorBoard/noMatch.py b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/anaconda-4.0.0/bin/envs/.conda_envs_dir_test
similarity index 100%
rename from src/test/pythonFiles/tensorBoard/noMatch.py
rename to native_locator/tests/unix/pyenv/user_home/.pyenv/versions/anaconda-4.0.0/bin/envs/.conda_envs_dir_test
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/anaconda-4.0.0/bin/python b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/anaconda-4.0.0/bin/python
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/anaconda3-2021.04/bin/envs/.conda_envs_dir_test b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/anaconda3-2021.04/bin/envs/.conda_envs_dir_test
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/anaconda3-2021.04/bin/python b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/anaconda3-2021.04/bin/python
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/mambaforge-4.10.1-4/bin/envs/.conda_envs_dir_test b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/mambaforge-4.10.1-4/bin/envs/.conda_envs_dir_test
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/mambaforge-4.10.1-4/bin/python b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/mambaforge-4.10.1-4/bin/python
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/mambaforge/bin/envs/.conda_envs_dir_test b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/mambaforge/bin/envs/.conda_envs_dir_test
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/mambaforge/bin/python b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/mambaforge/bin/python
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/miniconda-latest/bin/envs/.conda_envs_dir_test b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/miniconda-latest/bin/envs/.conda_envs_dir_test
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/miniconda-latest/bin/python b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/miniconda-latest/bin/python
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/miniconda3-3.10-22.11.1-1/bin/envs/.conda_envs_dir_test b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/miniconda3-3.10-22.11.1-1/bin/envs/.conda_envs_dir_test
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/miniconda3-3.10-22.11.1-1/bin/python b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/miniconda3-3.10-22.11.1-1/bin/python
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/miniconda3-3.10.1/bin/envs/.conda_envs_dir_test b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/miniconda3-3.10.1/bin/envs/.conda_envs_dir_test
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/miniconda3-3.10.1/bin/python b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/miniconda3-3.10.1/bin/python
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/miniconda3-4.0.5/bin/envs/.conda_envs_dir_test b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/miniconda3-4.0.5/bin/envs/.conda_envs_dir_test
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/miniconda3-4.0.5/bin/python b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/miniconda3-4.0.5/bin/python
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/miniforge3-4.11.0-1/bin/envs/.conda_envs_dir_test b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/miniforge3-4.11.0-1/bin/envs/.conda_envs_dir_test
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/miniforge3-4.11.0-1/bin/python b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/miniforge3-4.11.0-1/bin/python
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/my-virtual-env/bin/python b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/my-virtual-env/bin/python
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/my-virtual-env/pyvenv.cfg b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/my-virtual-env/pyvenv.cfg
new file mode 100644
index 000000000000..6190a656901f
--- /dev/null
+++ b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/my-virtual-env/pyvenv.cfg
@@ -0,0 +1,3 @@
+home = /Users/donjayamanne/.pyenv/versions/3.10.13/bin
+include-system-site-packages = false
+version = 3.10.13
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/nogil-3.9.10/bin/python b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/nogil-3.9.10/bin/python
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/pypy3.10-7.3.14/bin/python b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/pypy3.10-7.3.14/bin/python
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/pyston-2.3.5/bin/python b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/pyston-2.3.5/bin/python
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/stacklets-3.7.5/bin/python b/native_locator/tests/unix/pyenv/user_home/.pyenv/versions/stacklets-3.7.5/bin/python
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/native_locator/tests/unix/pyenv_without_envs/home/opt/homebrew/bin/pyenv b/native_locator/tests/unix/pyenv_without_envs/home/opt/homebrew/bin/pyenv
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/noxfile.py b/noxfile.py
new file mode 100644
index 000000000000..e0fc26988d5b
--- /dev/null
+++ b/noxfile.py
@@ -0,0 +1,106 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import os
+import pathlib
+import nox
+import shutil
+import sysconfig
+
+EXT_ROOT = pathlib.Path(__file__).parent
+
+
+@nox.session()
+def install_python_libs(session: nox.Session):
+ requirements = [
+ ("./python_files/lib/python", "./requirements.txt"),
+ (
+ "./python_files/lib/jedilsp",
+ "./python_files/jedilsp_requirements/requirements.txt",
+ ),
+ ]
+ for target, file in requirements:
+ session.install(
+ "-t",
+ target,
+ "--no-cache-dir",
+ "--implementation",
+ "py",
+ "--no-deps",
+ "--require-hashes",
+ "--only-binary",
+ ":all:",
+ "-r",
+ file,
+ )
+
+ session.install("packaging")
+
+ # Download get-pip script
+ session.run(
+ "python",
+ "./python_files/download_get_pip.py",
+ env={"PYTHONPATH": "./python_files/lib/temp"},
+ )
+
+ if pathlib.Path("./python_files/lib/temp").exists():
+ shutil.rmtree("./python_files/lib/temp")
+
+
+@nox.session()
+def native_build(session: nox.Session):
+ with session.cd("./native_locator"):
+ if not pathlib.Path(pathlib.Path.cwd() / "bin").exists():
+ pathlib.Path(pathlib.Path.cwd() / "bin").mkdir()
+
+ if not pathlib.Path(pathlib.Path.cwd() / "bin" / ".gitignore").exists():
+ pathlib.Path(pathlib.Path.cwd() / "bin" / ".gitignore").write_text(
+ "*\n", encoding="utf-8"
+ )
+
+ ext = sysconfig.get_config_var("EXE") or ""
+ target = os.environ.get("CARGO_TARGET", None)
+
+ session.run("cargo", "fetch", external=True)
+ if target:
+ session.run(
+ "cargo",
+ "build",
+ "--frozen",
+ "--release",
+ "--target",
+ target,
+ "--package",
+ "python-finder",
+ external=True,
+ )
+ source = f"./target/{target}/release/python-finder{ext}"
+ dest = f"./bin/python-finder{ext}"
+ shutil.copy(source, dest)
+ else:
+ session.run(
+ "cargo",
+ "build",
+ "--frozen",
+ "--release",
+ "--package",
+ "python-finder",
+ external=True,
+ )
+
+ source = f"./target/release/python-finder{ext}"
+ dest = f"./bin/python-finder{ext}"
+ shutil.copy(source, dest)
+
+ # Remove native_locator/bin exclusion from .vscodeignore
+ vscode_ignore = EXT_ROOT / ".vscodeignore"
+ remove_patterns = ("native_locator/bin/**",)
+ lines = vscode_ignore.read_text(encoding="utf-8").splitlines()
+ filtered_lines = [line for line in lines if not line.startswith(remove_patterns)]
+ vscode_ignore.write_text("\n".join(filtered_lines) + "\n", encoding="utf-8")
+
+
+@nox.session()
+def setup_repo(session: nox.Session):
+ install_python_libs(session)
+ native_build(session)
diff --git a/package-lock.json b/package-lock.json
index 9f05480b28ca..c9a04d630549 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,19 +1,18 @@
{
"name": "python",
- "version": "2023.5.0-dev",
+ "version": "2024.7.0-dev",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "python",
- "version": "2023.5.0-dev",
+ "version": "2024.7.0-dev",
"license": "MIT",
"dependencies": {
"@iarna/toml": "^2.2.5",
- "@vscode/extension-telemetry": "^0.7.4-preview",
+ "@vscode/extension-telemetry": "^0.8.4",
"@vscode/jupyter-lsp-middleware": "^0.2.50",
"arch": "^2.1.0",
- "diff-match-patch": "^1.0.0",
"fs-extra": "^10.0.1",
"glob": "^7.2.0",
"hash.js": "^1.1.7",
@@ -21,61 +20,54 @@
"inversify": "^5.0.4",
"jsonc-parser": "^3.0.0",
"lodash": "^4.17.21",
- "md5": "^2.2.1",
"minimatch": "^5.0.1",
"named-js-regexp": "^1.3.3",
"node-stream-zip": "^1.6.0",
"reflect-metadata": "^0.1.12",
- "request": "^2.87.0",
- "request-progress": "^3.0.0",
"rxjs": "^6.5.4",
"rxjs-compat": "^6.5.4",
- "semver": "^5.5.0",
+ "semver": "^7.5.2",
"stack-trace": "0.0.10",
"sudo-prompt": "^9.2.1",
"tmp": "^0.0.33",
"uint64be": "^3.0.0",
"unicode": "^14.0.0",
"untildify": "^4.0.0",
- "vscode-debugadapter": "^1.28.0",
"vscode-debugprotocol": "^1.28.0",
- "vscode-jsonrpc": "8.0.2-next.1",
- "vscode-languageclient": "8.0.2-next.5",
- "vscode-languageserver": "8.0.2-next.5",
- "vscode-languageserver-protocol": "3.17.2-next.6",
- "vscode-tas-client": "^0.1.63",
+ "vscode-jsonrpc": "^9.0.0-next.2",
+ "vscode-languageclient": "^10.0.0-next.2",
+ "vscode-languageserver-protocol": "^3.17.6-next.3",
+ "vscode-tas-client": "^0.1.84",
"which": "^2.0.2",
"winreg": "^1.2.4",
- "xml2js": "^0.4.19"
+ "xml2js": "^0.5.0"
},
"devDependencies": {
"@istanbuljs/nyc-config-typescript": "^1.0.2",
+ "@types/bent": "^7.3.0",
"@types/chai": "^4.1.2",
"@types/chai-arrays": "^2.0.0",
"@types/chai-as-promised": "^7.1.0",
- "@types/diff-match-patch": "^1.0.32",
"@types/download": "^8.0.1",
"@types/fs-extra": "^9.0.13",
"@types/glob": "^7.2.0",
"@types/lodash": "^4.14.104",
- "@types/md5": "^2.1.32",
"@types/mocha": "^9.1.0",
- "@types/nock": "^10.0.3",
- "@types/node": "^14.18.0",
- "@types/request": "^2.47.0",
+ "@types/node": "^18.17.1",
"@types/semver": "^5.5.0",
"@types/shortid": "^0.0.29",
"@types/sinon": "^10.0.11",
"@types/stack-trace": "0.0.29",
"@types/tmp": "^0.0.33",
- "@types/uuid": "^8.3.4",
- "@types/vscode": "^1.75.0",
+ "@types/vscode": "^1.81.0",
"@types/which": "^2.0.1",
"@types/winreg": "^1.2.30",
"@types/xml2js": "^0.4.2",
"@typescript-eslint/eslint-plugin": "^3.7.0",
"@typescript-eslint/parser": "^3.7.0",
- "@vscode/test-electron": "^2.1.3",
+ "@vscode/test-electron": "^2.3.8",
+ "@vscode/vsce": "^2.26.1",
+ "bent": "^7.3.12",
"chai": "^4.1.2",
"chai-arrays": "^2.0.0",
"chai-as-promised": "^7.1.1",
@@ -83,7 +75,6 @@
"cross-spawn": "^6.0.5",
"del": "^6.0.0",
"download": "^8.0.0",
- "es5-ext": "0.10.53",
"eslint": "^7.2.0",
"eslint-config-airbnb": "^18.2.0",
"eslint-config-prettier": "^8.3.0",
@@ -99,14 +90,12 @@
"mocha": "^9.2.2",
"mocha-junit-reporter": "^2.0.2",
"mocha-multi-reporters": "^1.1.7",
- "nock": "^10.0.6",
"node-has-native-dependencies": "^1.0.2",
"node-loader": "^1.0.2",
"node-polyfill-webpack-plugin": "^1.1.4",
"nyc": "^15.0.0",
"prettier": "^2.0.2",
"rewiremock": "^3.13.0",
- "rimraf": "^3.0.2",
"shortid": "^2.2.8",
"sinon": "^13.0.1",
"source-map-support": "^0.5.12",
@@ -117,8 +106,6 @@
"typemoq": "^2.1.0",
"typescript": "4.5.5",
"uuid": "^8.3.2",
- "vsce": "^2.6.6",
- "vscode-debugadapter-testsupport": "^1.27.0",
"webpack": "^5.76.0",
"webpack-bundle-analyzer": "^4.5.0",
"webpack-cli": "^4.9.2",
@@ -126,10 +113,33 @@
"webpack-merge": "^5.8.0",
"webpack-node-externals": "^3.0.0",
"webpack-require-from": "^1.8.6",
+ "worker-loader": "^3.0.8",
"yargs": "^15.3.1"
},
"engines": {
- "vscode": "^1.76.0"
+ "vscode": "^1.89.0-20240415"
+ }
+ },
+ "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/@ampproject/remapping": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+ "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
}
},
"node_modules/@azure/abort-controller": {
@@ -144,90 +154,144 @@
}
},
"node_modules/@azure/abort-controller/node_modules/tslib": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
- "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/@azure/core-auth": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.4.0.tgz",
- "integrity": "sha512-HFrcTgmuSuukRf/EdPmqBrc5l6Q5Uu+2TbuhaKbgaCpP2TfAeiNaQPAadxO+CYBRHGUzIDteMAjFspFLDLnKVQ==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.5.0.tgz",
+ "integrity": "sha512-udzoBuYG1VBoHVohDTrvKjyzel34zt77Bhp7dQntVGGD0ehVq48owENbBG8fIgkHRNUBQH5k1r0hpoMu5L8+kw==",
"dependencies": {
"@azure/abort-controller": "^1.0.0",
+ "@azure/core-util": "^1.1.0",
"tslib": "^2.2.0"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
}
},
"node_modules/@azure/core-auth/node_modules/tslib": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
- "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
- "node_modules/@azure/core-http": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/@azure/core-http/-/core-http-2.3.1.tgz",
- "integrity": "sha512-cur03BUwV0Tbv81bQBOLafFB02B6G++K6F2O3IMl8pSE2QlXm3cu11bfyBNlDUKi5U+xnB3GC63ae3athhkx6Q==",
+ "node_modules/@azure/core-client": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz",
+ "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==",
+ "dev": true,
+ "dependencies": {
+ "@azure/abort-controller": "^2.0.0",
+ "@azure/core-auth": "^1.4.0",
+ "@azure/core-rest-pipeline": "^1.9.1",
+ "@azure/core-tracing": "^1.0.0",
+ "@azure/core-util": "^1.6.1",
+ "@azure/logger": "^1.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@azure/core-client/node_modules/@azure/abort-controller": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz",
+ "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@azure/core-client/node_modules/@azure/core-util": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.0.tgz",
+ "integrity": "sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw==",
+ "dev": true,
+ "dependencies": {
+ "@azure/abort-controller": "^2.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@azure/core-client/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+ "dev": true
+ },
+ "node_modules/@azure/core-rest-pipeline": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.10.1.tgz",
+ "integrity": "sha512-Kji9k6TOFRDB5ZMTw8qUf2IJ+CeJtsuMdAHox9eqpTf1cefiNMpzrfnF6sINEBZJsaVaWgQ0o48B6kcUH68niA==",
"dependencies": {
"@azure/abort-controller": "^1.0.0",
- "@azure/core-auth": "^1.3.0",
- "@azure/core-tracing": "1.0.0-preview.13",
- "@azure/core-util": "^1.1.1",
+ "@azure/core-auth": "^1.4.0",
+ "@azure/core-tracing": "^1.0.1",
+ "@azure/core-util": "^1.0.0",
"@azure/logger": "^1.0.0",
- "@types/node-fetch": "^2.5.0",
- "@types/tunnel": "^0.0.3",
"form-data": "^4.0.0",
- "node-fetch": "^2.6.7",
- "process": "^0.11.10",
- "tough-cookie": "^4.0.0",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
"tslib": "^2.2.0",
- "tunnel": "^0.0.6",
- "uuid": "^8.3.0",
- "xml2js": "^0.4.19"
+ "uuid": "^8.3.0"
},
"engines": {
"node": ">=14.0.0"
}
},
- "node_modules/@azure/core-http/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/@azure/core-rest-pipeline/node_modules/@tootallnate/once": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
+ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@azure/core-rest-pipeline/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
+ "ms": "2.1.2"
},
"engines": {
- "node": ">= 6"
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
- "node_modules/@azure/core-http/node_modules/tough-cookie": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz",
- "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==",
+ "node_modules/@azure/core-rest-pipeline/node_modules/http-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
"dependencies": {
- "psl": "^1.1.33",
- "punycode": "^2.1.1",
- "universalify": "^0.2.0",
- "url-parse": "^1.5.3"
+ "@tootallnate/once": "2",
+ "agent-base": "6",
+ "debug": "4"
},
"engines": {
- "node": ">=6"
+ "node": ">= 6"
}
},
- "node_modules/@azure/core-http/node_modules/tslib": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
- "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
+ "node_modules/@azure/core-rest-pipeline/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/@azure/core-tracing": {
- "version": "1.0.0-preview.13",
- "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz",
- "integrity": "sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz",
+ "integrity": "sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==",
"dependencies": {
- "@opentelemetry/api": "^1.0.1",
"tslib": "^2.2.0"
},
"engines": {
@@ -235,42 +299,154 @@
}
},
"node_modules/@azure/core-tracing/node_modules/tslib": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
- "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/@azure/core-util": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.1.1.tgz",
- "integrity": "sha512-A4TBYVQCtHOigFb2ETiiKFDocBoI1Zk2Ui1KpI42aJSIDexF7DHQFpnjonltXAIU/ceH+1fsZAWWgvX6/AKzog==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.2.0.tgz",
+ "integrity": "sha512-ffGIw+Qs8bNKNLxz5UPkz4/VBM/EZY07mPve1ZYFqYUdPwFqRj0RPk0U7LZMOfT7GCck9YjuT1Rfp1PApNl1ng==",
"dependencies": {
"@azure/abort-controller": "^1.0.0",
"tslib": "^2.2.0"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
}
},
"node_modules/@azure/core-util/node_modules/tslib": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
- "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@azure/identity": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.2.0.tgz",
+ "integrity": "sha512-ve3aYv79qXOJ8wRxQ5jO0eIz2DZ4o0TyME4m4vlGV5YyePddVZ+pFMzusAMODNAflYAAv1cBIhKnd4xytmXyig==",
+ "dev": true,
+ "dependencies": {
+ "@azure/abort-controller": "^1.0.0",
+ "@azure/core-auth": "^1.5.0",
+ "@azure/core-client": "^1.4.0",
+ "@azure/core-rest-pipeline": "^1.1.0",
+ "@azure/core-tracing": "^1.0.0",
+ "@azure/core-util": "^1.3.0",
+ "@azure/logger": "^1.0.0",
+ "@azure/msal-browser": "^3.11.1",
+ "@azure/msal-node": "^2.6.6",
+ "events": "^3.0.0",
+ "jws": "^4.0.0",
+ "open": "^8.0.0",
+ "stoppable": "^1.1.0",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@azure/identity/node_modules/@azure/core-util": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.0.tgz",
+ "integrity": "sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw==",
+ "dev": true,
+ "dependencies": {
+ "@azure/abort-controller": "^2.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@azure/identity/node_modules/@azure/core-util/node_modules/@azure/abort-controller": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz",
+ "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@azure/identity/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+ "dev": true
},
"node_modules/@azure/logger": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.0.3.tgz",
- "integrity": "sha512-aK4s3Xxjrx3daZr3VylxejK3vG5ExXck5WOHDJ8in/k9AqlfIyFMMT1uG7u8mNjX+QRILTIn0/Xgschfh/dQ9g==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.0.4.tgz",
+ "integrity": "sha512-ustrPY8MryhloQj7OWGe+HrYx+aoiOxzbXTtgblbV3xwCqpzUK36phH3XNHQKj3EPonyFUuDTfR3qFhTEAuZEg==",
"dependencies": {
"tslib": "^2.2.0"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
}
},
"node_modules/@azure/logger/node_modules/tslib": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
- "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@azure/msal-browser": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.14.0.tgz",
+ "integrity": "sha512-Un85LhOoecJ3HDTS3Uv3UWnXC9/43ZSO+Kc+anSqpZvcEt58SiO/3DuVCAe1A3I5UIBYJNMgTmZPGXQ0MVYrwA==",
+ "dev": true,
+ "dependencies": {
+ "@azure/msal-common": "14.10.0"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@azure/msal-common": {
+ "version": "14.10.0",
+ "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.10.0.tgz",
+ "integrity": "sha512-Zk6DPDz7e1wPgLoLgAp0349Yay9RvcjPM5We/ehuenDNsz/t9QEFI7tRoHpp/e47I4p20XE3FiDlhKwAo3utDA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@azure/msal-node": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.8.1.tgz",
+ "integrity": "sha512-VcZZM+5VvCWRBTOF7SxMKaxrz+EXjntx2u5AQe7QE06e6FuPJElGBrImgNgCh5QmFaNCfVFO+3qNR7UoFD/Gfw==",
+ "dev": true,
+ "dependencies": {
+ "@azure/msal-common": "14.10.0",
+ "jsonwebtoken": "^9.0.0",
+ "uuid": "^8.3.0"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@azure/opentelemetry-instrumentation-azure-sdk": {
+ "version": "1.0.0-beta.5",
+ "resolved": "https://registry.npmjs.org/@azure/opentelemetry-instrumentation-azure-sdk/-/opentelemetry-instrumentation-azure-sdk-1.0.0-beta.5.tgz",
+ "integrity": "sha512-fsUarKQDvjhmBO4nIfaZkfNSApm1hZBzcvpNbSrXdcUBxu7lRvKsV5DnwszX7cnhLyVOW9yl1uigtRQ1yDANjA==",
+ "dependencies": {
+ "@azure/core-tracing": "^1.0.0",
+ "@azure/logger": "^1.0.0",
+ "@opentelemetry/api": "^1.4.1",
+ "@opentelemetry/core": "^1.15.2",
+ "@opentelemetry/instrumentation": "^0.41.2",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@azure/opentelemetry-instrumentation-azure-sdk/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/@babel/code-frame": {
"version": "7.12.11",
@@ -281,29 +457,279 @@
"@babel/highlight": "^7.10.4"
}
},
+ "node_modules/@babel/compat-data": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.6.tgz",
+ "integrity": "sha512-29tfsWTq2Ftu7MXmimyC0C5FDZv5DYxOZkh3XD3+QW4V/BYuv/LyEsjj3c0hqedEaDt6DBfDvexMKU8YevdqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.6.tgz",
+ "integrity": "sha512-HPIyDa6n+HKw5dEuway3vVAhBboYCtREBMp+IWeseZy6TFtzn6MHkCH2KKYUOC/vKKwgSMHQW4htBOrmuRPXfw==",
+ "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.6",
+ "@babel/helper-module-transforms": "^7.22.5",
+ "@babel/helpers": "^7.22.6",
+ "@babel/parser": "^7.22.6",
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.6",
+ "@babel/types": "^7.22.5",
+ "@nicolo-ribaudo/semver-v6": "^6.3.3",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/core/node_modules/@babel/code-frame": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz",
+ "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/highlight": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@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==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.23.0",
+ "@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.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.6.tgz",
+ "integrity": "sha512-534sYEqWD9VfUm3IPn2SLcH4Q3P86XL+QvqdC7ZsFrzyyPF3T4XGiVghF6PTYNdWg6pXuoqXxNQAhbYeEInTzA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-validator-option": "^7.22.5",
+ "@nicolo-ribaudo/semver-v6": "^6.3.3",
+ "browserslist": "^4.21.9",
+ "lru-cache": "^5.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@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/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==",
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.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==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "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==",
+ "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"
+ },
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
+ "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.15.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
- "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
"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==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz",
+ "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.6",
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@babel/highlight": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz",
- "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==",
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
+ "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
"dev": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.15.7",
- "chalk": "^2.0.0",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
"js-tokens": "^4.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/parser": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
+ "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
+ "dev": true,
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
"node_modules/@babel/runtime": {
"version": "7.17.8",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz",
@@ -326,6 +752,98 @@
"regenerator-runtime": "^0.13.4"
}
},
+ "node_modules/@babel/template": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
+ "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.22.13",
+ "@babel/parser": "^7.22.15",
+ "@babel/types": "^7.22.15"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template/node_modules/@babel/code-frame": {
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
+ "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/highlight": "^7.22.13",
+ "chalk": "^2.4.2"
+ },
+ "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==",
+ "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",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/@babel/code-frame": {
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
+ "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/highlight": "^7.22.13",
+ "chalk": "^2.4.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
+ "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@cspotcode/source-map-consumer": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz",
@@ -583,69 +1101,132 @@
"dev": true
},
"node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz",
- "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==",
+ "version": "0.3.18",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
+ "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
"dev": true,
"dependencies": {
- "@jridgewell/resolve-uri": "^3.0.3",
- "@jridgewell/sourcemap-codec": "^1.4.10"
+ "@jridgewell/resolve-uri": "3.1.0",
+ "@jridgewell/sourcemap-codec": "1.4.14"
}
},
"node_modules/@microsoft/1ds-core-js": {
- "version": "3.2.8",
- "resolved": "https://registry.npmjs.org/@microsoft/1ds-core-js/-/1ds-core-js-3.2.8.tgz",
- "integrity": "sha512-9o9SUAamJiTXIYwpkQDuueYt83uZfXp8zp8YFix1IwVPwC9RmE36T2CX9gXOeq1nDckOuOduYpA8qHvdh5BGfQ==",
+ "version": "3.2.13",
+ "resolved": "https://registry.npmjs.org/@microsoft/1ds-core-js/-/1ds-core-js-3.2.13.tgz",
+ "integrity": "sha512-CluYTRWcEk0ObG5EWFNWhs87e2qchJUn0p2D21ZUa3PWojPZfPSBs4//WIE0MYV8Qg1Hdif2ZTwlM7TbYUjfAg==",
"dependencies": {
- "@microsoft/applicationinsights-core-js": "2.8.9",
+ "@microsoft/applicationinsights-core-js": "2.8.15",
"@microsoft/applicationinsights-shims": "^2.0.2",
"@microsoft/dynamicproto-js": "^1.1.7"
}
},
"node_modules/@microsoft/1ds-post-js": {
- "version": "3.2.8",
- "resolved": "https://registry.npmjs.org/@microsoft/1ds-post-js/-/1ds-post-js-3.2.8.tgz",
- "integrity": "sha512-SjlRoNcXcXBH6WQD/5SkkaCHIVqldH3gDu+bI7YagrOVJ5APxwT1Duw9gm3L1FjFa9S2i81fvJ3EVSKpp9wULA==",
+ "version": "3.2.13",
+ "resolved": "https://registry.npmjs.org/@microsoft/1ds-post-js/-/1ds-post-js-3.2.13.tgz",
+ "integrity": "sha512-HgS574fdD19Bo2vPguyznL4eDw7Pcm1cVNpvbvBLWiW3x4e1FCQ3VMXChWnAxCae8Hb0XqlA2sz332ZobBavTA==",
"dependencies": {
- "@microsoft/1ds-core-js": "3.2.8",
+ "@microsoft/1ds-core-js": "3.2.13",
"@microsoft/applicationinsights-shims": "^2.0.2",
"@microsoft/dynamicproto-js": "^1.1.7"
}
},
"node_modules/@microsoft/applicationinsights-channel-js": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-2.8.9.tgz",
- "integrity": "sha512-fMBsAEB7pWtPn43y72q9Xy5E5y55r6gMuDQqRRccccVoQDPXyS57VCj5IdATblctru0C6A8XpL2vRyNmEsu0Vg==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-3.0.2.tgz",
+ "integrity": "sha512-jDBNKbCHsJgmpv0CKNhJ/uN9ZphvfGdb93Svk+R4LjO8L3apNNMbDDPxBvXXi0uigRmA1TBcmyBG4IRKjabGhw==",
"dependencies": {
- "@microsoft/applicationinsights-common": "2.8.9",
- "@microsoft/applicationinsights-core-js": "2.8.9",
- "@microsoft/applicationinsights-shims": "2.0.2",
- "@microsoft/dynamicproto-js": "^1.1.7"
+ "@microsoft/applicationinsights-common": "3.0.2",
+ "@microsoft/applicationinsights-core-js": "3.0.2",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.2.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
+ },
+ "peerDependencies": {
+ "tslib": "*"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-channel-js/node_modules/@microsoft/applicationinsights-core-js": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.2.tgz",
+ "integrity": "sha512-WQhVhzlRlLDrQzn3OShCW/pL3BW5WC57t0oywSknX3q7lMzI3jDg7Ihh0iuIcNTzGCTbDkuqr4d6IjEDWIMtJQ==",
+ "dependencies": {
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.2.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
+ },
+ "peerDependencies": {
+ "tslib": "*"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-channel-js/node_modules/@microsoft/applicationinsights-shims": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-shims/-/applicationinsights-shims-3.0.1.tgz",
+ "integrity": "sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==",
+ "dependencies": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-channel-js/node_modules/@microsoft/dynamicproto-js": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-2.0.2.tgz",
+ "integrity": "sha512-MB8trWaFREpmb037k/d0bB7T2BP7Ai24w1e1tbz3ASLB0/lwphsq3Nq8S9I5AsI5vs4zAQT+SB5nC5/dLYTiOg==",
+ "dependencies": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-common": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-common/-/applicationinsights-common-3.0.2.tgz",
+ "integrity": "sha512-y+WXWop+OVim954Cu1uyYMnNx6PWO8okHpZIQi/1YSqtqaYdtJVPv4P0AVzwJdohxzVfgzKvqj9nec/VWqE2Zg==",
+ "dependencies": {
+ "@microsoft/applicationinsights-core-js": "3.0.2",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
+ },
+ "peerDependencies": {
+ "tslib": "*"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-common/node_modules/@microsoft/applicationinsights-core-js": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.2.tgz",
+ "integrity": "sha512-WQhVhzlRlLDrQzn3OShCW/pL3BW5WC57t0oywSknX3q7lMzI3jDg7Ihh0iuIcNTzGCTbDkuqr4d6IjEDWIMtJQ==",
+ "dependencies": {
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.2.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
},
"peerDependencies": {
"tslib": "*"
}
},
- "node_modules/@microsoft/applicationinsights-common": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-common/-/applicationinsights-common-2.8.9.tgz",
- "integrity": "sha512-mObn1moElyxZaGIRF/IU3cOaeKMgxghXnYEoHNUCA2e+rNwBIgxjyKkblFIpmGuHf4X7Oz3o3yBWpaC6AoMpig==",
+ "node_modules/@microsoft/applicationinsights-common/node_modules/@microsoft/applicationinsights-shims": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-shims/-/applicationinsights-shims-3.0.1.tgz",
+ "integrity": "sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==",
"dependencies": {
- "@microsoft/applicationinsights-core-js": "2.8.9",
- "@microsoft/applicationinsights-shims": "2.0.2",
- "@microsoft/dynamicproto-js": "^1.1.7"
- },
- "peerDependencies": {
- "tslib": "*"
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-common/node_modules/@microsoft/dynamicproto-js": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-2.0.2.tgz",
+ "integrity": "sha512-MB8trWaFREpmb037k/d0bB7T2BP7Ai24w1e1tbz3ASLB0/lwphsq3Nq8S9I5AsI5vs4zAQT+SB5nC5/dLYTiOg==",
+ "dependencies": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
}
},
"node_modules/@microsoft/applicationinsights-core-js": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-2.8.9.tgz",
- "integrity": "sha512-HRuIuZ6aOWezcg/G5VyFDDWGL8hDNe/ljPP01J7ImH2kRPEgbtcfPSUMjkamGMefgdq81GZsSoC/NNGTP4pp2w==",
+ "version": "2.8.15",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-2.8.15.tgz",
+ "integrity": "sha512-yYAs9MyjGr2YijQdUSN9mVgT1ijI1FPMgcffpaPmYbHAVbQmF7bXudrBWHxmLzJlwl5rfep+Zgjli2e67lwUqQ==",
"dependencies": {
"@microsoft/applicationinsights-shims": "2.0.2",
- "@microsoft/dynamicproto-js": "^1.1.7"
+ "@microsoft/dynamicproto-js": "^1.1.9"
},
"peerDependencies": {
"tslib": "*"
@@ -657,29 +1238,83 @@
"integrity": "sha512-PoHEgsnmcqruLNHZ/amACqdJ6YYQpED0KSRe6J7gIJTtpZC1FfFU9b1fmDKDKtFoUSrPzEh1qzO3kmRZP0betg=="
},
"node_modules/@microsoft/applicationinsights-web-basic": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-2.8.9.tgz",
- "integrity": "sha512-CH0J8JFOy7MjK8JO4pXXU+EML+Ilix+94PMZTX5EJlBU1in+mrik74/8qSg3UC4ekPi12KwrXaHCQSVC3WseXQ==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-3.0.2.tgz",
+ "integrity": "sha512-6Lq0DE/pZp9RvSV+weGbcxN1NDmfczj6gNPhvZKV2YSQ3RK0LZE3+wjTWLXfuStq8a+nCBdsRpWk8tOKgsoxcg==",
"dependencies": {
- "@microsoft/applicationinsights-channel-js": "2.8.9",
- "@microsoft/applicationinsights-common": "2.8.9",
- "@microsoft/applicationinsights-core-js": "2.8.9",
- "@microsoft/applicationinsights-shims": "2.0.2",
- "@microsoft/dynamicproto-js": "^1.1.7"
+ "@microsoft/applicationinsights-channel-js": "3.0.2",
+ "@microsoft/applicationinsights-common": "3.0.2",
+ "@microsoft/applicationinsights-core-js": "3.0.2",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.2.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
+ },
+ "peerDependencies": {
+ "tslib": "*"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-web-basic/node_modules/@microsoft/applicationinsights-core-js": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.2.tgz",
+ "integrity": "sha512-WQhVhzlRlLDrQzn3OShCW/pL3BW5WC57t0oywSknX3q7lMzI3jDg7Ihh0iuIcNTzGCTbDkuqr4d6IjEDWIMtJQ==",
+ "dependencies": {
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.2.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
},
"peerDependencies": {
"tslib": "*"
}
},
+ "node_modules/@microsoft/applicationinsights-web-basic/node_modules/@microsoft/applicationinsights-shims": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-shims/-/applicationinsights-shims-3.0.1.tgz",
+ "integrity": "sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==",
+ "dependencies": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-web-basic/node_modules/@microsoft/dynamicproto-js": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-2.0.2.tgz",
+ "integrity": "sha512-MB8trWaFREpmb037k/d0bB7T2BP7Ai24w1e1tbz3ASLB0/lwphsq3Nq8S9I5AsI5vs4zAQT+SB5nC5/dLYTiOg==",
+ "dependencies": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ },
"node_modules/@microsoft/applicationinsights-web-snippet": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-snippet/-/applicationinsights-web-snippet-1.0.1.tgz",
"integrity": "sha512-2IHAOaLauc8qaAitvWS+U931T+ze+7MNWrDHY47IENP5y2UA0vqJDu67kWZDdpCN1fFC77sfgfB+HV7SrKshnQ=="
},
"node_modules/@microsoft/dynamicproto-js": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-1.1.7.tgz",
- "integrity": "sha512-SK3D3aVt+5vOOccKPnGaJWB5gQ8FuKfjboUJHedMP7gu54HqSCXX5iFXhktGD8nfJb0Go30eDvs/UDoTnR2kOA=="
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-1.1.9.tgz",
+ "integrity": "sha512-n1VPsljTSkthsAFYdiWfC+DKzK2WwcRp83Y1YAqdX552BstvsDjft9YXppjUzp11BPsapDoO1LDgrDB0XVsfNQ=="
+ },
+ "node_modules/@nevware21/ts-async": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@nevware21/ts-async/-/ts-async-0.3.0.tgz",
+ "integrity": "sha512-ZUcgUH12LN/F6nzN0cYd0F/rJaMLmXr0EHVTyYfaYmK55bdwE4338uue4UiVoRqHVqNW4KDUrJc49iGogHKeWA==",
+ "dependencies": {
+ "@nevware21/ts-utils": ">= 0.10.0 < 2.x"
+ }
+ },
+ "node_modules/@nevware21/ts-utils": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/@nevware21/ts-utils/-/ts-utils-0.10.1.tgz",
+ "integrity": "sha512-pMny25NnF2/MJwdqC3Iyjm2pGIXNxni4AROpcqDeWa+td9JMUY4bUS9uU9XW+BoBRqTLUL+WURF9SOd/6OQzRg=="
+ },
+ "node_modules/@nicolo-ribaudo/semver-v6": {
+ "version": "6.3.3",
+ "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz",
+ "integrity": "sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
},
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
@@ -717,62 +1352,80 @@
}
},
"node_modules/@opentelemetry/api": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.3.0.tgz",
- "integrity": "sha512-YveTnGNsFFixTKJz09Oi4zYkiLT5af3WpZDu4aIUM7xX+2bHAkOJayFTVQd6zB8kkWPpbua4Ha6Ql00grdLlJQ==",
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.1.tgz",
+ "integrity": "sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA==",
"engines": {
"node": ">=8.0.0"
}
},
"node_modules/@opentelemetry/core": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.8.0.tgz",
- "integrity": "sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.15.2.tgz",
+ "integrity": "sha512-+gBv15ta96WqkHZaPpcDHiaz0utiiHZVfm2YOYSqFGrUaJpPkMoSuLBB58YFQGi6Rsb9EHos84X6X5+9JspmLw==",
+ "dependencies": {
+ "@opentelemetry/semantic-conventions": "1.15.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": ">=1.0.0 <1.5.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation": {
+ "version": "0.41.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.41.2.tgz",
+ "integrity": "sha512-rxU72E0pKNH6ae2w5+xgVYZLzc5mlxAbGzF4shxMVK8YC2QQsfN38B2GPbj0jvrKWWNUElfclQ+YTykkNg/grw==",
"dependencies": {
- "@opentelemetry/semantic-conventions": "1.8.0"
+ "@types/shimmer": "^1.0.2",
+ "import-in-the-middle": "1.4.2",
+ "require-in-the-middle": "^7.1.1",
+ "semver": "^7.5.1",
+ "shimmer": "^1.2.1"
},
"engines": {
"node": ">=14"
},
"peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.4.0"
+ "@opentelemetry/api": "^1.3.0"
}
},
"node_modules/@opentelemetry/resources": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.8.0.tgz",
- "integrity": "sha512-KSyMH6Jvss/PFDy16z5qkCK0ERlpyqixb1xwb73wLMvVq+j7i89lobDjw3JkpCcd1Ws0J6jAI4fw28Zufj2ssg==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.15.2.tgz",
+ "integrity": "sha512-xmMRLenT9CXmm5HMbzpZ1hWhaUowQf8UB4jMjFlAxx1QzQcsD3KFNAVX/CAWzFPtllTyTplrA4JrQ7sCH3qmYw==",
"dependencies": {
- "@opentelemetry/core": "1.8.0",
- "@opentelemetry/semantic-conventions": "1.8.0"
+ "@opentelemetry/core": "1.15.2",
+ "@opentelemetry/semantic-conventions": "1.15.2"
},
"engines": {
"node": ">=14"
},
"peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.4.0"
+ "@opentelemetry/api": ">=1.0.0 <1.5.0"
}
},
"node_modules/@opentelemetry/sdk-trace-base": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.8.0.tgz",
- "integrity": "sha512-iH41m0UTddnCKJzZx3M85vlhKzRcmT48pUeBbnzsGrq4nIay1oWVHKM5nhB5r8qRDGvd/n7f/YLCXClxwM0tvA==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.15.2.tgz",
+ "integrity": "sha512-BEaxGZbWtvnSPchV98qqqqa96AOcb41pjgvhfzDij10tkBhIu9m0Jd6tZ1tJB5ZHfHbTffqYVYE0AOGobec/EQ==",
"dependencies": {
- "@opentelemetry/core": "1.8.0",
- "@opentelemetry/resources": "1.8.0",
- "@opentelemetry/semantic-conventions": "1.8.0"
+ "@opentelemetry/core": "1.15.2",
+ "@opentelemetry/resources": "1.15.2",
+ "@opentelemetry/semantic-conventions": "1.15.2"
},
"engines": {
"node": ">=14"
},
"peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.4.0"
+ "@opentelemetry/api": ">=1.0.0 <1.5.0"
}
},
"node_modules/@opentelemetry/semantic-conventions": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.8.0.tgz",
- "integrity": "sha512-TYh1MRcm4JnvpqtqOwT9WYaBYY4KERHdToxs/suDTLviGRsQkIjS5yYROTYTSJQUnYLOn/TuOh5GoMwfLSU+Ew==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.15.2.tgz",
+ "integrity": "sha512-CjbOKwk2s+3xPIMcd5UNYQzsf+v94RczbdNix9/kQh38WiQkM90sUOi3if8eyHFgiBjBjhwXrA7W3ydiSQP9mw==",
"engines": {
"node": ">=14"
}
@@ -860,11 +1513,14 @@
"integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==",
"dev": true
},
- "node_modules/@types/caseless": {
- "version": "0.12.2",
- "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz",
- "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==",
- "dev": true
+ "node_modules/@types/bent": {
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/@types/bent/-/bent-7.3.3.tgz",
+ "integrity": "sha512-5NEIhVzHiZ6wMjFBmJ3gwjxwGug6amMoAn93rtDBttwrODxm+bt63u+MJA7H9NGGM4X1m73sJrAxDapktl036Q==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
},
"node_modules/@types/chai": {
"version": "4.3.0",
@@ -897,28 +1553,22 @@
"dev": true
},
"node_modules/@types/decompress": {
- "version": "4.2.4",
- "resolved": "https://registry.npmjs.org/@types/decompress/-/decompress-4.2.4.tgz",
- "integrity": "sha512-/C8kTMRTNiNuWGl5nEyKbPiMv6HA+0RbEXzFhFBEzASM6+oa4tJro9b8nj7eRlOFfuLdzUU+DS/GPDlvvzMOhA==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@types/decompress/-/decompress-4.2.5.tgz",
+ "integrity": "sha512-LdL+kbcKGs9TzvB/K+OBGzPfDoP6gwwTsykYjodlzUJUUYp/43c1p1jE5YTtz3z4Ml90iruvBXbJ6+kDvb3WSQ==",
"dev": true,
"dependencies": {
"@types/node": "*"
}
},
- "node_modules/@types/diff-match-patch": {
- "version": "1.0.32",
- "resolved": "https://registry.npmjs.org/@types/diff-match-patch/-/diff-match-patch-1.0.32.tgz",
- "integrity": "sha512-bPYT5ECFiblzsVzyURaNhljBH2Gh1t9LowgUwciMrNAhFewLkHT2H0Mto07Y4/3KCOGZHRQll3CTtQZ0X11D/A==",
- "dev": true
- },
"node_modules/@types/download": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/@types/download/-/download-8.0.1.tgz",
- "integrity": "sha512-t5DjMD6Y1DxjXtEHl7Kt+nQn9rOmVLYD8p4Swrcc5QpgyqyqR2gXTIK6RwwMnNeFJ+ZIiIW789fQKzCrK7AOFA==",
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/@types/download/-/download-8.0.3.tgz",
+ "integrity": "sha512-IDwXjU7zCtuFVvI0Plnb02TpXyj3RA4YeOKQvEfsjdJeWxZ9hTl6lxeNsU2bLWn0aeAS7fyMl74w/TbdOlS2KQ==",
"dev": true,
"dependencies": {
"@types/decompress": "*",
- "@types/got": "^8",
+ "@types/got": "^9",
"@types/node": "*"
}
},
@@ -974,12 +1624,28 @@
}
},
"node_modules/@types/got": {
- "version": "8.3.6",
- "resolved": "https://registry.npmjs.org/@types/got/-/got-8.3.6.tgz",
- "integrity": "sha512-nvLlj+831dhdm4LR2Ly+HTpdLyBaMynoOr6wpIxS19d/bPeHQxFU5XQ6Gp6ohBpxvCWZM1uHQIC2+ySRH1rGrQ==",
+ "version": "9.6.12",
+ "resolved": "https://registry.npmjs.org/@types/got/-/got-9.6.12.tgz",
+ "integrity": "sha512-X4pj/HGHbXVLqTpKjA2ahI4rV/nNBc9mGO2I/0CgAra+F2dKgMXnENv2SRpemScBzBAI4vMelIVYViQxlSE6xA==",
"dev": true,
"dependencies": {
- "@types/node": "*"
+ "@types/node": "*",
+ "@types/tough-cookie": "*",
+ "form-data": "^2.5.0"
+ }
+ },
+ "node_modules/@types/got/node_modules/form-data": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
+ "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
+ "dev": true,
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 0.12"
}
},
"node_modules/@types/json-schema": {
@@ -1000,12 +1666,6 @@
"integrity": "sha512-n3tyKthHJbkiWhDZs3DkhkCzt2MexYHXlX0td5iMplyfwketaOeKboEVBqzceH7juqvEg3q5oUoBFxSLu7zFag==",
"dev": true
},
- "node_modules/@types/md5": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/@types/md5/-/md5-2.3.2.tgz",
- "integrity": "sha512-v+JFDu96+UYJ3/UWzB0mEglIS//MZXgRaJ4ubUPwOM0gvLc/kcQ3TWNYwENEK7/EcXGQVrW8h/XqednSjBd/Og==",
- "dev": true
- },
"node_modules/@types/minimatch": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
@@ -1018,67 +1678,11 @@
"integrity": "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==",
"dev": true
},
- "node_modules/@types/nock": {
- "version": "10.0.3",
- "resolved": "https://registry.npmjs.org/@types/nock/-/nock-10.0.3.tgz",
- "integrity": "sha512-OthuN+2FuzfZO3yONJ/QVjKmLEuRagS9TV9lEId+WHL9KhftYG+/2z+pxlr0UgVVXSpVD8woie/3fzQn8ft/Ow==",
- "dev": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
"node_modules/@types/node": {
- "version": "14.18.12",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz",
- "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A=="
- },
- "node_modules/@types/node-fetch": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz",
- "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==",
- "dependencies": {
- "@types/node": "*",
- "form-data": "^3.0.0"
- }
- },
- "node_modules/@types/node-fetch/node_modules/form-data": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
- "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/@types/request": {
- "version": "2.48.8",
- "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.8.tgz",
- "integrity": "sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ==",
- "dev": true,
- "dependencies": {
- "@types/caseless": "*",
- "@types/node": "*",
- "@types/tough-cookie": "*",
- "form-data": "^2.5.0"
- }
- },
- "node_modules/@types/request/node_modules/form-data": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
- "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
- "dev": true,
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 0.12"
- }
+ "version": "18.17.14",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.14.tgz",
+ "integrity": "sha512-ZE/5aB73CyGqgQULkLG87N9GnyGe5TcQjv34pwS8tfBs1IkCh0ASM69mydb2znqd6v0eX+9Ytvk6oQRqu8T1Vw==",
+ "dev": true
},
"node_modules/@types/semver": {
"version": "5.5.0",
@@ -1086,6 +1690,11 @@
"integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==",
"dev": true
},
+ "node_modules/@types/shimmer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.0.2.tgz",
+ "integrity": "sha512-dKkr1bTxbEsFlh2ARpKzcaAmsYixqt9UyCdoEZk8rHyE4iQYcDCyvSjDSf7JUWJHlJiTtbIoQjxKh6ViywqDAg=="
+ },
"node_modules/@types/shortid": {
"version": "0.0.29",
"resolved": "https://registry.npmjs.org/@types/shortid/-/shortid-0.0.29.tgz",
@@ -1120,29 +1729,15 @@
"dev": true
},
"node_modules/@types/tough-cookie": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.1.tgz",
- "integrity": "sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg==",
- "dev": true
- },
- "node_modules/@types/tunnel": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.3.tgz",
- "integrity": "sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/uuid": {
- "version": "8.3.4",
- "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz",
- "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.3.tgz",
+ "integrity": "sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==",
"dev": true
},
"node_modules/@types/vscode": {
- "version": "1.75.1",
- "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.75.1.tgz",
- "integrity": "sha512-emg7wdsTFzdi+elvoyoA+Q8keEautdQHyY5LNmHVM4PTpY8JgOTVADrGVyXGepJ6dVW2OS5/xnLUWh+nZxvdiA==",
+ "version": "1.81.0",
+ "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.81.0.tgz",
+ "integrity": "sha512-YIaCwpT+O2E7WOMq0eCgBEABE++SX3Yl/O02GoMIF2DO3qAtvw7m6BXFYsxnc6XyzwZgh6/s/UG78LSSombl2w==",
"dev": true
},
"node_modules/@types/which": {
@@ -1213,21 +1808,6 @@
}
}
},
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@typescript-eslint/experimental-utils": {
"version": "3.10.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz",
@@ -1337,96 +1917,223 @@
}
}
},
- "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz",
+ "integrity": "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==",
"dev": true,
"dependencies": {
- "lru-cache": "^6.0.0"
+ "eslint-visitor-keys": "^1.1.0"
},
- "bin": {
- "semver": "bin/semver.js"
+ "engines": {
+ "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@ungap/promise-all-settled": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
+ "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
+ "dev": true
+ },
+ "node_modules/@vscode/extension-telemetry": {
+ "version": "0.8.4",
+ "resolved": "https://registry.npmjs.org/@vscode/extension-telemetry/-/extension-telemetry-0.8.4.tgz",
+ "integrity": "sha512-UqM9+KZDDK3MyoHTsg6XNM+XO6pweQxzCpqJz33BoBEYAGsbBviRYcVpJglgay2oReuDD2pOI1Nio3BKNDLhWA==",
+ "dependencies": {
+ "@microsoft/1ds-core-js": "^3.2.13",
+ "@microsoft/1ds-post-js": "^3.2.13",
+ "@microsoft/applicationinsights-web-basic": "^3.0.2",
+ "applicationinsights": "^2.7.1"
},
"engines": {
- "node": ">=10"
+ "vscode": "^1.75.0"
}
},
- "node_modules/@typescript-eslint/visitor-keys": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz",
- "integrity": "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==",
+ "node_modules/@vscode/jupyter-lsp-middleware": {
+ "version": "0.2.50",
+ "resolved": "https://registry.npmjs.org/@vscode/jupyter-lsp-middleware/-/jupyter-lsp-middleware-0.2.50.tgz",
+ "integrity": "sha512-oOEpRZOJdKjByRMkUDVdGlQDiEO4/Mjr88u5zqktaS/4h0NtX8Hk6+HNQwENp4ur3Dpu47gD8wOTCrkOWzbHlA==",
+ "dependencies": {
+ "@vscode/lsp-notebook-concat": "^0.1.16",
+ "fast-myers-diff": "^3.0.1",
+ "sha.js": "^2.4.11",
+ "vscode-languageclient": "^8.0.2-next.4",
+ "vscode-languageserver-protocol": "^3.17.2-next.5",
+ "vscode-uri": "^3.0.2"
+ },
+ "engines": {
+ "vscode": "^1.67.0-insider"
+ }
+ },
+ "node_modules/@vscode/jupyter-lsp-middleware/node_modules/vscode-jsonrpc": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz",
+ "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@vscode/jupyter-lsp-middleware/node_modules/vscode-languageclient": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.1.0.tgz",
+ "integrity": "sha512-GL4QdbYUF/XxQlAsvYWZRV3V34kOkpRlvV60/72ghHfsYFnS/v2MANZ9P6sHmxFcZKOse8O+L9G7Czg0NUWing==",
+ "dependencies": {
+ "minimatch": "^5.1.0",
+ "semver": "^7.3.7",
+ "vscode-languageserver-protocol": "3.17.3"
+ },
+ "engines": {
+ "vscode": "^1.67.0"
+ }
+ },
+ "node_modules/@vscode/jupyter-lsp-middleware/node_modules/vscode-languageserver-protocol": {
+ "version": "3.17.3",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz",
+ "integrity": "sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==",
+ "dependencies": {
+ "vscode-jsonrpc": "8.1.0",
+ "vscode-languageserver-types": "3.17.3"
+ }
+ },
+ "node_modules/@vscode/jupyter-lsp-middleware/node_modules/vscode-languageserver-types": {
+ "version": "3.17.3",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz",
+ "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA=="
+ },
+ "node_modules/@vscode/lsp-notebook-concat": {
+ "version": "0.1.16",
+ "resolved": "https://registry.npmjs.org/@vscode/lsp-notebook-concat/-/lsp-notebook-concat-0.1.16.tgz",
+ "integrity": "sha512-jN2ut22GR/xelxHx2W9U+uZoylHGCezsNmsMYn20LgVHTcJMGL+4bL5PJeh63yo6P5XjAPtoeeymvp5EafJV+w==",
+ "dependencies": {
+ "object-hash": "^3.0.0",
+ "vscode-languageserver-protocol": "^3.17.2-next.5",
+ "vscode-uri": "^3.0.2"
+ }
+ },
+ "node_modules/@vscode/lsp-notebook-concat/node_modules/vscode-jsonrpc": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz",
+ "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@vscode/lsp-notebook-concat/node_modules/vscode-languageserver-protocol": {
+ "version": "3.17.5",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz",
+ "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==",
+ "dependencies": {
+ "vscode-jsonrpc": "8.2.0",
+ "vscode-languageserver-types": "3.17.5"
+ }
+ },
+ "node_modules/@vscode/lsp-notebook-concat/node_modules/vscode-languageserver-types": {
+ "version": "3.17.5",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz",
+ "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg=="
+ },
+ "node_modules/@vscode/test-electron": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.8.tgz",
+ "integrity": "sha512-b4aZZsBKtMGdDljAsOPObnAi7+VWIaYl3ylCz1jTs+oV6BZ4TNHcVNC3xUn0azPeszBmwSBDQYfFESIaUQnrOg==",
"dev": true,
"dependencies": {
- "eslint-visitor-keys": "^1.1.0"
+ "http-proxy-agent": "^4.0.1",
+ "https-proxy-agent": "^5.0.0",
+ "jszip": "^3.10.1",
+ "semver": "^7.5.2"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@vscode/vsce": {
+ "version": "2.26.1",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.26.1.tgz",
+ "integrity": "sha512-QOG6Ht7V93nhwcBxPWcG33UK0qDGEoJdg0xtVeaTN27W6PGdMJUJGTPhB/sNHUIFKwvwzv/zMAHvDgMNXbcwlA==",
+ "dev": true,
+ "dependencies": {
+ "@azure/identity": "^4.1.0",
+ "azure-devops-node-api": "^12.5.0",
+ "chalk": "^2.4.2",
+ "cheerio": "^1.0.0-rc.9",
+ "cockatiel": "^3.1.2",
+ "commander": "^6.2.1",
+ "form-data": "^4.0.0",
+ "glob": "^7.0.6",
+ "hosted-git-info": "^4.0.2",
+ "jsonc-parser": "^3.2.0",
+ "leven": "^3.1.0",
+ "markdown-it": "^12.3.2",
+ "mime": "^1.3.4",
+ "minimatch": "^3.0.3",
+ "parse-semver": "^1.1.1",
+ "read": "^1.0.7",
+ "semver": "^7.5.2",
+ "tmp": "^0.2.1",
+ "typed-rest-client": "^1.8.4",
+ "url-join": "^4.0.1",
+ "xml2js": "^0.5.0",
+ "yauzl": "^2.3.1",
+ "yazl": "^2.2.2"
+ },
+ "bin": {
+ "vsce": "vsce"
},
"engines": {
- "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
+ "node": ">= 16"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
+ "optionalDependencies": {
+ "keytar": "^7.7.0"
}
},
- "node_modules/@ungap/promise-all-settled": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
- "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
- "dev": true
- },
- "node_modules/@vscode/extension-telemetry": {
- "version": "0.7.4-preview",
- "resolved": "https://registry.npmjs.org/@vscode/extension-telemetry/-/extension-telemetry-0.7.4-preview.tgz",
- "integrity": "sha512-6OkvjCc+DaC9B26t3hj7vuAxf1ONm/p4LrVvFrapa+jBCKxXXUaV1Asz6+QxYaPfd4Ws/MlnFfCvlgvv3uYRwQ==",
- "dependencies": {
- "@microsoft/1ds-core-js": "^3.2.8",
- "@microsoft/1ds-post-js": "^3.2.8",
- "@microsoft/applicationinsights-web-basic": "^2.8.9",
- "applicationinsights": "2.3.6"
- },
+ "node_modules/@vscode/vsce/node_modules/commander": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+ "dev": true,
"engines": {
- "vscode": "^1.75.0"
+ "node": ">= 6"
}
},
- "node_modules/@vscode/jupyter-lsp-middleware": {
- "version": "0.2.50",
- "resolved": "https://registry.npmjs.org/@vscode/jupyter-lsp-middleware/-/jupyter-lsp-middleware-0.2.50.tgz",
- "integrity": "sha512-oOEpRZOJdKjByRMkUDVdGlQDiEO4/Mjr88u5zqktaS/4h0NtX8Hk6+HNQwENp4ur3Dpu47gD8wOTCrkOWzbHlA==",
+ "node_modules/@vscode/vsce/node_modules/hosted-git-info": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
+ "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
+ "dev": true,
"dependencies": {
- "@vscode/lsp-notebook-concat": "^0.1.16",
- "fast-myers-diff": "^3.0.1",
- "sha.js": "^2.4.11",
- "vscode-languageclient": "^8.0.2-next.4",
- "vscode-languageserver-protocol": "^3.17.2-next.5",
- "vscode-uri": "^3.0.2"
+ "lru-cache": "^6.0.0"
},
"engines": {
- "vscode": "^1.67.0-insider"
+ "node": ">=10"
}
},
- "node_modules/@vscode/lsp-notebook-concat": {
- "version": "0.1.16",
- "resolved": "https://registry.npmjs.org/@vscode/lsp-notebook-concat/-/lsp-notebook-concat-0.1.16.tgz",
- "integrity": "sha512-jN2ut22GR/xelxHx2W9U+uZoylHGCezsNmsMYn20LgVHTcJMGL+4bL5PJeh63yo6P5XjAPtoeeymvp5EafJV+w==",
+ "node_modules/@vscode/vsce/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
"dependencies": {
- "object-hash": "^3.0.0",
- "vscode-languageserver-protocol": "^3.17.2-next.5",
- "vscode-uri": "^3.0.2"
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
}
},
- "node_modules/@vscode/test-electron": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.1.3.tgz",
- "integrity": "sha512-ps/yJ/9ToUZtR1dHfWi1mDXtep1VoyyrmGKC3UnIbScToRQvbUjyy1VMqnMEW3EpMmC3g7+pyThIPtPyCLHyow==",
+ "node_modules/@vscode/vsce/node_modules/tmp": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
+ "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
"dev": true,
"dependencies": {
- "http-proxy-agent": "^4.0.1",
- "https-proxy-agent": "^5.0.0",
- "rimraf": "^3.0.2",
- "unzipper": "^0.10.11"
+ "rimraf": "^3.0.0"
},
"engines": {
- "node": ">=8.9.3"
+ "node": ">=8.17.0"
}
},
"node_modules/@webassemblyjs/ast": {
@@ -1627,7 +2334,6 @@
"version": "8.8.2",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
"integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
- "dev": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -1636,10 +2342,9 @@
}
},
"node_modules/acorn-import-assertions": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
- "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
- "dev": true,
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
+ "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
"peerDependencies": {
"acorn": "^8"
}
@@ -1662,6 +2367,33 @@
"node": ">=0.4.0"
}
},
+ "node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/agent-base/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
"node_modules/aggregate-error": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz",
@@ -1679,6 +2411,7 @@
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -1809,20 +2542,23 @@
}
},
"node_modules/applicationinsights": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-2.3.6.tgz",
- "integrity": "sha512-ZzXXpZpDRGcy6Pp5V319nDF9/+Ey7jNknEXZyaBajtC5onN0dcBem6ng5jcb3MPH2AjYWRI8XgyNEuzP/6Y5/A==",
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-2.7.3.tgz",
+ "integrity": "sha512-JY8+kTEkjbA+kAVNWDtpfW2lqsrDALfDXuxOs74KLPu2y13fy/9WB52V4LfYVTVcW1/jYOXjTxNS2gPZIDh1iw==",
"dependencies": {
- "@azure/core-http": "^2.2.3",
+ "@azure/core-auth": "^1.5.0",
+ "@azure/core-rest-pipeline": "1.10.1",
+ "@azure/core-util": "1.2.0",
+ "@azure/opentelemetry-instrumentation-azure-sdk": "^1.0.0-beta.5",
"@microsoft/applicationinsights-web-snippet": "^1.0.1",
- "@opentelemetry/api": "^1.0.4",
- "@opentelemetry/core": "^1.0.1",
- "@opentelemetry/sdk-trace-base": "^1.0.1",
- "@opentelemetry/semantic-conventions": "^1.0.1",
+ "@opentelemetry/api": "^1.4.1",
+ "@opentelemetry/core": "^1.15.2",
+ "@opentelemetry/sdk-trace-base": "^1.15.2",
+ "@opentelemetry/semantic-conventions": "^1.15.2",
"cls-hooked": "^4.2.2",
"continuation-local-storage": "^3.2.1",
- "diagnostic-channel": "1.1.0",
- "diagnostic-channel-publishers": "1.0.5"
+ "diagnostic-channel": "1.1.1",
+ "diagnostic-channel-publishers": "1.0.7"
},
"engines": {
"node": ">=8.0.0"
@@ -1836,12 +2572,6 @@
}
}
},
- "node_modules/aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
- "dev": true
- },
"node_modules/arch": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
@@ -1888,16 +2618,6 @@
"integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=",
"dev": true
},
- "node_modules/are-we-there-yet": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz",
- "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==",
- "dev": true,
- "dependencies": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
- }
- },
"node_modules/arg": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz",
@@ -2119,23 +2839,16 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/asn1": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
- "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
- "dependencies": {
- "safer-buffer": "~2.1.0"
- }
- },
"node_modules/asn1.js": {
- "version": "4.10.1",
- "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
- "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
+ "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
"dev": true,
"dependencies": {
"bn.js": "^4.0.0",
"inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0"
+ "minimalistic-assert": "^1.0.0",
+ "safer-buffer": "^2.1.0"
}
},
"node_modules/assert": {
@@ -2148,14 +2861,6 @@
"util": "0.10.3"
}
},
- "node_modules/assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "engines": {
- "node": ">=0.8"
- }
- },
"node_modules/assert/node_modules/inherits": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
@@ -2254,6 +2959,14 @@
"node": "<=0.11.8 || >0.11.10"
}
},
+ "node_modules/async-listener/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
"node_modules/async-settle": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz",
@@ -2269,7 +2982,7 @@
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"node_modules/atob": {
"version": "2.1.2",
@@ -2295,19 +3008,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/aws4": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
- "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
- },
"node_modules/axe-core": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz",
@@ -2317,14 +3017,6 @@
"node": ">=4"
}
},
- "node_modules/axios": {
- "version": "0.26.1",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz",
- "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==",
- "dependencies": {
- "follow-redirects": "^1.14.8"
- }
- },
"node_modules/axobject-query": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
@@ -2332,9 +3024,9 @@
"dev": true
},
"node_modules/azure-devops-node-api": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.0.1.tgz",
- "integrity": "sha512-YMdjAw9l5p/6leiyIloxj3k7VIvYThKjvqgiQn88r3nhT93ENwsoDS3A83CyJ4uTWzCZ5f5jCi6c27rTU5Pz+A==",
+ "version": "12.5.0",
+ "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz",
+ "integrity": "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==",
"dev": true,
"dependencies": {
"tunnel": "0.0.6",
@@ -2478,21 +3170,27 @@
}
]
},
- "node_modules/bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+ "node_modules/bent": {
+ "version": "7.3.12",
+ "resolved": "https://registry.npmjs.org/bent/-/bent-7.3.12.tgz",
+ "integrity": "sha512-T3yrKnVGB63zRuoco/7Ybl7BwwGZR0lceoVG5XmQyMIH9s19SV5m+a8qam4if0zQuAmOQTyPTPmsQBdAorGK3w==",
+ "dev": true,
"dependencies": {
- "tweetnacl": "^0.14.3"
+ "bytesish": "^0.4.1",
+ "caseless": "~0.12.0",
+ "is-stream": "^2.0.0"
}
},
- "node_modules/big-integer": {
- "version": "1.6.49",
- "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.49.tgz",
- "integrity": "sha512-KJ7VhqH+f/BOt9a3yMwJNmcZjG53ijWMTjSAGMveQWyLwqIiwkjNP5PFgDob3Snnx86SjDj6I89fIbv0dkQeNw==",
+ "node_modules/bent/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"dev": true,
"engines": {
- "node": ">=0.6"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/big.js": {
@@ -2504,19 +3202,6 @@
"node": "*"
}
},
- "node_modules/binary": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
- "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=",
- "dev": true,
- "dependencies": {
- "buffers": "~0.1.1",
- "chainsaw": "~0.1.0"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/binary-extensions": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
@@ -2650,30 +3335,81 @@
}
},
"node_modules/browserify-rsa": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
- "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
+ "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
"dev": true,
"dependencies": {
- "bn.js": "^4.1.0",
+ "bn.js": "^5.0.0",
"randombytes": "^2.0.1"
}
},
+ "node_modules/browserify-rsa/node_modules/bn.js": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
+ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
+ "dev": true
+ },
"node_modules/browserify-sign": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
- "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz",
+ "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==",
"dev": true,
"dependencies": {
- "bn.js": "^4.1.1",
- "browserify-rsa": "^4.0.0",
- "create-hash": "^1.1.0",
- "create-hmac": "^1.1.2",
- "elliptic": "^6.0.0",
- "inherits": "^2.0.1",
- "parse-asn1": "^5.0.0"
+ "bn.js": "^5.2.1",
+ "browserify-rsa": "^4.1.0",
+ "create-hash": "^1.2.0",
+ "create-hmac": "^1.1.7",
+ "elliptic": "^6.5.4",
+ "inherits": "^2.0.4",
+ "parse-asn1": "^5.1.6",
+ "readable-stream": "^3.6.2",
+ "safe-buffer": "^5.2.1"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/browserify-sign/node_modules/bn.js": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
+ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
+ "dev": true
+ },
+ "node_modules/browserify-sign/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
}
},
+ "node_modules/browserify-sign/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
"node_modules/browserify-zlib": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
@@ -2683,16 +3419,10 @@
"pako": "~1.0.5"
}
},
- "node_modules/browserify-zlib/node_modules/pako": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz",
- "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==",
- "dev": true
- },
"node_modules/browserslist": {
- "version": "4.20.2",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz",
- "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==",
+ "version": "4.21.9",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz",
+ "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==",
"dev": true,
"funding": [
{
@@ -2702,14 +3432,17 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001317",
- "electron-to-chromium": "^1.4.84",
- "escalade": "^3.1.1",
- "node-releases": "^2.0.2",
- "picocolors": "^1.0.0"
+ "caniuse-lite": "^1.0.30001503",
+ "electron-to-chromium": "^1.4.431",
+ "node-releases": "^2.0.12",
+ "update-browserslist-db": "^1.0.11"
},
"bin": {
"browserslist": "cli.js"
@@ -2767,6 +3500,12 @@
"node": "*"
}
},
+ "node_modules/buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
+ "dev": true
+ },
"node_modules/buffer-fill": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
@@ -2779,36 +3518,24 @@
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
"dev": true
},
- "node_modules/buffer-indexof-polyfill": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz",
- "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==",
- "dev": true,
- "engines": {
- "node": ">=0.10"
- }
- },
"node_modules/buffer-xor": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
"integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
"dev": true
},
- "node_modules/buffers": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
- "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=",
- "dev": true,
- "engines": {
- "node": ">=0.2.0"
- }
- },
"node_modules/builtin-status-codes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
"integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
"dev": true
},
+ "node_modules/bytesish": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/bytesish/-/bytesish-0.4.4.tgz",
+ "integrity": "sha512-i4uu6M4zuMUiyfZN4RU2+i9+peJh//pXhd9x1oSe1LBkZ3LEbCoygu8W0bXTukU1Jme2txKuotpCZRaC3FLxcQ==",
+ "dev": true
+ },
"node_modules/cache-base": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
@@ -2869,13 +3596,19 @@
}
},
"node_modules/call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
"dev": true,
"dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -2891,9 +3624,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001320",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001320.tgz",
- "integrity": "sha512-MWPzG54AGdo3nWx7zHZTefseM5Y1ccM7hlQKHRqJkPozUaw3hNbBTMmLn16GG2FUzjR13Cr3NPfhIieX5PzXDA==",
+ "version": "1.0.30001512",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001512.tgz",
+ "integrity": "sha512-2S9nK0G/mE+jasCUsMPlARhRCts1ebcp2Ji8Y8PWi4NDE1iRdLCnEPHkEfeBrGC45L4isBx5ur3IQ6yTE2mRZw==",
"dev": true,
"funding": [
{
@@ -2903,13 +3636,18 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
}
]
},
"node_modules/caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
+ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
+ "dev": true
},
"node_modules/chai": {
"version": "4.3.6",
@@ -2950,18 +3688,6 @@
"chai": ">= 2.1.2 < 5"
}
},
- "node_modules/chainsaw": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
- "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=",
- "dev": true,
- "dependencies": {
- "traverse": ">=0.3.0 <0.4"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
@@ -2980,6 +3706,7 @@
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
"integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=",
+ "dev": true,
"engines": {
"node": "*"
}
@@ -3315,10 +4042,11 @@
}
},
"node_modules/chownr": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz",
- "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==",
- "dev": true
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+ "dev": true,
+ "optional": true
},
"node_modules/chrome-trace-event": {
"version": "1.0.2",
@@ -3349,6 +4077,11 @@
"deprecated": "CircularJSON is in maintenance only, flatted is its successor.",
"dev": true
},
+ "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=="
+ },
"node_modules/class-utils": {
"version": "0.3.6",
"resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
@@ -3388,7 +4121,7 @@
"node_modules/cliui": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==",
"dev": true,
"dependencies": {
"string-width": "^1.0.1",
@@ -3399,7 +4132,7 @@
"node_modules/cliui/node_modules/ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
"dev": true,
"engines": {
"node": ">=0.10.0"
@@ -3408,7 +4141,7 @@
"node_modules/cliui/node_modules/strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
"dev": true,
"dependencies": {
"ansi-regex": "^2.0.0"
@@ -3488,10 +4221,27 @@
"node": "^4.7 || >=6.9 || >=7.3 || >=8.2.1"
}
},
+ "node_modules/cls-hooked/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/cockatiel": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.1.3.tgz",
+ "integrity": "sha512-xC759TpZ69d7HhfDp8m2WkRwEUiCkxY8Ee2OQH/3H6zmy2D/5Sm+zSTbPRa+V2QyjDtpMvjOIAOVjA2gp6N1kQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=16"
+ }
+ },
"node_modules/code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+ "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",
"dev": true,
"engines": {
"node": ">=0.10.0"
@@ -3630,13 +4380,7 @@
"node_modules/console-browserify": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
- "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
- "dev": true
- },
- "node_modules/console-control-strings": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
+ "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
"dev": true
},
"node_modules/constants-browserify": {
@@ -3667,13 +4411,10 @@
}
},
"node_modules/convert-source-map": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
- "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.1"
- }
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "dev": true
},
"node_modules/copy-descriptor": {
"version": "0.1.1",
@@ -3749,7 +4490,8 @@
"node_modules/core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
},
"node_modules/create-ecdh": {
"version": "4.0.3",
@@ -3810,6 +4552,15 @@
"node": ">=4.8"
}
},
+ "node_modules/cross-spawn/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
"node_modules/cross-spawn/node_modules/which": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
@@ -3826,6 +4577,7 @@
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
"integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=",
+ "dev": true,
"engines": {
"node": "*"
}
@@ -3868,17 +4620,6 @@
"integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
"dev": true
},
- "node_modules/dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "dependencies": {
- "assert-plus": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
"node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -4102,28 +4843,12 @@
"node": ">=0.12"
}
},
- "node_modules/deep-equal": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
- "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
- "dev": true,
- "dependencies": {
- "is-arguments": "^1.0.4",
- "is-date-object": "^1.0.1",
- "is-regex": "^1.0.4",
- "object-is": "^1.0.1",
- "object-keys": "^1.1.1",
- "regexp.prototype.flags": "^1.2.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"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,
+ "optional": true,
"engines": {
"node": ">=4.0.0"
}
@@ -4185,6 +4910,32 @@
"node": ">= 0.10"
}
},
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/define-properties": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
@@ -4273,17 +5024,11 @@
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"engines": {
"node": ">=0.4.0"
}
},
- "node_modules/delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
- "dev": true
- },
"node_modules/des.js": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
@@ -4304,29 +5049,27 @@
}
},
"node_modules/detect-libc": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
- "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
+ "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==",
"dev": true,
- "bin": {
- "detect-libc": "bin/detect-libc.js"
- },
+ "optional": true,
"engines": {
- "node": ">=0.10"
+ "node": ">=8"
}
},
"node_modules/diagnostic-channel": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/diagnostic-channel/-/diagnostic-channel-1.1.0.tgz",
- "integrity": "sha512-fwujyMe1gj6rk6dYi9hMZm0c8Mz8NDMVl2LB4iaYh3+LIAThZC8RKFGXWG0IML2OxAit/ZFRgZhMkhQ3d/bobQ==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/diagnostic-channel/-/diagnostic-channel-1.1.1.tgz",
+ "integrity": "sha512-r2HV5qFkUICyoaKlBEpLKHjxMXATUf/l+h8UZPGBHGLy4DDiY2sOLcIctax4eRnTw5wH2jTMExLntGPJ8eOJxw==",
"dependencies": {
- "semver": "^5.3.0"
+ "semver": "^7.5.3"
}
},
"node_modules/diagnostic-channel-publishers": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/diagnostic-channel-publishers/-/diagnostic-channel-publishers-1.0.5.tgz",
- "integrity": "sha512-dJwUS0915pkjjimPJVDnS/QQHsH0aOYhnZsLJdnZIMOrB+csj8RnZhWTuwnm8R5v3Z7OZs+ksv5luC14DGB7eg==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/diagnostic-channel-publishers/-/diagnostic-channel-publishers-1.0.7.tgz",
+ "integrity": "sha512-SEECbY5AiVt6DfLkhkaHNeshg1CogdLLANA8xlG/TKvS+XUgvIKl7VspJGYiEdL5OUyzMVnr7o0AwB7f+/Mjtg==",
"peerDependencies": {
"diagnostic-channel": "*"
}
@@ -4340,11 +5083,6 @@
"node": ">=0.3.1"
}
},
- "node_modules/diff-match-patch": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz",
- "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw=="
- },
"node_modules/diffie-hellman": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
@@ -4447,21 +5185,21 @@
"once": "^1.3.1"
}
},
+ "node_modules/download/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
"node_modules/duplexer": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
"integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
"dev": true
},
- "node_modules/duplexer2": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
- "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
- "dev": true,
- "dependencies": {
- "readable-stream": "^2.0.2"
- }
- },
"node_modules/duplexer3": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
@@ -4490,19 +5228,19 @@
"object.defaults": "^1.1.0"
}
},
- "node_modules/ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+ "node_modules/ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+ "dev": true,
"dependencies": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
+ "safe-buffer": "^5.0.1"
}
},
"node_modules/electron-to-chromium": {
- "version": "1.4.92",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.92.tgz",
- "integrity": "sha512-YAVbvQIcDE/IJ/vzDMjD484/hsRbFPW2qXJPaYTfOhtligmfYEYOep+5QojpaEU9kq6bMvNeC2aG7arYvTHYsA==",
+ "version": "1.4.450",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.450.tgz",
+ "integrity": "sha512-BLG5HxSELlrMx7dJ2s+8SFlsCtJp37Zpk2VAxyC6CZtbc+9AJeZHfYHbrlSgdXp6saQ8StMqOTEDaBKgA7u1sw==",
"dev": true
},
"node_modules/elliptic": {
@@ -4622,12 +5360,6 @@
"is-arrayish": "^0.2.1"
}
},
- "node_modules/error-ex/node_modules/is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
- "dev": true
- },
"node_modules/es-abstract": {
"version": "1.19.2",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.2.tgz",
@@ -4662,6 +5394,27 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/es-module-lexer": {
"version": "0.9.3",
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
@@ -4686,22 +5439,21 @@
}
},
"node_modules/es5-ext": {
- "version": "0.10.53",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz",
- "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==",
+ "version": "0.10.64",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
+ "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
"dev": true,
+ "hasInstallScript": true,
"dependencies": {
- "es6-iterator": "~2.0.3",
- "es6-symbol": "~3.1.3",
- "next-tick": "~1.0.0"
+ "es6-iterator": "^2.0.3",
+ "es6-symbol": "^3.1.3",
+ "esniff": "^2.0.1",
+ "next-tick": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
}
},
- "node_modules/es5-ext/node_modules/next-tick": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
- "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
- "dev": true
- },
"node_modules/es6-error": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
@@ -5143,9 +5895,9 @@
}
},
"node_modules/eslint-plugin-react/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
@@ -5253,13 +6005,20 @@
}
},
"node_modules/eslint/node_modules/debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"dependencies": {
- "ms": "^2.1.1"
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
"node_modules/eslint/node_modules/doctrine": {
@@ -5340,19 +6099,6 @@
"node": ">= 4"
}
},
- "node_modules/eslint/node_modules/levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
"node_modules/eslint/node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -5365,23 +6111,6 @@
"node": "*"
}
},
- "node_modules/eslint/node_modules/optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
- "dev": true,
- "dependencies": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
"node_modules/eslint/node_modules/path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
@@ -5391,15 +6120,6 @@
"node": ">=8"
}
},
- "node_modules/eslint/node_modules/prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
"node_modules/eslint/node_modules/progress": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
@@ -5409,21 +6129,6 @@
"node": ">=0.4.0"
}
},
- "node_modules/eslint/node_modules/semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/eslint/node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -5457,18 +6162,6 @@
"node": ">=8"
}
},
- "node_modules/eslint/node_modules/type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
"node_modules/eslint/node_modules/type-fest": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
@@ -5481,6 +6174,27 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/esniff": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
+ "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
+ "dev": true,
+ "dependencies": {
+ "d": "^1.0.1",
+ "es5-ext": "^0.10.62",
+ "event-emitter": "^0.3.5",
+ "type": "^2.7.2"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esniff/node_modules/type": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
+ "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
+ "dev": true
+ },
"node_modules/espree": {
"version": "7.3.1",
"resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
@@ -5567,6 +6281,16 @@
"node": ">=0.10.0"
}
},
+ "node_modules/event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
+ "dev": true,
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "~0.10.14"
+ }
+ },
"node_modules/events": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
@@ -5724,6 +6448,7 @@
"resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
"integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
"dev": true,
+ "optional": true,
"engines": {
"node": ">=6"
}
@@ -5799,7 +6524,8 @@
"node_modules/extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
},
"node_modules/extend-shallow": {
"version": "3.0.2",
@@ -5907,14 +6633,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
- "engines": [
- "node >=0.6.0"
- ]
- },
"node_modules/fancy-log": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
@@ -5933,7 +6651,8 @@
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
},
"node_modules/fast-glob": {
"version": "3.2.11",
@@ -6024,7 +6743,8 @@
"node_modules/fast-json-stable-stringify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
- "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
},
"node_modules/fast-levenshtein": {
"version": "2.0.6",
@@ -6148,6 +6868,23 @@
"node": ">=8"
}
},
+ "node_modules/find-cache-dir": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
+ "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
+ "dev": true,
+ "dependencies": {
+ "commondir": "^1.0.1",
+ "make-dir": "^3.0.2",
+ "pkg-dir": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
+ }
+ },
"node_modules/find-up": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
@@ -6248,25 +6985,6 @@
"readable-stream": "^2.3.6"
}
},
- "node_modules/follow-redirects": {
- "version": "1.15.1",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz",
- "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==",
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/RubenVerborgh"
- }
- ],
- "engines": {
- "node": ">=4.0"
- },
- "peerDependenciesMeta": {
- "debug": {
- "optional": true
- }
- }
- },
"node_modules/for-in": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
@@ -6339,25 +7057,17 @@
"node": ">=8"
}
},
- "node_modules/forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
- "engines": {
- "node": "*"
- }
- },
"node_modules/form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"dependencies": {
"asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
+ "combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
},
"engines": {
- "node": ">= 0.12"
+ "node": ">= 6"
}
},
"node_modules/fragment-cache": {
@@ -6456,49 +7166,24 @@
"node_modules/fsevents": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/fstream": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
- "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "inherits": "~2.0.0",
- "mkdirp": ">=0.5 0",
- "rimraf": "2"
- },
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/fstream/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/functional-red-black-tree": {
"version": "1.0.1",
@@ -6506,41 +7191,13 @@
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
"dev": true
},
- "node_modules/gauge": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
- "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
- "dev": true,
- "dependencies": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
- }
- },
- "node_modules/gauge/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gauge/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
"dev": true,
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=6.9.0"
}
},
"node_modules/get-caller-file": {
@@ -6550,23 +7207,28 @@
"dev": true
},
"node_modules/get-func-name": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
- "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
+ "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
"dev": true,
"engines": {
"node": "*"
}
},
"node_modules/get-intrinsic": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
- "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
"dev": true,
"dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1"
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -6627,19 +7289,12 @@
"node": ">=0.10.0"
}
},
- "node_modules/getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "dependencies": {
- "assert-plus": "^1.0.0"
- }
- },
"node_modules/github-from-package": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
- "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=",
- "dev": true
+ "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
+ "dev": true,
+ "optional": true
},
"node_modules/glob": {
"version": "7.2.0",
@@ -6898,6 +7553,18 @@
"node": ">= 0.10"
}
},
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/got": {
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz",
@@ -6973,64 +7640,7 @@
"node": ">= 0.10"
}
},
- "node_modules/gulp-typescript": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-5.0.1.tgz",
- "integrity": "sha512-YuMMlylyJtUSHG1/wuSVTrZp60k1dMEFKYOvDf7OvbAJWrDtxxD4oZon4ancdWwzjj30ztiidhe4VXJniF0pIQ==",
- "dev": true,
- "dependencies": {
- "ansi-colors": "^3.0.5",
- "plugin-error": "^1.0.1",
- "source-map": "^0.7.3",
- "through2": "^3.0.0",
- "vinyl": "^2.1.0",
- "vinyl-fs": "^3.0.3"
- },
- "engines": {
- "node": ">= 8"
- },
- "peerDependencies": {
- "typescript": "~2.7.1 || >=2.8.0-dev || >=2.9.0-dev || ~3.0.0 || >=3.0.0-dev || >=3.1.0-dev || >= 3.2.0-dev || >= 3.3.0-dev"
- }
- },
- "node_modules/gulp-typescript/node_modules/ansi-colors": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
- "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/gulp-typescript/node_modules/source-map": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
- "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/gulp-typescript/node_modules/through2": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
- "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.4",
- "readable-stream": "2 || 3"
- }
- },
- "node_modules/gulp/node_modules/camelcase": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
- "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gulp/node_modules/gulp-cli": {
+ "node_modules/gulp-cli": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz",
"integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==",
@@ -7062,28 +7672,25 @@
"node": ">= 0.10"
}
},
- "node_modules/gulp/node_modules/v8flags": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz",
- "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==",
+ "node_modules/gulp-cli/node_modules/camelcase": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+ "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==",
"dev": true,
- "dependencies": {
- "homedir-polyfill": "^1.0.1"
- },
"engines": {
- "node": ">= 0.10"
+ "node": ">=0.10.0"
}
},
- "node_modules/gulp/node_modules/y18n": {
+ "node_modules/gulp-cli/node_modules/y18n": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
"integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",
"dev": true
},
- "node_modules/gulp/node_modules/yargs": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.1.tgz",
- "integrity": "sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g==",
+ "node_modules/gulp-cli/node_modules/yargs": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz",
+ "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==",
"dev": true,
"dependencies": {
"camelcase": "^3.0.0",
@@ -7098,19 +7705,67 @@
"string-width": "^1.0.2",
"which-module": "^1.0.0",
"y18n": "^3.2.1",
- "yargs-parser": "5.0.0-security.0"
+ "yargs-parser": "^5.0.1"
}
},
- "node_modules/gulp/node_modules/yargs-parser": {
- "version": "5.0.0-security.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz",
- "integrity": "sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ==",
+ "node_modules/gulp-cli/node_modules/yargs-parser": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz",
+ "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==",
"dev": true,
"dependencies": {
"camelcase": "^3.0.0",
"object.assign": "^4.1.0"
}
},
+ "node_modules/gulp-typescript": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-5.0.1.tgz",
+ "integrity": "sha512-YuMMlylyJtUSHG1/wuSVTrZp60k1dMEFKYOvDf7OvbAJWrDtxxD4oZon4ancdWwzjj30ztiidhe4VXJniF0pIQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-colors": "^3.0.5",
+ "plugin-error": "^1.0.1",
+ "source-map": "^0.7.3",
+ "through2": "^3.0.0",
+ "vinyl": "^2.1.0",
+ "vinyl-fs": "^3.0.3"
+ },
+ "engines": {
+ "node": ">= 8"
+ },
+ "peerDependencies": {
+ "typescript": "~2.7.1 || >=2.8.0-dev || >=2.9.0-dev || ~3.0.0 || >=3.0.0-dev || >=3.1.0-dev || >= 3.2.0-dev || >= 3.3.0-dev"
+ }
+ },
+ "node_modules/gulp-typescript/node_modules/ansi-colors": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
+ "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/gulp-typescript/node_modules/source-map": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/gulp-typescript/node_modules/through2": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
+ "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.4",
+ "readable-stream": "2 || 3"
+ }
+ },
"node_modules/gulplog": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
@@ -7138,32 +7793,10 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/har-validator": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
- "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
- "deprecated": "this library is no longer supported",
- "dependencies": {
- "ajv": "^6.5.5",
- "har-schema": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
"dependencies": {
"function-bind": "^1.1.1"
},
@@ -7189,6 +7822,30 @@
"node": ">=4"
}
},
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/has-symbol-support-x": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz",
@@ -7237,12 +7894,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
- "dev": true
- },
"node_modules/has-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
@@ -7326,6 +7977,18 @@
"node": ">=8"
}
},
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
@@ -7390,18 +8053,6 @@
"node": ">= 6"
}
},
- "node_modules/http-proxy-agent/node_modules/agent-base": {
- "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,
- "dependencies": {
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
"node_modules/http-proxy-agent/node_modules/debug": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
@@ -7419,56 +8070,28 @@
}
}
},
- "node_modules/http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
- "dependencies": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- },
- "engines": {
- "node": ">=0.8",
- "npm": ">=1.3.7"
- }
- },
"node_modules/https-browserify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
- "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
- "dev": true
- },
- "node_modules/https-proxy-agent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
- "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
- "dev": true,
- "dependencies": {
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/https-proxy-agent/node_modules/agent-base": {
- "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,
+ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+ "dev": true
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
"dependencies": {
+ "agent-base": "6",
"debug": "4"
},
"engines": {
- "node": ">= 6.0.0"
+ "node": ">= 6"
}
},
"node_modules/https-proxy-agent/node_modules/debug": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
- "dev": true,
"dependencies": {
"ms": "2.1.2"
},
@@ -7530,6 +8153,12 @@
"node": ">= 4"
}
},
+ "node_modules/immediate": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
+ "dev": true
+ },
"node_modules/import-fresh": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
@@ -7555,6 +8184,17 @@
"node": ">=4"
}
},
+ "node_modules/import-in-the-middle": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.4.2.tgz",
+ "integrity": "sha512-9WOz1Yh/cvO/p69sxRmhyQwrIGGSp7EIdcb+fFNVi7CzQGQB8U1/1XrKVSbEd/GNOAeM0peJtmi7+qphe7NvAw==",
+ "dependencies": {
+ "acorn": "^8.8.2",
+ "acorn-import-assertions": "^1.9.0",
+ "cjs-module-lexer": "^1.2.2",
+ "module-details-from-path": "^1.0.3"
+ }
+ },
"node_modules/import-local": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
@@ -7656,7 +8296,7 @@
"node_modules/invert-kv": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
- "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
+ "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==",
"dev": true,
"engines": {
"node": ">=0.10.0"
@@ -7715,6 +8355,12 @@
"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.2",
"resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz",
@@ -7739,7 +8385,8 @@
"node_modules/is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
},
"node_modules/is-callable": {
"version": "1.2.4",
@@ -7754,10 +8401,9 @@
}
},
"node_modules/is-core-module": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
- "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
- "dev": true,
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
+ "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
"dependencies": {
"has": "^1.0.3"
},
@@ -7827,6 +8473,21 @@
"node": ">=0.10.0"
}
},
+ "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,
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-extendable": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
@@ -7848,7 +8509,7 @@
"node_modules/is-fullwidth-code-point": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
"dev": true,
"dependencies": {
"number-is-nan": "^1.0.0"
@@ -8103,7 +8764,8 @@
"node_modules/is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "dev": true
},
"node_modules/is-unc-path": {
"version": "1.0.0",
@@ -8165,6 +8827,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "dev": true,
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
@@ -8185,15 +8859,10 @@
"node": ">=0.10.0"
}
},
- "node_modules/isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
- },
"node_modules/istanbul-lib-coverage": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz",
- "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
+ "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
"dev": true,
"engines": {
"node": ">=8"
@@ -8212,15 +8881,12 @@
}
},
"node_modules/istanbul-lib-instrument": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.0.tgz",
- "integrity": "sha512-Nm4wVHdo7ZXSG30KjZ2Wl5SU/Bw7bDx1PdaiIFzEStdjs0H12mOTncn1GVYuqQSaZxpg87VGBRsVRPGD2cD1AQ==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
+ "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
"dev": true,
"dependencies": {
"@babel/core": "^7.7.5",
- "@babel/parser": "^7.7.5",
- "@babel/template": "^7.7.4",
- "@babel/traverse": "^7.7.4",
"@istanbuljs/schema": "^0.1.2",
"istanbul-lib-coverage": "^3.0.0",
"semver": "^6.3.0"
@@ -8229,206 +8895,36 @@
"node": ">=8"
}
},
- "node_modules/istanbul-lib-instrument/node_modules/@babel/core": {
- "version": "7.7.7",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.7.tgz",
- "integrity": "sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.5.5",
- "@babel/generator": "^7.7.7",
- "@babel/helpers": "^7.7.4",
- "@babel/parser": "^7.7.7",
- "@babel/template": "^7.7.4",
- "@babel/traverse": "^7.7.4",
- "@babel/types": "^7.7.4",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "json5": "^2.1.0",
- "lodash": "^4.17.13",
- "resolve": "^1.3.2",
- "semver": "^5.4.1",
- "source-map": "^0.5.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/istanbul-lib-instrument/node_modules/@babel/generator": {
- "version": "7.7.7",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz",
- "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.7.4",
- "jsesc": "^2.5.1",
- "lodash": "^4.17.13",
- "source-map": "^0.5.0"
- }
- },
- "node_modules/istanbul-lib-instrument/node_modules/@babel/helper-function-name": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz",
- "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-get-function-arity": "^7.7.4",
- "@babel/template": "^7.7.4",
- "@babel/types": "^7.7.4"
- }
- },
- "node_modules/istanbul-lib-instrument/node_modules/@babel/helper-get-function-arity": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz",
- "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.7.4"
- }
- },
- "node_modules/istanbul-lib-instrument/node_modules/@babel/helper-split-export-declaration": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz",
- "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.7.4"
- }
- },
- "node_modules/istanbul-lib-instrument/node_modules/@babel/helpers": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.4.tgz",
- "integrity": "sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg==",
- "dev": true,
- "dependencies": {
- "@babel/template": "^7.7.4",
- "@babel/traverse": "^7.7.4",
- "@babel/types": "^7.7.4"
- }
- },
- "node_modules/istanbul-lib-instrument/node_modules/@babel/parser": {
- "version": "7.7.7",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz",
- "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==",
- "dev": true,
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/istanbul-lib-instrument/node_modules/@babel/template": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz",
- "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.0.0",
- "@babel/parser": "^7.7.4",
- "@babel/types": "^7.7.4"
- }
- },
- "node_modules/istanbul-lib-instrument/node_modules/@babel/traverse": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz",
- "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.5.5",
- "@babel/generator": "^7.7.4",
- "@babel/helper-function-name": "^7.7.4",
- "@babel/helper-split-export-declaration": "^7.7.4",
- "@babel/parser": "^7.7.4",
- "@babel/types": "^7.7.4",
- "debug": "^4.1.0",
- "globals": "^11.1.0",
- "lodash": "^4.17.13"
- }
- },
- "node_modules/istanbul-lib-instrument/node_modules/@babel/types": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
- "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2",
- "lodash": "^4.17.13",
- "to-fast-properties": "^2.0.0"
- }
- },
- "node_modules/istanbul-lib-instrument/node_modules/convert-source-map": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
- "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.1"
- }
- },
- "node_modules/istanbul-lib-instrument/node_modules/debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
- "dev": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
"node_modules/istanbul-lib-instrument/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
}
},
- "node_modules/istanbul-lib-instrument/node_modules/source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/istanbul-lib-processinfo": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz",
- "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz",
+ "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==",
"dev": true,
"dependencies": {
"archy": "^1.0.0",
- "cross-spawn": "^7.0.0",
- "istanbul-lib-coverage": "^3.0.0-alpha.1",
- "make-dir": "^3.0.0",
+ "cross-spawn": "^7.0.3",
+ "istanbul-lib-coverage": "^3.2.0",
"p-map": "^3.0.0",
"rimraf": "^3.0.0",
- "uuid": "^3.3.3"
+ "uuid": "^8.3.2"
},
"engines": {
"node": ">=8"
}
},
"node_modules/istanbul-lib-processinfo/node_modules/cross-spawn": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz",
- "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==",
+ "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",
@@ -8481,16 +8977,6 @@
"node": ">=8"
}
},
- "node_modules/istanbul-lib-processinfo/node_modules/uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
- "dev": true,
- "bin": {
- "uuid": "bin/uuid"
- }
- },
"node_modules/istanbul-lib-report": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
@@ -8541,19 +9027,26 @@
}
},
"node_modules/istanbul-lib-source-maps/node_modules/debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"dependencies": {
- "ms": "^2.1.1"
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
"node_modules/istanbul-reports": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz",
- "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
+ "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
"dev": true,
"dependencies": {
"html-escaper": "^2.0.0",
@@ -8646,11 +9139,6 @@
"node": ">=4"
}
},
- "node_modules/jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
- },
"node_modules/jsesc": {
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
@@ -8675,15 +9163,11 @@
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
"dev": true
},
- "node_modules/json-schema": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
- "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
- },
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
},
"node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
@@ -8691,11 +9175,6 @@
"integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
"dev": true
},
- "node_modules/json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
- },
"node_modules/json5": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
@@ -8709,22 +9188,51 @@
}
},
"node_modules/jsonc-parser": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz",
- "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA=="
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
+ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w=="
},
- "node_modules/jsprim": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
- "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
+ "node_modules/jsonwebtoken": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
+ "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==",
+ "dev": true,
"dependencies": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.4.0",
- "verror": "1.10.0"
+ "jws": "^3.2.2",
+ "lodash.includes": "^4.3.0",
+ "lodash.isboolean": "^3.0.3",
+ "lodash.isinteger": "^4.0.4",
+ "lodash.isnumber": "^3.0.3",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.isstring": "^4.0.1",
+ "lodash.once": "^4.0.0",
+ "ms": "^2.1.1",
+ "semver": "^7.5.4"
},
"engines": {
- "node": ">=0.6.0"
+ "node": ">=12",
+ "npm": ">=6"
+ }
+ },
+ "node_modules/jsonwebtoken/node_modules/jwa": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
+ "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
+ "dev": true,
+ "dependencies": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jsonwebtoken/node_modules/jws": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
+ "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
+ "dev": true,
+ "dependencies": {
+ "jwa": "^1.4.1",
+ "safe-buffer": "^5.0.1"
}
},
"node_modules/jsx-ast-utils": {
@@ -8740,6 +9248,18 @@
"node": ">=4.0"
}
},
+ "node_modules/jszip": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
+ "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
+ "dev": true,
+ "dependencies": {
+ "lie": "~3.3.0",
+ "pako": "~1.0.2",
+ "readable-stream": "~2.3.6",
+ "setimmediate": "^1.0.5"
+ }
+ },
"node_modules/just-debounce": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz",
@@ -8752,15 +9272,37 @@
"integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==",
"dev": true
},
+ "node_modules/jwa": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
+ "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
+ "dev": true,
+ "dependencies": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jws": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
+ "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
+ "dev": true,
+ "dependencies": {
+ "jwa": "^2.0.0",
+ "safe-buffer": "^5.0.1"
+ }
+ },
"node_modules/keytar": {
- "version": "7.7.0",
- "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.7.0.tgz",
- "integrity": "sha512-YEY9HWqThQc5q5xbXbRwsZTh2PJ36OSYRjSv3NN2xf5s5dpLTjEZnC2YikR29OaVybf9nQ0dJ/80i40RS97t/A==",
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz",
+ "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==",
"dev": true,
"hasInstallScript": true,
+ "optional": true,
"dependencies": {
- "node-addon-api": "^3.0.0",
- "prebuild-install": "^6.0.0"
+ "node-addon-api": "^4.3.0",
+ "prebuild-install": "^7.0.1"
}
},
"node_modules/keyv": {
@@ -8824,7 +9366,7 @@
"node_modules/lcid": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
- "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+ "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==",
"dev": true,
"dependencies": {
"invert-kv": "^1.0.0"
@@ -8854,6 +9396,28 @@
"node": ">=6"
}
},
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lie": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
+ "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
+ "dev": true,
+ "dependencies": {
+ "immediate": "~3.0.5"
+ }
+ },
"node_modules/liftoff": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz",
@@ -8882,16 +9446,10 @@
"uc.micro": "^1.0.1"
}
},
- "node_modules/listenercount": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz",
- "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=",
- "dev": true
- },
"node_modules/load-json-file": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
- "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==",
"dev": true,
"dependencies": {
"graceful-fs": "^4.1.2",
@@ -8904,22 +9462,10 @@
"node": ">=0.10.0"
}
},
- "node_modules/load-json-file/node_modules/parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
- "dev": true,
- "dependencies": {
- "error-ex": "^1.2.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/load-json-file/node_modules/pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
"dev": true,
"engines": {
"node": ">=0.10.0"
@@ -8977,10 +9523,46 @@
"integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=",
"dev": true
},
- "node_modules/lodash.get": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
+ "node_modules/lodash.get": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+ "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
+ "dev": true
+ },
+ "node_modules/lodash.includes": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
+ "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==",
+ "dev": true
+ },
+ "node_modules/lodash.isboolean": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
+ "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==",
+ "dev": true
+ },
+ "node_modules/lodash.isinteger": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
+ "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==",
+ "dev": true
+ },
+ "node_modules/lodash.isnumber": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
+ "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==",
+ "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
},
"node_modules/lodash.merge": {
@@ -8989,6 +9571,12 @@
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
"dev": true
},
+ "node_modules/lodash.once": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
+ "dev": true
+ },
"node_modules/lodash.some": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz",
@@ -9163,9 +9751,9 @@
}
},
"node_modules/make-dir/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
@@ -9278,6 +9866,7 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
"integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
+ "dev": true,
"dependencies": {
"charenc": "0.0.2",
"crypt": "0.0.2",
@@ -9434,7 +10023,8 @@
"node_modules/minimist": {
"version": "1.2.6",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
- "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
+ "dev": true
},
"node_modules/mixin-deep": {
"version": "1.3.2",
@@ -9465,6 +10055,7 @@
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "dev": true,
"dependencies": {
"minimist": "^1.2.5"
},
@@ -9476,7 +10067,8 @@
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
"integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
- "dev": true
+ "dev": true,
+ "optional": true
},
"node_modules/mocha": {
"version": "9.2.2",
@@ -9885,6 +10477,11 @@
"node": ">=10"
}
},
+ "node_modules/module-details-from-path": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz",
+ "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A=="
+ },
"node_modules/mrmime": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz",
@@ -9897,8 +10494,7 @@
"node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/mute-stdout": {
"version": "1.0.1",
@@ -9959,7 +10555,8 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
"integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==",
- "dev": true
+ "dev": true,
+ "optional": true
},
"node_modules/natural-compare": {
"version": "1.4.0",
@@ -9973,6 +10570,12 @@
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"dev": true
},
+ "node_modules/next-tick": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
+ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
+ "dev": true
+ },
"node_modules/nice-try": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
@@ -9992,69 +10595,25 @@
"path-to-regexp": "^1.7.0"
}
},
- "node_modules/nock": {
- "version": "10.0.6",
- "resolved": "https://registry.npmjs.org/nock/-/nock-10.0.6.tgz",
- "integrity": "sha512-b47OWj1qf/LqSQYnmokNWM8D88KvUl2y7jT0567NB3ZBAZFz2bWp2PC81Xn7u8F2/vJxzkzNZybnemeFa7AZ2w==",
+ "node_modules/node-abi": {
+ "version": "3.45.0",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.45.0.tgz",
+ "integrity": "sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==",
"dev": true,
+ "optional": true,
"dependencies": {
- "chai": "^4.1.2",
- "debug": "^4.1.0",
- "deep-equal": "^1.0.0",
- "json-stringify-safe": "^5.0.1",
- "lodash": "^4.17.5",
- "mkdirp": "^0.5.0",
- "propagate": "^1.0.0",
- "qs": "^6.5.1",
- "semver": "^5.5.0"
+ "semver": "^7.3.5"
},
"engines": {
- "node": ">= 6.0"
- }
- },
- "node_modules/nock/node_modules/debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
- "dev": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/node-abi": {
- "version": "2.30.1",
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz",
- "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==",
- "dev": true,
- "dependencies": {
- "semver": "^5.4.1"
+ "node": ">=10"
}
},
"node_modules/node-addon-api": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
- "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
- "dev": true
- },
- "node_modules/node-fetch": {
- "version": "2.6.7",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
- "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
- "dependencies": {
- "whatwg-url": "^5.0.0"
- },
- "engines": {
- "node": "4.x || >=6.0.0"
- },
- "peerDependencies": {
- "encoding": "^0.1.0"
- },
- "peerDependenciesMeta": {
- "encoding": {
- "optional": true
- }
- }
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
+ "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==",
+ "dev": true,
+ "optional": true
},
"node_modules/node-has-native-dependencies": {
"version": "1.0.2",
@@ -10298,9 +10857,9 @@
}
},
"node_modules/node-releases": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz",
- "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==",
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz",
+ "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==",
"dev": true
},
"node_modules/node-stream-zip": {
@@ -10327,6 +10886,15 @@
"validate-npm-package-license": "^3.0.1"
}
},
+ "node_modules/normalize-package-data/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -10395,18 +10963,6 @@
"node": ">=8"
}
},
- "node_modules/npmlog": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
- "dev": true,
- "dependencies": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
"node_modules/nth-check": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
@@ -10422,7 +10978,7 @@
"node_modules/number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",
"dev": true,
"engines": {
"node": ">=0.10.0"
@@ -10469,32 +11025,6 @@
"node": ">=8.9"
}
},
- "node_modules/nyc/node_modules/convert-source-map": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
- "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.1"
- }
- },
- "node_modules/nyc/node_modules/find-cache-dir": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.2.0.tgz",
- "integrity": "sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg==",
- "dev": true,
- "dependencies": {
- "commondir": "^1.0.1",
- "make-dir": "^3.0.0",
- "pkg-dir": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
- }
- },
"node_modules/nyc/node_modules/p-map": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
@@ -10507,14 +11037,6 @@
"node": ">=8"
}
},
- "node_modules/oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
- "engines": {
- "node": "*"
- }
- },
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -10571,9 +11093,9 @@
}
},
"node_modules/object-inspect": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
- "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==",
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -10807,6 +11329,23 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/open": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
+ "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
+ "dev": true,
+ "dependencies": {
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/opener": {
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
@@ -10816,6 +11355,23 @@
"opener": "bin/opener-bin.js"
}
},
+ "node_modules/optionator": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
"node_modules/ordered-read-streams": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
@@ -10834,7 +11390,7 @@
"node_modules/os-locale": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
- "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+ "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==",
"dev": true,
"dependencies": {
"lcid": "^1.0.0"
@@ -10968,6 +11524,12 @@
"node": ">=8"
}
},
+ "node_modules/pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+ "dev": true
+ },
"node_modules/parent-module": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@@ -10990,14 +11552,13 @@
}
},
"node_modules/parse-asn1": {
- "version": "5.1.4",
- "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz",
- "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==",
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
+ "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
"dev": true,
"dependencies": {
- "asn1.js": "^4.0.0",
+ "asn1.js": "^5.2.0",
"browserify-aes": "^1.0.0",
- "create-hash": "^1.1.0",
"evp_bytestokey": "^1.0.0",
"pbkdf2": "^3.0.3",
"safe-buffer": "^5.1.1"
@@ -11017,6 +11578,18 @@
"node": ">=0.8"
}
},
+ "node_modules/parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==",
+ "dev": true,
+ "dependencies": {
+ "error-ex": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/parse-node-version": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
@@ -11038,12 +11611,21 @@
"node_modules/parse-semver": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz",
- "integrity": "sha1-mkr9bfBj3Egm+T+6SpnPIj9mbLg=",
+ "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==",
"dev": true,
"dependencies": {
"semver": "^5.1.0"
}
},
+ "node_modules/parse-semver/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
"node_modules/parse5-htmlparser2-tree-adapter": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
@@ -11109,8 +11691,7 @@
"node_modules/path-parse": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
"node_modules/path-root": {
"version": "0.1.1",
@@ -11188,11 +11769,6 @@
"integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
"dev": true
},
- "node_modules/performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
- },
"node_modules/picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
@@ -11288,22 +11864,22 @@
}
},
"node_modules/prebuild-install": {
- "version": "6.1.4",
- "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz",
- "integrity": "sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz",
+ "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==",
"dev": true,
+ "optional": true,
"dependencies": {
- "detect-libc": "^1.0.3",
+ "detect-libc": "^2.0.0",
"expand-template": "^2.0.3",
"github-from-package": "0.0.0",
"minimist": "^1.2.3",
"mkdirp-classic": "^0.5.3",
"napi-build-utils": "^1.0.1",
- "node-abi": "^2.21.0",
- "npmlog": "^4.0.1",
+ "node-abi": "^3.3.0",
"pump": "^3.0.0",
"rc": "^1.2.7",
- "simple-get": "^3.0.3",
+ "simple-get": "^4.0.0",
"tar-fs": "^2.0.0",
"tunnel-agent": "^0.6.0"
},
@@ -11311,7 +11887,7 @@
"prebuild-install": "bin.js"
},
"engines": {
- "node": ">=6"
+ "node": ">=10"
}
},
"node_modules/prebuild-install/node_modules/pump": {
@@ -11319,11 +11895,21 @@
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"dev": true,
+ "optional": true,
"dependencies": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
},
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
"node_modules/prepend-http": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
@@ -11358,6 +11944,7 @@
"version": "0.11.10",
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
"integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+ "dev": true,
"engines": {
"node": ">= 0.6.0"
}
@@ -11391,20 +11978,6 @@
"react-is": "^16.13.1"
}
},
- "node_modules/propagate": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/propagate/-/propagate-1.0.0.tgz",
- "integrity": "sha1-AMLa7t2iDofjeCs0Stuhzd1q1wk=",
- "dev": true,
- "engines": [
- "node >= 0.8.1"
- ]
- },
- "node_modules/psl": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
- "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
- },
"node_modules/public-encrypt": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
@@ -11444,16 +12017,24 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "dev": true,
"engines": {
"node": ">=6"
}
},
"node_modules/qs": {
- "version": "6.5.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
- "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
+ "version": "6.12.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz",
+ "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==",
+ "dev": true,
+ "dependencies": {
+ "side-channel": "^1.0.6"
+ },
"engines": {
"node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/query-string": {
@@ -11489,11 +12070,6 @@
"node": ">=0.4.x"
}
},
- "node_modules/querystringify": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
- "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
- },
"node_modules/queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -11538,6 +12114,7 @@
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
"integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
"dev": true,
+ "optional": true,
"dependencies": {
"deep-extend": "^0.6.0",
"ini": "~1.3.0",
@@ -11551,8 +12128,9 @@
"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": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
"dev": true,
+ "optional": true,
"engines": {
"node": ">=0.10.0"
}
@@ -11578,7 +12156,7 @@
"node_modules/read-pkg": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
- "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==",
"dev": true,
"dependencies": {
"load-json-file": "^1.0.0",
@@ -11592,7 +12170,7 @@
"node_modules/read-pkg-up": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
- "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==",
"dev": true,
"dependencies": {
"find-up": "^1.0.0",
@@ -11605,7 +12183,7 @@
"node_modules/read-pkg-up/node_modules/find-up": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==",
"dev": true,
"dependencies": {
"path-exists": "^2.0.0",
@@ -11618,7 +12196,7 @@
"node_modules/read-pkg-up/node_modules/path-exists": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==",
"dev": true,
"dependencies": {
"pinkie-promise": "^2.0.0"
@@ -11630,7 +12208,7 @@
"node_modules/read-pkg/node_modules/path-type": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
- "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==",
"dev": true,
"dependencies": {
"graceful-fs": "^4.1.2",
@@ -11644,7 +12222,7 @@
"node_modules/read-pkg/node_modules/pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
"dev": true,
"engines": {
"node": ">=0.10.0"
@@ -11836,54 +12414,6 @@
"node": ">= 0.10"
}
},
- "node_modules/request": {
- "version": "2.88.2",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
- "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
- "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
- "dependencies": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.3",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/request-progress": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz",
- "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=",
- "dependencies": {
- "throttleit": "^1.0.0"
- }
- },
- "node_modules/request/node_modules/uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
- "bin": {
- "uuid": "bin/uuid"
- }
- },
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -11902,24 +12432,47 @@
"node": ">=0.10.0"
}
},
+ "node_modules/require-in-the-middle": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.2.0.tgz",
+ "integrity": "sha512-3TLx5TGyAY6AOqLBoXmHkNql0HIf2RGbuMgCDT2WO/uGVAPJs6h7Kl+bN6TIZGd9bWhWPwnDnTHGtW8Iu77sdw==",
+ "dependencies": {
+ "debug": "^4.1.1",
+ "module-details-from-path": "^1.0.3",
+ "resolve": "^1.22.1"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/require-in-the-middle/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
"node_modules/require-main-filename": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+ "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==",
"dev": true
},
- "node_modules/requires-port": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
- },
"node_modules/resolve": {
- "version": "1.22.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
- "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
- "dev": true,
+ "version": "1.22.4",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz",
+ "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==",
"dependencies": {
- "is-core-module": "^2.8.1",
+ "is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
@@ -12012,9 +12565,9 @@
}
},
"node_modules/rewiremock": {
- "version": "3.14.3",
- "resolved": "https://registry.npmjs.org/rewiremock/-/rewiremock-3.14.3.tgz",
- "integrity": "sha512-6BaUGfp7NtxBjisxcGN73nNiA2fS2AwhEk/9DMUqxfv5v0aDM1wpOYpj5GSArqsJi07YCfLhkD8C74LAN7+FkQ==",
+ "version": "3.14.5",
+ "resolved": "https://registry.npmjs.org/rewiremock/-/rewiremock-3.14.5.tgz",
+ "integrity": "sha512-MdPutvaUd+kKVz/lcEz6N6337s4PxRUR5vhphIp2/TJRgfXIckomIkCsIAbwB53MjiSLwi7KBMdQ9lPWE5WpYA==",
"dev": true,
"dependencies": {
"babel-runtime": "^6.26.0",
@@ -12110,6 +12663,11 @@
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
+ "node_modules/sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ },
"node_modules/schema-utils": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
@@ -12154,11 +12712,17 @@
}
},
"node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
"bin": {
- "semver": "bin/semver"
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
"node_modules/semver-greatest-satisfied-range": {
@@ -12188,6 +12752,23 @@
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
"dev": true
},
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/set-value": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
@@ -12281,14 +12862,18 @@
}
},
"node_modules/side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -12300,10 +12885,31 @@
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
"dev": true
},
- "node_modules/simple-concat": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
- "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
+ "node_modules/simple-concat": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
+ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
+ "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"
+ }
+ ],
+ "optional": true
+ },
+ "node_modules/simple-get": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
+ "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
"dev": true,
"funding": [
{
@@ -12318,38 +12924,38 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
- },
- "node_modules/simple-get": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz",
- "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==",
- "dev": true,
+ ],
+ "optional": true,
"dependencies": {
- "decompress-response": "^4.2.0",
+ "decompress-response": "^6.0.0",
"once": "^1.3.1",
"simple-concat": "^1.0.0"
}
},
"node_modules/simple-get/node_modules/decompress-response": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz",
- "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
+ "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,
+ "optional": true,
"dependencies": {
- "mimic-response": "^2.0.0"
+ "mimic-response": "^3.1.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/simple-get/node_modules/mimic-response": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz",
- "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==",
+ "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,
+ "optional": true,
"engines": {
- "node": ">=8"
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -12716,9 +13322,9 @@
}
},
"node_modules/spdx-correct": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
- "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+ "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
"dev": true,
"dependencies": {
"spdx-expression-parse": "^3.0.0",
@@ -12726,15 +13332,15 @@
}
},
"node_modules/spdx-exceptions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
- "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
"dev": true
},
"node_modules/spdx-expression-parse": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
- "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
"dev": true,
"dependencies": {
"spdx-exceptions": "^2.1.0",
@@ -12742,9 +13348,9 @@
}
},
"node_modules/spdx-license-ids": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
- "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
+ "version": "3.0.13",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz",
+ "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==",
"dev": true
},
"node_modules/split-string": {
@@ -12765,30 +13371,6 @@
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
"dev": true
},
- "node_modules/sshpk": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
- "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
- "dependencies": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- },
- "bin": {
- "sshpk-conv": "bin/sshpk-conv",
- "sshpk-sign": "bin/sshpk-sign",
- "sshpk-verify": "bin/sshpk-verify"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/stack-chain": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz",
@@ -12827,6 +13409,16 @@
"node": ">=0.10.0"
}
},
+ "node_modules/stoppable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz",
+ "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4",
+ "npm": ">=6"
+ }
+ },
"node_modules/stream-browserify": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
@@ -12903,7 +13495,7 @@
"node_modules/string-width": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
"dev": true,
"dependencies": {
"code-point-at": "^1.0.0",
@@ -12917,7 +13509,7 @@
"node_modules/string-width/node_modules/ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
"dev": true,
"engines": {
"node": ">=0.10.0"
@@ -12926,7 +13518,7 @@
"node_modules/string-width/node_modules/strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
"dev": true,
"dependencies": {
"ansi-regex": "^2.0.0"
@@ -12995,7 +13587,7 @@
"node_modules/strip-bom": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
- "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==",
"dev": true,
"dependencies": {
"is-utf8": "^0.2.0"
@@ -13067,7 +13659,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true,
"engines": {
"node": ">= 0.4"
},
@@ -13160,6 +13751,7 @@
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
"integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
"dev": true,
+ "optional": true,
"dependencies": {
"chownr": "^1.1.1",
"mkdirp-classic": "^0.5.2",
@@ -13172,6 +13764,7 @@
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
"dev": true,
+ "optional": true,
"dependencies": {
"buffer": "^5.5.0",
"inherits": "^2.0.4",
@@ -13183,16 +13776,18 @@
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"dev": true,
+ "optional": true,
"dependencies": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
},
"node_modules/tar-fs/node_modules/readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dev": true,
+ "optional": true,
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -13207,6 +13802,7 @@
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
"integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
"dev": true,
+ "optional": true,
"dependencies": {
"bl": "^4.0.3",
"end-of-stream": "^1.4.1",
@@ -13237,12 +13833,9 @@
}
},
"node_modules/tas-client": {
- "version": "0.1.58",
- "resolved": "https://registry.npmjs.org/tas-client/-/tas-client-0.1.58.tgz",
- "integrity": "sha512-fOWii4wQXuo9Zl0oXgvjBzZWzKc5MmUR6XQWX93WU2c1SaP1plPo/zvXP8kpbZ9fvegFOHdapszYqMTRq/SRtg==",
- "dependencies": {
- "axios": "^0.26.1"
- }
+ "version": "0.2.33",
+ "resolved": "https://registry.npmjs.org/tas-client/-/tas-client-0.2.33.tgz",
+ "integrity": "sha512-V+uqV66BOQnWxvI6HjDnE4VkInmYZUQ4dgB7gzaDyFyFSK1i1nF/j7DpS9UbQAgV9NaF1XpcyuavnM1qOeiEIg=="
},
"node_modules/terser": {
"version": "5.14.2",
@@ -13328,11 +13921,6 @@
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
"dev": true
},
- "node_modules/throttleit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz",
- "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw="
- },
"node_modules/through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
@@ -13428,7 +14016,7 @@
"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": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
"dev": true,
"engines": {
"node": ">=4"
@@ -13507,32 +14095,6 @@
"node": ">=6"
}
},
- "node_modules/tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
- "dependencies": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
- },
- "node_modules/traverse": {
- "version": "0.3.9",
- "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
- "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
"node_modules/trim-repeated": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
@@ -13668,21 +14230,6 @@
"node": ">=8.6"
}
},
- "node_modules/ts-loader/node_modules/semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/ts-loader/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -13903,6 +14450,7 @@
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
+ "dev": true,
"engines": {
"node": ">=0.6.11 <=0.7.0 || >=0.7.3"
}
@@ -13910,7 +14458,9 @@
"node_modules/tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
+ "dev": true,
+ "optional": true,
"dependencies": {
"safe-buffer": "^5.0.1"
},
@@ -13918,17 +14468,24 @@
"node": "*"
}
},
- "node_modules/tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
- },
"node_modules/type": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/type/-/type-1.0.1.tgz",
"integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw==",
"dev": true
},
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
"node_modules/type-detect": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
@@ -13948,10 +14505,9 @@
}
},
"node_modules/typed-rest-client": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.5.tgz",
- "integrity": "sha512-952/Aegu3lTqUAI1anbDLbewojnF/gh8at9iy1CIrfS1h/+MtNjB1Y9z6ZF5n2kZd+97em56lZ9uu7Zz3y/pwg==",
- "deprecated": "1.8.5 contains changes that are not compatible with Node 6",
+ "version": "1.8.11",
+ "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz",
+ "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==",
"dev": true,
"dependencies": {
"qs": "^6.9.1",
@@ -13959,21 +14515,6 @@
"underscore": "^1.12.1"
}
},
- "node_modules/typed-rest-client/node_modules/qs": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
- "dev": true,
- "dependencies": {
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
@@ -14063,9 +14604,9 @@
}
},
"node_modules/underscore": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz",
- "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==",
+ "version": "1.13.6",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
+ "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==",
"dev": true
},
"node_modules/undertaker": {
@@ -14130,14 +14671,6 @@
"through2-filter": "^3.0.0"
}
},
- "node_modules/universalify": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
- "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
- "engines": {
- "node": ">= 4.0.0"
- }
- },
"node_modules/unset-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
@@ -14194,30 +14727,6 @@
"node": ">=8"
}
},
- "node_modules/unzipper": {
- "version": "0.10.11",
- "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz",
- "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==",
- "dev": true,
- "dependencies": {
- "big-integer": "^1.6.17",
- "binary": "~0.3.0",
- "bluebird": "~3.4.1",
- "buffer-indexof-polyfill": "~1.0.0",
- "duplexer2": "~0.1.4",
- "fstream": "^1.0.12",
- "graceful-fs": "^4.2.2",
- "listenercount": "~1.0.1",
- "readable-stream": "~2.3.6",
- "setimmediate": "~1.0.4"
- }
- },
- "node_modules/unzipper/node_modules/bluebird": {
- "version": "3.4.7",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz",
- "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=",
- "dev": true
- },
"node_modules/upath": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
@@ -14228,10 +14737,41 @@
"yarn": "*"
}
},
+ "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==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
"node_modules/uri-js": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "dev": true,
"dependencies": {
"punycode": "^2.1.0"
}
@@ -14259,15 +14799,6 @@
"integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==",
"dev": true
},
- "node_modules/url-parse": {
- "version": "1.5.10",
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
- "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
- "dependencies": {
- "querystringify": "^2.1.1",
- "requires-port": "^1.0.0"
- }
- },
"node_modules/url-parse-lax": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
@@ -14345,6 +14876,18 @@
"integrity": "sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==",
"dev": true
},
+ "node_modules/v8flags": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz",
+ "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==",
+ "dev": true,
+ "dependencies": {
+ "homedir-polyfill": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
"node_modules/validate-npm-package-license": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
@@ -14364,19 +14907,6 @@
"node": ">= 0.10"
}
},
- "node_modules/verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "engines": [
- "node >=0.6.0"
- ],
- "dependencies": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
"node_modules/vinyl": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz",
@@ -14458,105 +14988,6 @@
"integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
"dev": true
},
- "node_modules/vsce": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.7.0.tgz",
- "integrity": "sha512-CKU34wrQlbKDeJCRBkd1a8iwF9EvNxcYMg9hAUH6AxFGR6Wo2IKWwt3cJIcusHxx6XdjDHWlfAS/fJN30uvVnA==",
- "dev": true,
- "dependencies": {
- "azure-devops-node-api": "^11.0.1",
- "chalk": "^2.4.2",
- "cheerio": "^1.0.0-rc.9",
- "commander": "^6.1.0",
- "glob": "^7.0.6",
- "hosted-git-info": "^4.0.2",
- "keytar": "^7.7.0",
- "leven": "^3.1.0",
- "markdown-it": "^12.3.2",
- "mime": "^1.3.4",
- "minimatch": "^3.0.3",
- "parse-semver": "^1.1.1",
- "read": "^1.0.7",
- "semver": "^5.1.0",
- "tmp": "^0.2.1",
- "typed-rest-client": "^1.8.4",
- "url-join": "^4.0.1",
- "xml2js": "^0.4.23",
- "yauzl": "^2.3.1",
- "yazl": "^2.2.2"
- },
- "bin": {
- "vsce": "vsce"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/vsce/node_modules/commander": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
- "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/vsce/node_modules/hosted-git-info": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
- "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/vsce/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/vsce/node_modules/tmp": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
- "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
- "dev": true,
- "dependencies": {
- "rimraf": "^3.0.0"
- },
- "engines": {
- "node": ">=8.17.0"
- }
- },
- "node_modules/vscode-debugadapter": {
- "version": "1.35.0",
- "resolved": "https://registry.npmjs.org/vscode-debugadapter/-/vscode-debugadapter-1.35.0.tgz",
- "integrity": "sha512-Au90Iowj6TuD5uDMaTnxOjl/9hQN0Yoky1TV1Cjjr7jPdxTQpALBRW09Y2LzkIXUVICXlAqxWL9zL8BpzI30jg==",
- "deprecated": "This package has been renamed to @vscode/debugadapter, please update to the new name",
- "dependencies": {
- "mkdirp": "^0.5.1",
- "vscode-debugprotocol": "1.35.0"
- }
- },
- "node_modules/vscode-debugadapter-testsupport": {
- "version": "1.35.0",
- "resolved": "https://registry.npmjs.org/vscode-debugadapter-testsupport/-/vscode-debugadapter-testsupport-1.35.0.tgz",
- "integrity": "sha512-4emLt6JOk4iKqC2aWNJupOtrK6JwYAZ6KppqvKASN6B1s063VoqI18QhUB1CeoKwNaN1LIG3VPv2xM8HKOjyDA==",
- "deprecated": "This package has been renamed to @vscode/debugadapter-testsupport, please update to the new name",
- "dev": true,
- "dependencies": {
- "vscode-debugprotocol": "1.35.0"
- }
- },
"node_modules/vscode-debugprotocol": {
"version": "1.35.0",
"resolved": "https://registry.npmjs.org/vscode-debugprotocol/-/vscode-debugprotocol-1.35.0.tgz",
@@ -14564,85 +14995,71 @@
"deprecated": "This package has been renamed to @vscode/debugprotocol, please update to the new name"
},
"node_modules/vscode-jsonrpc": {
- "version": "8.0.2-next.1",
- "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.0.2-next.1.tgz",
- "integrity": "sha512-sbbvGSWja7NVBLHPGawtgezc8DHYJaP4qfr/AaJiyDapWcSFtHyPtm18+LnYMLTmB7bhOUW/lf5PeeuLpP6bKA==",
+ "version": "9.0.0-next.2",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.2.tgz",
+ "integrity": "sha512-meIaXAgChCHzWy45QGU8YpCNyqnZQ/sYeCj32OLDDbUYsCF7AvgpdXx3nnZn9yzr8ed0Od9bW+NGphEmXsqvIQ==",
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/vscode-languageclient": {
- "version": "8.0.2-next.5",
- "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.0.2-next.5.tgz",
- "integrity": "sha512-g87RJLHz0XlRyk6DOTbAk4JHcj8CKggXy4JiFL7OlhETkcYzTOR8d+Qdb4GqZr37PDs1Cl21omtTNK5LyR/RQg==",
- "dependencies": {
- "minimatch": "^3.0.4",
- "semver": "^7.3.5",
- "vscode-languageserver-protocol": "3.17.2-next.6"
- },
- "engines": {
- "vscode": "^1.67.0"
- }
- },
- "node_modules/vscode-languageclient/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "10.0.0-next.2",
+ "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-10.0.0-next.2.tgz",
+ "integrity": "sha512-ERKtgOkto4pHCxC2u1K3FfsYHSt8AeuZJjg1u/3TvnrCbBkMxrpn5mHWkh4m3rl6qo2Wk4m9YFgU6F7KCWQNZw==",
"dependencies": {
- "brace-expansion": "^1.1.7"
+ "minimatch": "^9.0.3",
+ "semver": "^7.6.0",
+ "vscode-languageserver-protocol": "3.17.6-next.3"
},
"engines": {
- "node": "*"
+ "vscode": "^1.86.0"
}
},
- "node_modules/vscode-languageclient/node_modules/semver": {
- "version": "7.3.7",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
- "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+ "node_modules/vscode-languageclient/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
+ "balanced-match": "^1.0.0"
}
},
- "node_modules/vscode-languageserver": {
- "version": "8.0.2-next.5",
- "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-8.0.2-next.5.tgz",
- "integrity": "sha512-2ZDb7O/4atS9mJKufPPz637z+51kCyZfgnobFW5eSrUdS3c0UB/nMS4Ng1EavYTX84GVaVMKCrmP0f2ceLmR0A==",
+ "node_modules/vscode-languageclient/node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
"dependencies": {
- "vscode-languageserver-protocol": "3.17.2-next.6"
+ "brace-expansion": "^2.0.1"
},
- "bin": {
- "installServerIntoExtension": "bin/installServerIntoExtension"
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/vscode-languageserver-protocol": {
- "version": "3.17.2-next.6",
- "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.2-next.6.tgz",
- "integrity": "sha512-WtsebNOOkWyNn4oFYoAMPC8Q/ZDoJ/K7Ja53OzTixiitvrl/RpXZETrtzH79R8P5kqCyx6VFBPb6KQILJfkDkA==",
+ "version": "3.17.6-next.3",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.3.tgz",
+ "integrity": "sha512-H8ATH5SAvc3JzttS+AL6g681PiBOZM/l34WP2JZk4akY3y7NqTP+f9cJ+MhrVBbD3aDS8bdAKewZgbFLW6M8Pg==",
"dependencies": {
- "vscode-jsonrpc": "8.0.2-next.1",
- "vscode-languageserver-types": "3.17.2-next.2"
+ "vscode-jsonrpc": "9.0.0-next.2",
+ "vscode-languageserver-types": "3.17.6-next.3"
}
},
- "node_modules/vscode-languageserver-protocol/node_modules/vscode-languageserver-types": {
- "version": "3.17.2-next.2",
- "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2-next.2.tgz",
- "integrity": "sha512-TiAkLABgqkVWdAlC3XlOfdhdjIAdVU4YntPUm9kKGbXr+MGwpVnKz2KZMNBcvG0CFx8Hi8qliL0iq+ndPB720w=="
+ "node_modules/vscode-languageserver-types": {
+ "version": "3.17.6-next.3",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.3.tgz",
+ "integrity": "sha512-l5kNFXFRQGuzriXpuBqFpRmkf6f6A4VoU3h95OsVkqIOoi1k7KbwSo600cIdsKSJWrPg/+vX+QMPcMw1oI7ItA=="
},
"node_modules/vscode-tas-client": {
- "version": "0.1.63",
- "resolved": "https://registry.npmjs.org/vscode-tas-client/-/vscode-tas-client-0.1.63.tgz",
- "integrity": "sha512-TY5TPyibzi6rNmuUB7eRVqpzLzNfQYrrIl/0/F8ukrrbzOrKVvS31hM3urE+tbaVrnT+TMYXL16GhX57vEowhA==",
+ "version": "0.1.84",
+ "resolved": "https://registry.npmjs.org/vscode-tas-client/-/vscode-tas-client-0.1.84.tgz",
+ "integrity": "sha512-rUTrUopV+70hvx1hW5ebdw1nd6djxubkLvVxjGdyD/r5v/wcVF41LIfiAtbm5qLZDtQdsMH1IaCuDoluoIa88w==",
"dependencies": {
- "tas-client": "0.1.58"
+ "tas-client": "0.2.33"
},
"engines": {
- "vscode": "^1.19.1"
+ "vscode": "^1.85.0"
}
},
"node_modules/vscode-uri": {
@@ -14663,11 +15080,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
- },
"node_modules/webpack": {
"version": "5.76.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz",
@@ -14936,15 +15348,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "dependencies": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -15005,7 +15408,7 @@
"node_modules/which-module": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
- "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
+ "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==",
"dev": true
},
"node_modules/which-typed-array": {
@@ -15028,15 +15431,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/wide-align": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
- "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
- "dev": true,
- "dependencies": {
- "string-width": "^1.0.2 || 2"
- }
- },
"node_modules/wildcard": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz",
@@ -15063,13 +15457,24 @@
"wipe-node-cache": "^2.1.0"
}
},
- "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==",
+ "node_modules/worker-loader": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/worker-loader/-/worker-loader-3.0.8.tgz",
+ "integrity": "sha512-XQyQkIFeRVC7f7uRhFdNMe/iJOdO6zxAaR3EWbDp45v3mDhrTi+++oswKNxShUNjPC/1xUp5DB29YKLhFo129g==",
"dev": true,
+ "dependencies": {
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0 || ^5.0.0"
}
},
"node_modules/workerpool": {
@@ -15081,7 +15486,7 @@
"node_modules/wrap-ansi": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==",
"dev": true,
"dependencies": {
"string-width": "^1.0.1",
@@ -15094,7 +15499,7 @@
"node_modules/wrap-ansi/node_modules/ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
"dev": true,
"engines": {
"node": ">=0.10.0"
@@ -15103,7 +15508,7 @@
"node_modules/wrap-ansi/node_modules/strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
"dev": true,
"dependencies": {
"ansi-regex": "^2.0.0"
@@ -15157,9 +15562,9 @@
"dev": true
},
"node_modules/xml2js": {
- "version": "0.4.23",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
- "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz",
+ "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
"dependencies": {
"sax": ">=0.6.0",
"xmlbuilder": "~11.0.0"
@@ -15168,11 +15573,6 @@
"node": ">=4.0.0"
}
},
- "node_modules/xml2js/node_modules/sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
- },
"node_modules/xmlbuilder": {
"version": "11.0.1",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
@@ -15438,6 +15838,22 @@
}
},
"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
+ },
+ "@ampproject/remapping": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+ "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
"@azure/abort-controller": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz",
@@ -15447,122 +15863,258 @@
},
"dependencies": {
"tslib": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
- "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
}
}
},
"@azure/core-auth": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.4.0.tgz",
- "integrity": "sha512-HFrcTgmuSuukRf/EdPmqBrc5l6Q5Uu+2TbuhaKbgaCpP2TfAeiNaQPAadxO+CYBRHGUzIDteMAjFspFLDLnKVQ==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.5.0.tgz",
+ "integrity": "sha512-udzoBuYG1VBoHVohDTrvKjyzel34zt77Bhp7dQntVGGD0ehVq48owENbBG8fIgkHRNUBQH5k1r0hpoMu5L8+kw==",
"requires": {
"@azure/abort-controller": "^1.0.0",
+ "@azure/core-util": "^1.1.0",
"tslib": "^2.2.0"
},
"dependencies": {
"tslib": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
- "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
}
}
},
- "@azure/core-http": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/@azure/core-http/-/core-http-2.3.1.tgz",
- "integrity": "sha512-cur03BUwV0Tbv81bQBOLafFB02B6G++K6F2O3IMl8pSE2QlXm3cu11bfyBNlDUKi5U+xnB3GC63ae3athhkx6Q==",
+ "@azure/core-client": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz",
+ "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==",
+ "dev": true,
+ "requires": {
+ "@azure/abort-controller": "^2.0.0",
+ "@azure/core-auth": "^1.4.0",
+ "@azure/core-rest-pipeline": "^1.9.1",
+ "@azure/core-tracing": "^1.0.0",
+ "@azure/core-util": "^1.6.1",
+ "@azure/logger": "^1.0.0",
+ "tslib": "^2.6.2"
+ },
+ "dependencies": {
+ "@azure/abort-controller": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz",
+ "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==",
+ "dev": true,
+ "requires": {
+ "tslib": "^2.6.2"
+ }
+ },
+ "@azure/core-util": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.0.tgz",
+ "integrity": "sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw==",
+ "dev": true,
+ "requires": {
+ "@azure/abort-controller": "^2.0.0",
+ "tslib": "^2.6.2"
+ }
+ },
+ "tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+ "dev": true
+ }
+ }
+ },
+ "@azure/core-rest-pipeline": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.10.1.tgz",
+ "integrity": "sha512-Kji9k6TOFRDB5ZMTw8qUf2IJ+CeJtsuMdAHox9eqpTf1cefiNMpzrfnF6sINEBZJsaVaWgQ0o48B6kcUH68niA==",
"requires": {
"@azure/abort-controller": "^1.0.0",
- "@azure/core-auth": "^1.3.0",
- "@azure/core-tracing": "1.0.0-preview.13",
- "@azure/core-util": "^1.1.1",
+ "@azure/core-auth": "^1.4.0",
+ "@azure/core-tracing": "^1.0.1",
+ "@azure/core-util": "^1.0.0",
"@azure/logger": "^1.0.0",
- "@types/node-fetch": "^2.5.0",
- "@types/tunnel": "^0.0.3",
"form-data": "^4.0.0",
- "node-fetch": "^2.6.7",
- "process": "^0.11.10",
- "tough-cookie": "^4.0.0",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
"tslib": "^2.2.0",
- "tunnel": "^0.0.6",
- "uuid": "^8.3.0",
- "xml2js": "^0.4.19"
+ "uuid": "^8.3.0"
},
"dependencies": {
- "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==",
+ "@tootallnate/once": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
+ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A=="
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
+ "ms": "2.1.2"
}
},
- "tough-cookie": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz",
- "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==",
+ "http-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
"requires": {
- "psl": "^1.1.33",
- "punycode": "^2.1.1",
- "universalify": "^0.2.0",
- "url-parse": "^1.5.3"
+ "@tootallnate/once": "2",
+ "agent-base": "6",
+ "debug": "4"
}
},
"tslib": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
- "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
}
}
},
"@azure/core-tracing": {
- "version": "1.0.0-preview.13",
- "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz",
- "integrity": "sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz",
+ "integrity": "sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==",
"requires": {
- "@opentelemetry/api": "^1.0.1",
"tslib": "^2.2.0"
},
"dependencies": {
"tslib": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
- "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
}
}
},
"@azure/core-util": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.1.1.tgz",
- "integrity": "sha512-A4TBYVQCtHOigFb2ETiiKFDocBoI1Zk2Ui1KpI42aJSIDexF7DHQFpnjonltXAIU/ceH+1fsZAWWgvX6/AKzog==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.2.0.tgz",
+ "integrity": "sha512-ffGIw+Qs8bNKNLxz5UPkz4/VBM/EZY07mPve1ZYFqYUdPwFqRj0RPk0U7LZMOfT7GCck9YjuT1Rfp1PApNl1ng==",
+ "requires": {
+ "@azure/abort-controller": "^1.0.0",
+ "tslib": "^2.2.0"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ }
+ }
+ },
+ "@azure/identity": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.2.0.tgz",
+ "integrity": "sha512-ve3aYv79qXOJ8wRxQ5jO0eIz2DZ4o0TyME4m4vlGV5YyePddVZ+pFMzusAMODNAflYAAv1cBIhKnd4xytmXyig==",
+ "dev": true,
"requires": {
"@azure/abort-controller": "^1.0.0",
+ "@azure/core-auth": "^1.5.0",
+ "@azure/core-client": "^1.4.0",
+ "@azure/core-rest-pipeline": "^1.1.0",
+ "@azure/core-tracing": "^1.0.0",
+ "@azure/core-util": "^1.3.0",
+ "@azure/logger": "^1.0.0",
+ "@azure/msal-browser": "^3.11.1",
+ "@azure/msal-node": "^2.6.6",
+ "events": "^3.0.0",
+ "jws": "^4.0.0",
+ "open": "^8.0.0",
+ "stoppable": "^1.1.0",
"tslib": "^2.2.0"
},
"dependencies": {
+ "@azure/core-util": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.0.tgz",
+ "integrity": "sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw==",
+ "dev": true,
+ "requires": {
+ "@azure/abort-controller": "^2.0.0",
+ "tslib": "^2.6.2"
+ },
+ "dependencies": {
+ "@azure/abort-controller": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz",
+ "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==",
+ "dev": true,
+ "requires": {
+ "tslib": "^2.6.2"
+ }
+ }
+ }
+ },
"tslib": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
- "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+ "dev": true
}
}
},
"@azure/logger": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.0.3.tgz",
- "integrity": "sha512-aK4s3Xxjrx3daZr3VylxejK3vG5ExXck5WOHDJ8in/k9AqlfIyFMMT1uG7u8mNjX+QRILTIn0/Xgschfh/dQ9g==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.0.4.tgz",
+ "integrity": "sha512-ustrPY8MryhloQj7OWGe+HrYx+aoiOxzbXTtgblbV3xwCqpzUK36phH3XNHQKj3EPonyFUuDTfR3qFhTEAuZEg==",
+ "requires": {
+ "tslib": "^2.2.0"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ }
+ }
+ },
+ "@azure/msal-browser": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.14.0.tgz",
+ "integrity": "sha512-Un85LhOoecJ3HDTS3Uv3UWnXC9/43ZSO+Kc+anSqpZvcEt58SiO/3DuVCAe1A3I5UIBYJNMgTmZPGXQ0MVYrwA==",
+ "dev": true,
+ "requires": {
+ "@azure/msal-common": "14.10.0"
+ }
+ },
+ "@azure/msal-common": {
+ "version": "14.10.0",
+ "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.10.0.tgz",
+ "integrity": "sha512-Zk6DPDz7e1wPgLoLgAp0349Yay9RvcjPM5We/ehuenDNsz/t9QEFI7tRoHpp/e47I4p20XE3FiDlhKwAo3utDA==",
+ "dev": true
+ },
+ "@azure/msal-node": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.8.1.tgz",
+ "integrity": "sha512-VcZZM+5VvCWRBTOF7SxMKaxrz+EXjntx2u5AQe7QE06e6FuPJElGBrImgNgCh5QmFaNCfVFO+3qNR7UoFD/Gfw==",
+ "dev": true,
+ "requires": {
+ "@azure/msal-common": "14.10.0",
+ "jsonwebtoken": "^9.0.0",
+ "uuid": "^8.3.0"
+ }
+ },
+ "@azure/opentelemetry-instrumentation-azure-sdk": {
+ "version": "1.0.0-beta.5",
+ "resolved": "https://registry.npmjs.org/@azure/opentelemetry-instrumentation-azure-sdk/-/opentelemetry-instrumentation-azure-sdk-1.0.0-beta.5.tgz",
+ "integrity": "sha512-fsUarKQDvjhmBO4nIfaZkfNSApm1hZBzcvpNbSrXdcUBxu7lRvKsV5DnwszX7cnhLyVOW9yl1uigtRQ1yDANjA==",
"requires": {
+ "@azure/core-tracing": "^1.0.0",
+ "@azure/logger": "^1.0.0",
+ "@opentelemetry/api": "^1.4.1",
+ "@opentelemetry/core": "^1.15.2",
+ "@opentelemetry/instrumentation": "^0.41.2",
"tslib": "^2.2.0"
},
"dependencies": {
"tslib": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
- "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
}
}
},
@@ -15575,23 +16127,211 @@
"@babel/highlight": "^7.10.4"
}
},
+ "@babel/compat-data": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.6.tgz",
+ "integrity": "sha512-29tfsWTq2Ftu7MXmimyC0C5FDZv5DYxOZkh3XD3+QW4V/BYuv/LyEsjj3c0hqedEaDt6DBfDvexMKU8YevdqFg==",
+ "dev": true
+ },
+ "@babel/core": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.6.tgz",
+ "integrity": "sha512-HPIyDa6n+HKw5dEuway3vVAhBboYCtREBMp+IWeseZy6TFtzn6MHkCH2KKYUOC/vKKwgSMHQW4htBOrmuRPXfw==",
+ "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.6",
+ "@babel/helper-module-transforms": "^7.22.5",
+ "@babel/helpers": "^7.22.6",
+ "@babel/parser": "^7.22.6",
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.6",
+ "@babel/types": "^7.22.5",
+ "@nicolo-ribaudo/semver-v6": "^6.3.3",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.2"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz",
+ "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.22.5"
+ }
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ }
+ }
+ },
+ "@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==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.23.0",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jsesc": "^2.5.1"
+ }
+ },
+ "@babel/helper-compilation-targets": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.6.tgz",
+ "integrity": "sha512-534sYEqWD9VfUm3IPn2SLcH4Q3P86XL+QvqdC7ZsFrzyyPF3T4XGiVghF6PTYNdWg6pXuoqXxNQAhbYeEInTzA==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-validator-option": "^7.22.5",
+ "@nicolo-ribaudo/semver-v6": "^6.3.3",
+ "browserslist": "^4.21.9",
+ "lru-cache": "^5.1.1"
+ },
+ "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"
+ }
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "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==",
+ "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==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.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==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@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==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@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==",
+ "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-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==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@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==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-string-parser": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
+ "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
+ "dev": true
+ },
"@babel/helper-validator-identifier": {
- "version": "7.15.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
- "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "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==",
"dev": true
},
+ "@babel/helpers": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz",
+ "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.6",
+ "@babel/types": "^7.22.5"
+ }
+ },
"@babel/highlight": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz",
- "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==",
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
+ "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.15.7",
- "chalk": "^2.0.0",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
"js-tokens": "^4.0.0"
}
},
+ "@babel/parser": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
+ "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
+ "dev": true
+ },
"@babel/runtime": {
"version": "7.17.8",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz",
@@ -15601,14 +16341,87 @@
"regenerator-runtime": "^0.13.4"
}
},
- "@babel/runtime-corejs3": {
- "version": "7.10.5",
- "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.10.5.tgz",
- "integrity": "sha512-RMafpmrNB5E/bwdSphLr8a8++9TosnyJp98RZzI6VOx2R2CCMpsXXXRvmI700O9oEKpXdZat6oEK68/F0zjd4A==",
+ "@babel/runtime-corejs3": {
+ "version": "7.10.5",
+ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.10.5.tgz",
+ "integrity": "sha512-RMafpmrNB5E/bwdSphLr8a8++9TosnyJp98RZzI6VOx2R2CCMpsXXXRvmI700O9oEKpXdZat6oEK68/F0zjd4A==",
+ "dev": true,
+ "requires": {
+ "core-js-pure": "^3.0.0",
+ "regenerator-runtime": "^0.13.4"
+ }
+ },
+ "@babel/template": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
+ "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.22.13",
+ "@babel/parser": "^7.22.15",
+ "@babel/types": "^7.22.15"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
+ "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.22.13",
+ "chalk": "^2.4.2"
+ }
+ }
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.23.2",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
+ "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
+ "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",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
+ "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.22.13",
+ "chalk": "^2.4.2"
+ }
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ }
+ }
+ },
+ "@babel/types": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
+ "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
"dev": true,
"requires": {
- "core-js-pure": "^3.0.0",
- "regenerator-runtime": "^0.13.4"
+ "@babel/helper-string-parser": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "to-fast-properties": "^2.0.0"
}
},
"@cspotcode/source-map-consumer": {
@@ -15799,63 +16612,124 @@
"dev": true
},
"@jridgewell/trace-mapping": {
- "version": "0.3.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz",
- "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==",
+ "version": "0.3.18",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
+ "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
"dev": true,
"requires": {
- "@jridgewell/resolve-uri": "^3.0.3",
- "@jridgewell/sourcemap-codec": "^1.4.10"
+ "@jridgewell/resolve-uri": "3.1.0",
+ "@jridgewell/sourcemap-codec": "1.4.14"
}
},
"@microsoft/1ds-core-js": {
- "version": "3.2.8",
- "resolved": "https://registry.npmjs.org/@microsoft/1ds-core-js/-/1ds-core-js-3.2.8.tgz",
- "integrity": "sha512-9o9SUAamJiTXIYwpkQDuueYt83uZfXp8zp8YFix1IwVPwC9RmE36T2CX9gXOeq1nDckOuOduYpA8qHvdh5BGfQ==",
+ "version": "3.2.13",
+ "resolved": "https://registry.npmjs.org/@microsoft/1ds-core-js/-/1ds-core-js-3.2.13.tgz",
+ "integrity": "sha512-CluYTRWcEk0ObG5EWFNWhs87e2qchJUn0p2D21ZUa3PWojPZfPSBs4//WIE0MYV8Qg1Hdif2ZTwlM7TbYUjfAg==",
"requires": {
- "@microsoft/applicationinsights-core-js": "2.8.9",
+ "@microsoft/applicationinsights-core-js": "2.8.15",
"@microsoft/applicationinsights-shims": "^2.0.2",
"@microsoft/dynamicproto-js": "^1.1.7"
}
},
"@microsoft/1ds-post-js": {
- "version": "3.2.8",
- "resolved": "https://registry.npmjs.org/@microsoft/1ds-post-js/-/1ds-post-js-3.2.8.tgz",
- "integrity": "sha512-SjlRoNcXcXBH6WQD/5SkkaCHIVqldH3gDu+bI7YagrOVJ5APxwT1Duw9gm3L1FjFa9S2i81fvJ3EVSKpp9wULA==",
+ "version": "3.2.13",
+ "resolved": "https://registry.npmjs.org/@microsoft/1ds-post-js/-/1ds-post-js-3.2.13.tgz",
+ "integrity": "sha512-HgS574fdD19Bo2vPguyznL4eDw7Pcm1cVNpvbvBLWiW3x4e1FCQ3VMXChWnAxCae8Hb0XqlA2sz332ZobBavTA==",
"requires": {
- "@microsoft/1ds-core-js": "3.2.8",
+ "@microsoft/1ds-core-js": "3.2.13",
"@microsoft/applicationinsights-shims": "^2.0.2",
"@microsoft/dynamicproto-js": "^1.1.7"
}
},
"@microsoft/applicationinsights-channel-js": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-2.8.9.tgz",
- "integrity": "sha512-fMBsAEB7pWtPn43y72q9Xy5E5y55r6gMuDQqRRccccVoQDPXyS57VCj5IdATblctru0C6A8XpL2vRyNmEsu0Vg==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-3.0.2.tgz",
+ "integrity": "sha512-jDBNKbCHsJgmpv0CKNhJ/uN9ZphvfGdb93Svk+R4LjO8L3apNNMbDDPxBvXXi0uigRmA1TBcmyBG4IRKjabGhw==",
"requires": {
- "@microsoft/applicationinsights-common": "2.8.9",
- "@microsoft/applicationinsights-core-js": "2.8.9",
- "@microsoft/applicationinsights-shims": "2.0.2",
- "@microsoft/dynamicproto-js": "^1.1.7"
+ "@microsoft/applicationinsights-common": "3.0.2",
+ "@microsoft/applicationinsights-core-js": "3.0.2",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.2.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
+ },
+ "dependencies": {
+ "@microsoft/applicationinsights-core-js": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.2.tgz",
+ "integrity": "sha512-WQhVhzlRlLDrQzn3OShCW/pL3BW5WC57t0oywSknX3q7lMzI3jDg7Ihh0iuIcNTzGCTbDkuqr4d6IjEDWIMtJQ==",
+ "requires": {
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.2.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
+ }
+ },
+ "@microsoft/applicationinsights-shims": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-shims/-/applicationinsights-shims-3.0.1.tgz",
+ "integrity": "sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==",
+ "requires": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ },
+ "@microsoft/dynamicproto-js": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-2.0.2.tgz",
+ "integrity": "sha512-MB8trWaFREpmb037k/d0bB7T2BP7Ai24w1e1tbz3ASLB0/lwphsq3Nq8S9I5AsI5vs4zAQT+SB5nC5/dLYTiOg==",
+ "requires": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ }
}
},
"@microsoft/applicationinsights-common": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-common/-/applicationinsights-common-2.8.9.tgz",
- "integrity": "sha512-mObn1moElyxZaGIRF/IU3cOaeKMgxghXnYEoHNUCA2e+rNwBIgxjyKkblFIpmGuHf4X7Oz3o3yBWpaC6AoMpig==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-common/-/applicationinsights-common-3.0.2.tgz",
+ "integrity": "sha512-y+WXWop+OVim954Cu1uyYMnNx6PWO8okHpZIQi/1YSqtqaYdtJVPv4P0AVzwJdohxzVfgzKvqj9nec/VWqE2Zg==",
"requires": {
- "@microsoft/applicationinsights-core-js": "2.8.9",
- "@microsoft/applicationinsights-shims": "2.0.2",
- "@microsoft/dynamicproto-js": "^1.1.7"
+ "@microsoft/applicationinsights-core-js": "3.0.2",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
+ },
+ "dependencies": {
+ "@microsoft/applicationinsights-core-js": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.2.tgz",
+ "integrity": "sha512-WQhVhzlRlLDrQzn3OShCW/pL3BW5WC57t0oywSknX3q7lMzI3jDg7Ihh0iuIcNTzGCTbDkuqr4d6IjEDWIMtJQ==",
+ "requires": {
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.2.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
+ }
+ },
+ "@microsoft/applicationinsights-shims": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-shims/-/applicationinsights-shims-3.0.1.tgz",
+ "integrity": "sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==",
+ "requires": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ },
+ "@microsoft/dynamicproto-js": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-2.0.2.tgz",
+ "integrity": "sha512-MB8trWaFREpmb037k/d0bB7T2BP7Ai24w1e1tbz3ASLB0/lwphsq3Nq8S9I5AsI5vs4zAQT+SB5nC5/dLYTiOg==",
+ "requires": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ }
}
},
"@microsoft/applicationinsights-core-js": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-2.8.9.tgz",
- "integrity": "sha512-HRuIuZ6aOWezcg/G5VyFDDWGL8hDNe/ljPP01J7ImH2kRPEgbtcfPSUMjkamGMefgdq81GZsSoC/NNGTP4pp2w==",
+ "version": "2.8.15",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-2.8.15.tgz",
+ "integrity": "sha512-yYAs9MyjGr2YijQdUSN9mVgT1ijI1FPMgcffpaPmYbHAVbQmF7bXudrBWHxmLzJlwl5rfep+Zgjli2e67lwUqQ==",
"requires": {
"@microsoft/applicationinsights-shims": "2.0.2",
- "@microsoft/dynamicproto-js": "^1.1.7"
+ "@microsoft/dynamicproto-js": "^1.1.9"
}
},
"@microsoft/applicationinsights-shims": {
@@ -15864,15 +16738,46 @@
"integrity": "sha512-PoHEgsnmcqruLNHZ/amACqdJ6YYQpED0KSRe6J7gIJTtpZC1FfFU9b1fmDKDKtFoUSrPzEh1qzO3kmRZP0betg=="
},
"@microsoft/applicationinsights-web-basic": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-2.8.9.tgz",
- "integrity": "sha512-CH0J8JFOy7MjK8JO4pXXU+EML+Ilix+94PMZTX5EJlBU1in+mrik74/8qSg3UC4ekPi12KwrXaHCQSVC3WseXQ==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-3.0.2.tgz",
+ "integrity": "sha512-6Lq0DE/pZp9RvSV+weGbcxN1NDmfczj6gNPhvZKV2YSQ3RK0LZE3+wjTWLXfuStq8a+nCBdsRpWk8tOKgsoxcg==",
"requires": {
- "@microsoft/applicationinsights-channel-js": "2.8.9",
- "@microsoft/applicationinsights-common": "2.8.9",
- "@microsoft/applicationinsights-core-js": "2.8.9",
- "@microsoft/applicationinsights-shims": "2.0.2",
- "@microsoft/dynamicproto-js": "^1.1.7"
+ "@microsoft/applicationinsights-channel-js": "3.0.2",
+ "@microsoft/applicationinsights-common": "3.0.2",
+ "@microsoft/applicationinsights-core-js": "3.0.2",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.2.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
+ },
+ "dependencies": {
+ "@microsoft/applicationinsights-core-js": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.2.tgz",
+ "integrity": "sha512-WQhVhzlRlLDrQzn3OShCW/pL3BW5WC57t0oywSknX3q7lMzI3jDg7Ihh0iuIcNTzGCTbDkuqr4d6IjEDWIMtJQ==",
+ "requires": {
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.2.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
+ }
+ },
+ "@microsoft/applicationinsights-shims": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-shims/-/applicationinsights-shims-3.0.1.tgz",
+ "integrity": "sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==",
+ "requires": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ },
+ "@microsoft/dynamicproto-js": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-2.0.2.tgz",
+ "integrity": "sha512-MB8trWaFREpmb037k/d0bB7T2BP7Ai24w1e1tbz3ASLB0/lwphsq3Nq8S9I5AsI5vs4zAQT+SB5nC5/dLYTiOg==",
+ "requires": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ }
}
},
"@microsoft/applicationinsights-web-snippet": {
@@ -15881,9 +16786,28 @@
"integrity": "sha512-2IHAOaLauc8qaAitvWS+U931T+ze+7MNWrDHY47IENP5y2UA0vqJDu67kWZDdpCN1fFC77sfgfB+HV7SrKshnQ=="
},
"@microsoft/dynamicproto-js": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-1.1.7.tgz",
- "integrity": "sha512-SK3D3aVt+5vOOccKPnGaJWB5gQ8FuKfjboUJHedMP7gu54HqSCXX5iFXhktGD8nfJb0Go30eDvs/UDoTnR2kOA=="
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-1.1.9.tgz",
+ "integrity": "sha512-n1VPsljTSkthsAFYdiWfC+DKzK2WwcRp83Y1YAqdX552BstvsDjft9YXppjUzp11BPsapDoO1LDgrDB0XVsfNQ=="
+ },
+ "@nevware21/ts-async": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@nevware21/ts-async/-/ts-async-0.3.0.tgz",
+ "integrity": "sha512-ZUcgUH12LN/F6nzN0cYd0F/rJaMLmXr0EHVTyYfaYmK55bdwE4338uue4UiVoRqHVqNW4KDUrJc49iGogHKeWA==",
+ "requires": {
+ "@nevware21/ts-utils": ">= 0.10.0 < 2.x"
+ }
+ },
+ "@nevware21/ts-utils": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/@nevware21/ts-utils/-/ts-utils-0.10.1.tgz",
+ "integrity": "sha512-pMny25NnF2/MJwdqC3Iyjm2pGIXNxni4AROpcqDeWa+td9JMUY4bUS9uU9XW+BoBRqTLUL+WURF9SOd/6OQzRg=="
+ },
+ "@nicolo-ribaudo/semver-v6": {
+ "version": "6.3.3",
+ "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz",
+ "integrity": "sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==",
+ "dev": true
},
"@nodelib/fs.scandir": {
"version": "2.1.5",
@@ -15912,41 +16836,53 @@
}
},
"@opentelemetry/api": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.3.0.tgz",
- "integrity": "sha512-YveTnGNsFFixTKJz09Oi4zYkiLT5af3WpZDu4aIUM7xX+2bHAkOJayFTVQd6zB8kkWPpbua4Ha6Ql00grdLlJQ=="
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.1.tgz",
+ "integrity": "sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA=="
},
"@opentelemetry/core": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.8.0.tgz",
- "integrity": "sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.15.2.tgz",
+ "integrity": "sha512-+gBv15ta96WqkHZaPpcDHiaz0utiiHZVfm2YOYSqFGrUaJpPkMoSuLBB58YFQGi6Rsb9EHos84X6X5+9JspmLw==",
+ "requires": {
+ "@opentelemetry/semantic-conventions": "1.15.2"
+ }
+ },
+ "@opentelemetry/instrumentation": {
+ "version": "0.41.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.41.2.tgz",
+ "integrity": "sha512-rxU72E0pKNH6ae2w5+xgVYZLzc5mlxAbGzF4shxMVK8YC2QQsfN38B2GPbj0jvrKWWNUElfclQ+YTykkNg/grw==",
"requires": {
- "@opentelemetry/semantic-conventions": "1.8.0"
+ "@types/shimmer": "^1.0.2",
+ "import-in-the-middle": "1.4.2",
+ "require-in-the-middle": "^7.1.1",
+ "semver": "^7.5.1",
+ "shimmer": "^1.2.1"
}
},
"@opentelemetry/resources": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.8.0.tgz",
- "integrity": "sha512-KSyMH6Jvss/PFDy16z5qkCK0ERlpyqixb1xwb73wLMvVq+j7i89lobDjw3JkpCcd1Ws0J6jAI4fw28Zufj2ssg==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.15.2.tgz",
+ "integrity": "sha512-xmMRLenT9CXmm5HMbzpZ1hWhaUowQf8UB4jMjFlAxx1QzQcsD3KFNAVX/CAWzFPtllTyTplrA4JrQ7sCH3qmYw==",
"requires": {
- "@opentelemetry/core": "1.8.0",
- "@opentelemetry/semantic-conventions": "1.8.0"
+ "@opentelemetry/core": "1.15.2",
+ "@opentelemetry/semantic-conventions": "1.15.2"
}
},
"@opentelemetry/sdk-trace-base": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.8.0.tgz",
- "integrity": "sha512-iH41m0UTddnCKJzZx3M85vlhKzRcmT48pUeBbnzsGrq4nIay1oWVHKM5nhB5r8qRDGvd/n7f/YLCXClxwM0tvA==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.15.2.tgz",
+ "integrity": "sha512-BEaxGZbWtvnSPchV98qqqqa96AOcb41pjgvhfzDij10tkBhIu9m0Jd6tZ1tJB5ZHfHbTffqYVYE0AOGobec/EQ==",
"requires": {
- "@opentelemetry/core": "1.8.0",
- "@opentelemetry/resources": "1.8.0",
- "@opentelemetry/semantic-conventions": "1.8.0"
+ "@opentelemetry/core": "1.15.2",
+ "@opentelemetry/resources": "1.15.2",
+ "@opentelemetry/semantic-conventions": "1.15.2"
}
},
"@opentelemetry/semantic-conventions": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.8.0.tgz",
- "integrity": "sha512-TYh1MRcm4JnvpqtqOwT9WYaBYY4KERHdToxs/suDTLviGRsQkIjS5yYROTYTSJQUnYLOn/TuOh5GoMwfLSU+Ew=="
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.15.2.tgz",
+ "integrity": "sha512-CjbOKwk2s+3xPIMcd5UNYQzsf+v94RczbdNix9/kQh38WiQkM90sUOi3if8eyHFgiBjBjhwXrA7W3ydiSQP9mw=="
},
"@polka/url": {
"version": "1.0.0-next.21",
@@ -16025,11 +16961,14 @@
"integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==",
"dev": true
},
- "@types/caseless": {
- "version": "0.12.2",
- "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz",
- "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==",
- "dev": true
+ "@types/bent": {
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/@types/bent/-/bent-7.3.3.tgz",
+ "integrity": "sha512-5NEIhVzHiZ6wMjFBmJ3gwjxwGug6amMoAn93rtDBttwrODxm+bt63u+MJA7H9NGGM4X1m73sJrAxDapktl036Q==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
},
"@types/chai": {
"version": "4.3.0",
@@ -16062,28 +17001,22 @@
"dev": true
},
"@types/decompress": {
- "version": "4.2.4",
- "resolved": "https://registry.npmjs.org/@types/decompress/-/decompress-4.2.4.tgz",
- "integrity": "sha512-/C8kTMRTNiNuWGl5nEyKbPiMv6HA+0RbEXzFhFBEzASM6+oa4tJro9b8nj7eRlOFfuLdzUU+DS/GPDlvvzMOhA==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@types/decompress/-/decompress-4.2.5.tgz",
+ "integrity": "sha512-LdL+kbcKGs9TzvB/K+OBGzPfDoP6gwwTsykYjodlzUJUUYp/43c1p1jE5YTtz3z4Ml90iruvBXbJ6+kDvb3WSQ==",
"dev": true,
"requires": {
"@types/node": "*"
}
},
- "@types/diff-match-patch": {
- "version": "1.0.32",
- "resolved": "https://registry.npmjs.org/@types/diff-match-patch/-/diff-match-patch-1.0.32.tgz",
- "integrity": "sha512-bPYT5ECFiblzsVzyURaNhljBH2Gh1t9LowgUwciMrNAhFewLkHT2H0Mto07Y4/3KCOGZHRQll3CTtQZ0X11D/A==",
- "dev": true
- },
"@types/download": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/@types/download/-/download-8.0.1.tgz",
- "integrity": "sha512-t5DjMD6Y1DxjXtEHl7Kt+nQn9rOmVLYD8p4Swrcc5QpgyqyqR2gXTIK6RwwMnNeFJ+ZIiIW789fQKzCrK7AOFA==",
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/@types/download/-/download-8.0.3.tgz",
+ "integrity": "sha512-IDwXjU7zCtuFVvI0Plnb02TpXyj3RA4YeOKQvEfsjdJeWxZ9hTl6lxeNsU2bLWn0aeAS7fyMl74w/TbdOlS2KQ==",
"dev": true,
"requires": {
"@types/decompress": "*",
- "@types/got": "^8",
+ "@types/got": "^9",
"@types/node": "*"
}
},
@@ -16139,12 +17072,27 @@
}
},
"@types/got": {
- "version": "8.3.6",
- "resolved": "https://registry.npmjs.org/@types/got/-/got-8.3.6.tgz",
- "integrity": "sha512-nvLlj+831dhdm4LR2Ly+HTpdLyBaMynoOr6wpIxS19d/bPeHQxFU5XQ6Gp6ohBpxvCWZM1uHQIC2+ySRH1rGrQ==",
+ "version": "9.6.12",
+ "resolved": "https://registry.npmjs.org/@types/got/-/got-9.6.12.tgz",
+ "integrity": "sha512-X4pj/HGHbXVLqTpKjA2ahI4rV/nNBc9mGO2I/0CgAra+F2dKgMXnENv2SRpemScBzBAI4vMelIVYViQxlSE6xA==",
"dev": true,
"requires": {
- "@types/node": "*"
+ "@types/node": "*",
+ "@types/tough-cookie": "*",
+ "form-data": "^2.5.0"
+ },
+ "dependencies": {
+ "form-data": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
+ "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
+ "dev": true,
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ }
+ }
}
},
"@types/json-schema": {
@@ -16165,12 +17113,6 @@
"integrity": "sha512-n3tyKthHJbkiWhDZs3DkhkCzt2MexYHXlX0td5iMplyfwketaOeKboEVBqzceH7juqvEg3q5oUoBFxSLu7zFag==",
"dev": true
},
- "@types/md5": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/@types/md5/-/md5-2.3.2.tgz",
- "integrity": "sha512-v+JFDu96+UYJ3/UWzB0mEglIS//MZXgRaJ4ubUPwOM0gvLc/kcQ3TWNYwENEK7/EcXGQVrW8h/XqednSjBd/Og==",
- "dev": true
- },
"@types/minimatch": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
@@ -16183,65 +17125,11 @@
"integrity": "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==",
"dev": true
},
- "@types/nock": {
- "version": "10.0.3",
- "resolved": "https://registry.npmjs.org/@types/nock/-/nock-10.0.3.tgz",
- "integrity": "sha512-OthuN+2FuzfZO3yONJ/QVjKmLEuRagS9TV9lEId+WHL9KhftYG+/2z+pxlr0UgVVXSpVD8woie/3fzQn8ft/Ow==",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
"@types/node": {
- "version": "14.18.12",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz",
- "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A=="
- },
- "@types/node-fetch": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz",
- "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==",
- "requires": {
- "@types/node": "*",
- "form-data": "^3.0.0"
- },
- "dependencies": {
- "form-data": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
- "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- }
- }
- }
- },
- "@types/request": {
- "version": "2.48.8",
- "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.8.tgz",
- "integrity": "sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ==",
- "dev": true,
- "requires": {
- "@types/caseless": "*",
- "@types/node": "*",
- "@types/tough-cookie": "*",
- "form-data": "^2.5.0"
- },
- "dependencies": {
- "form-data": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
- "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
- "dev": true,
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- }
- }
- }
+ "version": "18.17.14",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.14.tgz",
+ "integrity": "sha512-ZE/5aB73CyGqgQULkLG87N9GnyGe5TcQjv34pwS8tfBs1IkCh0ASM69mydb2znqd6v0eX+9Ytvk6oQRqu8T1Vw==",
+ "dev": true
},
"@types/semver": {
"version": "5.5.0",
@@ -16249,6 +17137,11 @@
"integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==",
"dev": true
},
+ "@types/shimmer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.0.2.tgz",
+ "integrity": "sha512-dKkr1bTxbEsFlh2ARpKzcaAmsYixqt9UyCdoEZk8rHyE4iQYcDCyvSjDSf7JUWJHlJiTtbIoQjxKh6ViywqDAg=="
+ },
"@types/shortid": {
"version": "0.0.29",
"resolved": "https://registry.npmjs.org/@types/shortid/-/shortid-0.0.29.tgz",
@@ -16283,29 +17176,15 @@
"dev": true
},
"@types/tough-cookie": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.1.tgz",
- "integrity": "sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg==",
- "dev": true
- },
- "@types/tunnel": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.3.tgz",
- "integrity": "sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==",
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/uuid": {
- "version": "8.3.4",
- "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz",
- "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.3.tgz",
+ "integrity": "sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==",
"dev": true
},
"@types/vscode": {
- "version": "1.75.1",
- "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.75.1.tgz",
- "integrity": "sha512-emg7wdsTFzdi+elvoyoA+Q8keEautdQHyY5LNmHVM4PTpY8JgOTVADrGVyXGepJ6dVW2OS5/xnLUWh+nZxvdiA==",
+ "version": "1.81.0",
+ "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.81.0.tgz",
+ "integrity": "sha512-YIaCwpT+O2E7WOMq0eCgBEABE++SX3Yl/O02GoMIF2DO3qAtvw7m6BXFYsxnc6XyzwZgh6/s/UG78LSSombl2w==",
"dev": true
},
"@types/which": {
@@ -16351,15 +17230,6 @@
"requires": {
"ms": "2.1.2"
}
- },
- "semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
}
}
},
@@ -16419,15 +17289,6 @@
"requires": {
"ms": "2.1.2"
}
- },
- "semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
}
}
},
@@ -16447,14 +17308,14 @@
"dev": true
},
"@vscode/extension-telemetry": {
- "version": "0.7.4-preview",
- "resolved": "https://registry.npmjs.org/@vscode/extension-telemetry/-/extension-telemetry-0.7.4-preview.tgz",
- "integrity": "sha512-6OkvjCc+DaC9B26t3hj7vuAxf1ONm/p4LrVvFrapa+jBCKxXXUaV1Asz6+QxYaPfd4Ws/MlnFfCvlgvv3uYRwQ==",
+ "version": "0.8.4",
+ "resolved": "https://registry.npmjs.org/@vscode/extension-telemetry/-/extension-telemetry-0.8.4.tgz",
+ "integrity": "sha512-UqM9+KZDDK3MyoHTsg6XNM+XO6pweQxzCpqJz33BoBEYAGsbBviRYcVpJglgay2oReuDD2pOI1Nio3BKNDLhWA==",
"requires": {
- "@microsoft/1ds-core-js": "^3.2.8",
- "@microsoft/1ds-post-js": "^3.2.8",
- "@microsoft/applicationinsights-web-basic": "^2.8.9",
- "applicationinsights": "2.3.6"
+ "@microsoft/1ds-core-js": "^3.2.13",
+ "@microsoft/1ds-post-js": "^3.2.13",
+ "@microsoft/applicationinsights-web-basic": "^3.0.2",
+ "applicationinsights": "^2.7.1"
}
},
"@vscode/jupyter-lsp-middleware": {
@@ -16468,6 +17329,37 @@
"vscode-languageclient": "^8.0.2-next.4",
"vscode-languageserver-protocol": "^3.17.2-next.5",
"vscode-uri": "^3.0.2"
+ },
+ "dependencies": {
+ "vscode-jsonrpc": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz",
+ "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw=="
+ },
+ "vscode-languageclient": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.1.0.tgz",
+ "integrity": "sha512-GL4QdbYUF/XxQlAsvYWZRV3V34kOkpRlvV60/72ghHfsYFnS/v2MANZ9P6sHmxFcZKOse8O+L9G7Czg0NUWing==",
+ "requires": {
+ "minimatch": "^5.1.0",
+ "semver": "^7.3.7",
+ "vscode-languageserver-protocol": "3.17.3"
+ }
+ },
+ "vscode-languageserver-protocol": {
+ "version": "3.17.3",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz",
+ "integrity": "sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==",
+ "requires": {
+ "vscode-jsonrpc": "8.1.0",
+ "vscode-languageserver-types": "3.17.3"
+ }
+ },
+ "vscode-languageserver-types": {
+ "version": "3.17.3",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz",
+ "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA=="
+ }
}
},
"@vscode/lsp-notebook-concat": {
@@ -16478,18 +17370,106 @@
"object-hash": "^3.0.0",
"vscode-languageserver-protocol": "^3.17.2-next.5",
"vscode-uri": "^3.0.2"
+ },
+ "dependencies": {
+ "vscode-jsonrpc": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz",
+ "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA=="
+ },
+ "vscode-languageserver-protocol": {
+ "version": "3.17.5",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz",
+ "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==",
+ "requires": {
+ "vscode-jsonrpc": "8.2.0",
+ "vscode-languageserver-types": "3.17.5"
+ }
+ },
+ "vscode-languageserver-types": {
+ "version": "3.17.5",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz",
+ "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg=="
+ }
}
},
"@vscode/test-electron": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.1.3.tgz",
- "integrity": "sha512-ps/yJ/9ToUZtR1dHfWi1mDXtep1VoyyrmGKC3UnIbScToRQvbUjyy1VMqnMEW3EpMmC3g7+pyThIPtPyCLHyow==",
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.8.tgz",
+ "integrity": "sha512-b4aZZsBKtMGdDljAsOPObnAi7+VWIaYl3ylCz1jTs+oV6BZ4TNHcVNC3xUn0azPeszBmwSBDQYfFESIaUQnrOg==",
"dev": true,
"requires": {
"http-proxy-agent": "^4.0.1",
"https-proxy-agent": "^5.0.0",
- "rimraf": "^3.0.2",
- "unzipper": "^0.10.11"
+ "jszip": "^3.10.1",
+ "semver": "^7.5.2"
+ }
+ },
+ "@vscode/vsce": {
+ "version": "2.26.1",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.26.1.tgz",
+ "integrity": "sha512-QOG6Ht7V93nhwcBxPWcG33UK0qDGEoJdg0xtVeaTN27W6PGdMJUJGTPhB/sNHUIFKwvwzv/zMAHvDgMNXbcwlA==",
+ "dev": true,
+ "requires": {
+ "@azure/identity": "^4.1.0",
+ "azure-devops-node-api": "^12.5.0",
+ "chalk": "^2.4.2",
+ "cheerio": "^1.0.0-rc.9",
+ "cockatiel": "^3.1.2",
+ "commander": "^6.2.1",
+ "form-data": "^4.0.0",
+ "glob": "^7.0.6",
+ "hosted-git-info": "^4.0.2",
+ "jsonc-parser": "^3.2.0",
+ "keytar": "^7.7.0",
+ "leven": "^3.1.0",
+ "markdown-it": "^12.3.2",
+ "mime": "^1.3.4",
+ "minimatch": "^3.0.3",
+ "parse-semver": "^1.1.1",
+ "read": "^1.0.7",
+ "semver": "^7.5.2",
+ "tmp": "^0.2.1",
+ "typed-rest-client": "^1.8.4",
+ "url-join": "^4.0.1",
+ "xml2js": "^0.5.0",
+ "yauzl": "^2.3.1",
+ "yazl": "^2.2.2"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+ "dev": true
+ },
+ "hosted-git-info": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
+ "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "tmp": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
+ "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
+ "dev": true,
+ "requires": {
+ "rimraf": "^3.0.0"
+ }
+ }
}
},
"@webassemblyjs/ast": {
@@ -16676,14 +17656,12 @@
"acorn": {
"version": "8.8.2",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
- "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
- "dev": true
+ "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw=="
},
"acorn-import-assertions": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
- "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
- "dev": true,
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
+ "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
"requires": {}
},
"acorn-jsx": {
@@ -16699,6 +17677,24 @@
"integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
"dev": true
},
+ "agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "requires": {
+ "debug": "4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ }
+ }
+ },
"aggregate-error": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz",
@@ -16713,6 +17709,7 @@
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -16814,28 +17811,25 @@
}
},
"applicationinsights": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-2.3.6.tgz",
- "integrity": "sha512-ZzXXpZpDRGcy6Pp5V319nDF9/+Ey7jNknEXZyaBajtC5onN0dcBem6ng5jcb3MPH2AjYWRI8XgyNEuzP/6Y5/A==",
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-2.7.3.tgz",
+ "integrity": "sha512-JY8+kTEkjbA+kAVNWDtpfW2lqsrDALfDXuxOs74KLPu2y13fy/9WB52V4LfYVTVcW1/jYOXjTxNS2gPZIDh1iw==",
"requires": {
- "@azure/core-http": "^2.2.3",
+ "@azure/core-auth": "^1.5.0",
+ "@azure/core-rest-pipeline": "1.10.1",
+ "@azure/core-util": "1.2.0",
+ "@azure/opentelemetry-instrumentation-azure-sdk": "^1.0.0-beta.5",
"@microsoft/applicationinsights-web-snippet": "^1.0.1",
- "@opentelemetry/api": "^1.0.4",
- "@opentelemetry/core": "^1.0.1",
- "@opentelemetry/sdk-trace-base": "^1.0.1",
- "@opentelemetry/semantic-conventions": "^1.0.1",
+ "@opentelemetry/api": "^1.4.1",
+ "@opentelemetry/core": "^1.15.2",
+ "@opentelemetry/sdk-trace-base": "^1.15.2",
+ "@opentelemetry/semantic-conventions": "^1.15.2",
"cls-hooked": "^4.2.2",
"continuation-local-storage": "^3.2.1",
- "diagnostic-channel": "1.1.0",
- "diagnostic-channel-publishers": "1.0.5"
+ "diagnostic-channel": "1.1.1",
+ "diagnostic-channel-publishers": "1.0.7"
}
},
- "aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
- "dev": true
- },
"arch": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
@@ -16864,16 +17858,6 @@
"integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=",
"dev": true
},
- "are-we-there-yet": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz",
- "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==",
- "dev": true,
- "requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
- }
- },
"arg": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz",
@@ -17038,23 +18022,16 @@
"es-abstract": "^1.19.0"
}
},
- "asn1": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
- "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
- "requires": {
- "safer-buffer": "~2.1.0"
- }
- },
"asn1.js": {
- "version": "4.10.1",
- "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
- "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
+ "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
"dev": true,
"requires": {
"bn.js": "^4.0.0",
"inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0"
+ "minimalistic-assert": "^1.0.0",
+ "safer-buffer": "^2.1.0"
}
},
"assert": {
@@ -17084,11 +18061,6 @@
}
}
},
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
- },
"assertion-error": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
@@ -17152,6 +18124,13 @@
"requires": {
"semver": "^5.3.0",
"shimmer": "^1.1.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
+ }
}
},
"async-settle": {
@@ -17166,7 +18145,7 @@
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"atob": {
"version": "2.1.2",
@@ -17180,30 +18159,12 @@
"integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
"dev": true
},
- "aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
- },
- "aws4": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
- "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
- },
"axe-core": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz",
"integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==",
"dev": true
},
- "axios": {
- "version": "0.26.1",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz",
- "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==",
- "requires": {
- "follow-redirects": "^1.14.8"
- }
- },
"axobject-query": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
@@ -17211,9 +18172,9 @@
"dev": true
},
"azure-devops-node-api": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.0.1.tgz",
- "integrity": "sha512-YMdjAw9l5p/6leiyIloxj3k7VIvYThKjvqgiQn88r3nhT93ENwsoDS3A83CyJ4uTWzCZ5f5jCi6c27rTU5Pz+A==",
+ "version": "12.5.0",
+ "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz",
+ "integrity": "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==",
"dev": true,
"requires": {
"tunnel": "0.0.6",
@@ -17327,36 +18288,31 @@
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
"dev": true
},
- "bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+ "bent": {
+ "version": "7.3.12",
+ "resolved": "https://registry.npmjs.org/bent/-/bent-7.3.12.tgz",
+ "integrity": "sha512-T3yrKnVGB63zRuoco/7Ybl7BwwGZR0lceoVG5XmQyMIH9s19SV5m+a8qam4if0zQuAmOQTyPTPmsQBdAorGK3w==",
+ "dev": true,
"requires": {
- "tweetnacl": "^0.14.3"
+ "bytesish": "^0.4.1",
+ "caseless": "~0.12.0",
+ "is-stream": "^2.0.0"
+ },
+ "dependencies": {
+ "is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true
+ }
}
},
- "big-integer": {
- "version": "1.6.49",
- "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.49.tgz",
- "integrity": "sha512-KJ7VhqH+f/BOt9a3yMwJNmcZjG53ijWMTjSAGMveQWyLwqIiwkjNP5PFgDob3Snnx86SjDj6I89fIbv0dkQeNw==",
- "dev": true
- },
"big.js": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
"integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
"dev": true
},
- "binary": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
- "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=",
- "dev": true,
- "requires": {
- "buffers": "~0.1.1",
- "chainsaw": "~0.1.0"
- }
- },
"binary-extensions": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
@@ -17483,28 +18439,63 @@
}
},
"browserify-rsa": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
- "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
+ "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
"dev": true,
"requires": {
- "bn.js": "^4.1.0",
+ "bn.js": "^5.0.0",
"randombytes": "^2.0.1"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
+ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
+ "dev": true
+ }
}
},
"browserify-sign": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
- "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz",
+ "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==",
"dev": true,
"requires": {
- "bn.js": "^4.1.1",
- "browserify-rsa": "^4.0.0",
- "create-hash": "^1.1.0",
- "create-hmac": "^1.1.2",
- "elliptic": "^6.0.0",
- "inherits": "^2.0.1",
- "parse-asn1": "^5.0.0"
+ "bn.js": "^5.2.1",
+ "browserify-rsa": "^4.1.0",
+ "create-hash": "^1.2.0",
+ "create-hmac": "^1.1.7",
+ "elliptic": "^6.5.4",
+ "inherits": "^2.0.4",
+ "parse-asn1": "^5.1.6",
+ "readable-stream": "^3.6.2",
+ "safe-buffer": "^5.2.1"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
+ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true
+ }
}
},
"browserify-zlib": {
@@ -17514,27 +18505,18 @@
"dev": true,
"requires": {
"pako": "~1.0.5"
- },
- "dependencies": {
- "pako": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz",
- "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==",
- "dev": true
- }
}
},
"browserslist": {
- "version": "4.20.2",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz",
- "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==",
+ "version": "4.21.9",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz",
+ "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==",
"dev": true,
"requires": {
- "caniuse-lite": "^1.0.30001317",
- "electron-to-chromium": "^1.4.84",
- "escalade": "^3.1.1",
- "node-releases": "^2.0.2",
- "picocolors": "^1.0.0"
+ "caniuse-lite": "^1.0.30001503",
+ "electron-to-chromium": "^1.4.431",
+ "node-releases": "^2.0.12",
+ "update-browserslist-db": "^1.0.11"
}
},
"buffer": {
@@ -17569,6 +18551,12 @@
"integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
"dev": true
},
+ "buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
+ "dev": true
+ },
"buffer-fill": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
@@ -17581,30 +18569,24 @@
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
"dev": true
},
- "buffer-indexof-polyfill": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz",
- "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==",
- "dev": true
- },
"buffer-xor": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
"integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
"dev": true
},
- "buffers": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
- "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=",
- "dev": true
- },
"builtin-status-codes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
"integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
"dev": true
},
+ "bytesish": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/bytesish/-/bytesish-0.4.4.tgz",
+ "integrity": "sha512-i4uu6M4zuMUiyfZN4RU2+i9+peJh//pXhd9x1oSe1LBkZ3LEbCoygu8W0bXTukU1Jme2txKuotpCZRaC3FLxcQ==",
+ "dev": true
+ },
"cache-base": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
@@ -17658,13 +18640,16 @@
}
},
"call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
"dev": true,
"requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
}
},
"camelcase": {
@@ -17674,15 +18659,16 @@
"dev": true
},
"caniuse-lite": {
- "version": "1.0.30001320",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001320.tgz",
- "integrity": "sha512-MWPzG54AGdo3nWx7zHZTefseM5Y1ccM7hlQKHRqJkPozUaw3hNbBTMmLn16GG2FUzjR13Cr3NPfhIieX5PzXDA==",
+ "version": "1.0.30001512",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001512.tgz",
+ "integrity": "sha512-2S9nK0G/mE+jasCUsMPlARhRCts1ebcp2Ji8Y8PWi4NDE1iRdLCnEPHkEfeBrGC45L4isBx5ur3IQ6yTE2mRZw==",
"dev": true
},
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
+ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
+ "dev": true
},
"chai": {
"version": "4.3.6",
@@ -17714,15 +18700,6 @@
"check-error": "^1.0.2"
}
},
- "chainsaw": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
- "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=",
- "dev": true,
- "requires": {
- "traverse": ">=0.3.0 <0.4"
- }
- },
"chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
@@ -17737,7 +18714,8 @@
"charenc": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
- "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc="
+ "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=",
+ "dev": true
},
"check-error": {
"version": "1.0.2",
@@ -17977,10 +18955,11 @@
}
},
"chownr": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz",
- "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==",
- "dev": true
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+ "dev": true,
+ "optional": true
},
"chrome-trace-event": {
"version": "1.0.2",
@@ -18007,6 +18986,11 @@
"integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
"dev": true
},
+ "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=="
+ },
"class-utils": {
"version": "0.3.6",
"resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
@@ -18039,7 +19023,7 @@
"cliui": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==",
"dev": true,
"requires": {
"string-width": "^1.0.1",
@@ -18050,13 +19034,13 @@
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
"dev": true
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
@@ -18121,12 +19105,25 @@
"async-hook-jl": "^1.7.6",
"emitter-listener": "^1.0.1",
"semver": "^5.4.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
+ }
}
},
+ "cockatiel": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.1.3.tgz",
+ "integrity": "sha512-xC759TpZ69d7HhfDp8m2WkRwEUiCkxY8Ee2OQH/3H6zmy2D/5Sm+zSTbPRa+V2QyjDtpMvjOIAOVjA2gp6N1kQ==",
+ "dev": true
+ },
"code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+ "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",
"dev": true
},
"collection-map": {
@@ -18249,12 +19246,6 @@
"integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
"dev": true
},
- "console-control-strings": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
- "dev": true
- },
"constants-browserify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
@@ -18280,13 +19271,10 @@
}
},
"convert-source-map": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
- "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.1"
- }
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "dev": true
},
"copy-descriptor": {
"version": "0.1.1",
@@ -18346,7 +19334,8 @@
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
},
"create-ecdh": {
"version": "4.0.3",
@@ -18404,6 +19393,12 @@
"which": "^1.2.9"
},
"dependencies": {
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true
+ },
"which": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
@@ -18418,7 +19413,8 @@
"crypt": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
- "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs="
+ "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=",
+ "dev": true
},
"crypto-browserify": {
"version": "3.12.0",
@@ -18455,14 +19451,6 @@
"integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
"dev": true
},
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -18646,25 +19634,12 @@
"type-detect": "^4.0.0"
}
},
- "deep-equal": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
- "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
- "dev": true,
- "requires": {
- "is-arguments": "^1.0.4",
- "is-date-object": "^1.0.1",
- "is-regex": "^1.0.4",
- "object-is": "^1.0.1",
- "object-keys": "^1.1.1",
- "regexp.prototype.flags": "^1.2.0"
- }
- },
"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
+ "dev": true,
+ "optional": true
},
"deep-is": {
"version": "0.1.3",
@@ -18712,6 +19687,23 @@
"integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=",
"dev": true
},
+ "define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "requires": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ }
+ },
+ "define-lazy-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "dev": true
+ },
"define-properties": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
@@ -18781,13 +19773,7 @@
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
- },
- "delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
- "dev": true
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
},
"des.js": {
"version": "1.0.0",
@@ -18806,23 +19792,24 @@
"dev": true
},
"detect-libc": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
- "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
- "dev": true
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
+ "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==",
+ "dev": true,
+ "optional": true
},
"diagnostic-channel": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/diagnostic-channel/-/diagnostic-channel-1.1.0.tgz",
- "integrity": "sha512-fwujyMe1gj6rk6dYi9hMZm0c8Mz8NDMVl2LB4iaYh3+LIAThZC8RKFGXWG0IML2OxAit/ZFRgZhMkhQ3d/bobQ==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/diagnostic-channel/-/diagnostic-channel-1.1.1.tgz",
+ "integrity": "sha512-r2HV5qFkUICyoaKlBEpLKHjxMXATUf/l+h8UZPGBHGLy4DDiY2sOLcIctax4eRnTw5wH2jTMExLntGPJ8eOJxw==",
"requires": {
- "semver": "^5.3.0"
+ "semver": "^7.5.3"
}
},
"diagnostic-channel-publishers": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/diagnostic-channel-publishers/-/diagnostic-channel-publishers-1.0.5.tgz",
- "integrity": "sha512-dJwUS0915pkjjimPJVDnS/QQHsH0aOYhnZsLJdnZIMOrB+csj8RnZhWTuwnm8R5v3Z7OZs+ksv5luC14DGB7eg==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/diagnostic-channel-publishers/-/diagnostic-channel-publishers-1.0.7.tgz",
+ "integrity": "sha512-SEECbY5AiVt6DfLkhkaHNeshg1CogdLLANA8xlG/TKvS+XUgvIKl7VspJGYiEdL5OUyzMVnr7o0AwB7f+/Mjtg==",
"requires": {}
},
"diff": {
@@ -18831,11 +19818,6 @@
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
"dev": true
},
- "diff-match-patch": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz",
- "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw=="
- },
"diffie-hellman": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
@@ -18918,6 +19900,12 @@
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
+ },
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true
}
}
},
@@ -18927,15 +19915,6 @@
"integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
"dev": true
},
- "duplexer2": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
- "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
- "dev": true,
- "requires": {
- "readable-stream": "^2.0.2"
- }
- },
"duplexer3": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
@@ -18964,19 +19943,19 @@
"object.defaults": "^1.1.0"
}
},
- "ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+ "ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+ "dev": true,
"requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
+ "safe-buffer": "^5.0.1"
}
},
"electron-to-chromium": {
- "version": "1.4.92",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.92.tgz",
- "integrity": "sha512-YAVbvQIcDE/IJ/vzDMjD484/hsRbFPW2qXJPaYTfOhtligmfYEYOep+5QojpaEU9kq6bMvNeC2aG7arYvTHYsA==",
+ "version": "1.4.450",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.450.tgz",
+ "integrity": "sha512-BLG5HxSELlrMx7dJ2s+8SFlsCtJp37Zpk2VAxyC6CZtbc+9AJeZHfYHbrlSgdXp6saQ8StMqOTEDaBKgA7u1sw==",
"dev": true
},
"elliptic": {
@@ -19077,14 +20056,6 @@
"dev": true,
"requires": {
"is-arrayish": "^0.2.1"
- },
- "dependencies": {
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
- "dev": true
- }
}
},
"es-abstract": {
@@ -19115,6 +20086,21 @@
"unbox-primitive": "^1.0.1"
}
},
+ "es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.2.4"
+ }
+ },
+ "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-module-lexer": {
"version": "0.9.3",
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
@@ -19133,22 +20119,15 @@
}
},
"es5-ext": {
- "version": "0.10.53",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz",
- "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==",
+ "version": "0.10.64",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
+ "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
"dev": true,
"requires": {
- "es6-iterator": "~2.0.3",
- "es6-symbol": "~3.1.3",
- "next-tick": "~1.0.0"
- },
- "dependencies": {
- "next-tick": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
- "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
- "dev": true
- }
+ "es6-iterator": "^2.0.3",
+ "es6-symbol": "^3.1.3",
+ "esniff": "^2.0.1",
+ "next-tick": "^1.1.0"
}
},
"es6-error": {
@@ -19303,12 +20282,12 @@
}
},
"debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"requires": {
- "ms": "^2.1.1"
+ "ms": "2.1.2"
}
},
"doctrine": {
@@ -19362,16 +20341,6 @@
"integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
"dev": true
},
- "levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
"minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -19381,47 +20350,18 @@
"brace-expansion": "^1.1.7"
}
},
- "optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
"path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true
},
- "prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true
- },
"progress": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
"integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
"dev": true
},
- "semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
"shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -19439,20 +20379,11 @@
},
"supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "prelude-ls": "^1.2.1"
+ "has-flag": "^4.0.0"
}
},
"type-fest": {
@@ -19704,9 +20635,9 @@
}
},
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true
}
}
@@ -19743,6 +20674,26 @@
"integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
"dev": true
},
+ "esniff": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
+ "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
+ "dev": true,
+ "requires": {
+ "d": "^1.0.1",
+ "es5-ext": "^0.10.62",
+ "event-emitter": "^0.3.5",
+ "type": "^2.7.2"
+ },
+ "dependencies": {
+ "type": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
+ "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
+ "dev": true
+ }
+ }
+ },
"espree": {
"version": "7.3.1",
"resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
@@ -19808,6 +20759,16 @@
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true
},
+ "event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
+ "dev": true,
+ "requires": {
+ "d": "1",
+ "es5-ext": "~0.10.14"
+ }
+ },
"events": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
@@ -19926,7 +20887,8 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
"integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
- "dev": true
+ "dev": true,
+ "optional": true
},
"expand-tilde": {
"version": "2.0.2",
@@ -19983,7 +20945,8 @@
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
},
"extend-shallow": {
"version": "3.0.2",
@@ -20071,11 +21034,6 @@
}
}
},
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
- },
"fancy-log": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
@@ -20091,7 +21049,8 @@
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
},
"fast-glob": {
"version": "3.2.11",
@@ -20163,7 +21122,8 @@
"fast-json-stable-stringify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
- "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
},
"fast-levenshtein": {
"version": "2.0.6",
@@ -20268,6 +21228,17 @@
"integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==",
"dev": true
},
+ "find-cache-dir": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
+ "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^3.0.2",
+ "pkg-dir": "^4.1.0"
+ }
+ },
"find-up": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
@@ -20349,11 +21320,6 @@
"readable-stream": "^2.3.6"
}
},
- "follow-redirects": {
- "version": "1.15.1",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz",
- "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA=="
- },
"for-in": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
@@ -20410,18 +21376,13 @@
}
}
},
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
- },
"form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"requires": {
"asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
+ "combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
}
},
@@ -20513,34 +21474,10 @@
"dev": true,
"optional": true
},
- "fstream": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
- "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "inherits": "~2.0.0",
- "mkdirp": ">=0.5 0",
- "rimraf": "2"
- },
- "dependencies": {
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- }
- }
- },
"function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
},
"functional-red-black-tree": {
"version": "1.0.1",
@@ -20548,38 +21485,11 @@
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
"dev": true
},
- "gauge": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
- "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
- "dev": true,
- "requires": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- }
- }
+ "gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true
},
"get-caller-file": {
"version": "1.0.3",
@@ -20588,20 +21498,22 @@
"dev": true
},
"get-func-name": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
- "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
+ "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
"dev": true
},
"get-intrinsic": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
- "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
"dev": true,
"requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1"
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
}
},
"get-package-type": {
@@ -20638,19 +21550,12 @@
"integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
"dev": true
},
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
"github-from-package": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
- "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=",
- "dev": true
+ "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
+ "dev": true,
+ "optional": true
},
"glob": {
"version": "7.2.0",
@@ -20858,6 +21763,15 @@
"sparkles": "^1.0.0"
}
},
+ "gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.1.3"
+ }
+ },
"got": {
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz",
@@ -20918,49 +21832,40 @@
"gulp-cli": "^2.2.0",
"undertaker": "^1.2.1",
"vinyl-fs": "^3.0.0"
+ }
+ },
+ "gulp-cli": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz",
+ "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==",
+ "dev": true,
+ "requires": {
+ "ansi-colors": "^1.0.1",
+ "archy": "^1.0.0",
+ "array-sort": "^1.0.0",
+ "color-support": "^1.1.3",
+ "concat-stream": "^1.6.0",
+ "copy-props": "^2.0.1",
+ "fancy-log": "^1.3.2",
+ "gulplog": "^1.0.0",
+ "interpret": "^1.4.0",
+ "isobject": "^3.0.1",
+ "liftoff": "^3.1.0",
+ "matchdep": "^2.0.0",
+ "mute-stdout": "^1.0.0",
+ "pretty-hrtime": "^1.0.0",
+ "replace-homedir": "^1.0.0",
+ "semver-greatest-satisfied-range": "^1.1.0",
+ "v8flags": "^3.2.0",
+ "yargs": "^7.1.0"
},
"dependencies": {
"camelcase": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
- "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+ "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==",
"dev": true
},
- "gulp-cli": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz",
- "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==",
- "dev": true,
- "requires": {
- "ansi-colors": "^1.0.1",
- "archy": "^1.0.0",
- "array-sort": "^1.0.0",
- "color-support": "^1.1.3",
- "concat-stream": "^1.6.0",
- "copy-props": "^2.0.1",
- "fancy-log": "^1.3.2",
- "gulplog": "^1.0.0",
- "interpret": "^1.4.0",
- "isobject": "^3.0.1",
- "liftoff": "^3.1.0",
- "matchdep": "^2.0.0",
- "mute-stdout": "^1.0.0",
- "pretty-hrtime": "^1.0.0",
- "replace-homedir": "^1.0.0",
- "semver-greatest-satisfied-range": "^1.1.0",
- "v8flags": "^3.2.0",
- "yargs": "^7.1.0"
- }
- },
- "v8flags": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz",
- "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==",
- "dev": true,
- "requires": {
- "homedir-polyfill": "^1.0.1"
- }
- },
"y18n": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
@@ -20968,9 +21873,9 @@
"dev": true
},
"yargs": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.1.tgz",
- "integrity": "sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g==",
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz",
+ "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==",
"dev": true,
"requires": {
"camelcase": "^3.0.0",
@@ -20985,13 +21890,13 @@
"string-width": "^1.0.2",
"which-module": "^1.0.0",
"y18n": "^3.2.1",
- "yargs-parser": "5.0.0-security.0"
+ "yargs-parser": "^5.0.1"
}
},
"yargs-parser": {
- "version": "5.0.0-security.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz",
- "integrity": "sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz",
+ "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==",
"dev": true,
"requires": {
"camelcase": "^3.0.0",
@@ -21056,25 +21961,10 @@
"duplexer": "^0.1.2"
}
},
- "har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
- },
- "har-validator": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
- "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
- "requires": {
- "ajv": "^6.5.5",
- "har-schema": "^2.0.0"
- }
- },
"has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
"requires": {
"function-bind": "^1.1.1"
}
@@ -21091,6 +21981,21 @@
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true
},
+ "has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
+ "requires": {
+ "es-define-property": "^1.0.0"
+ }
+ },
+ "has-proto": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "dev": true
+ },
"has-symbol-support-x": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz",
@@ -21121,12 +22026,6 @@
"has-symbols": "^1.0.2"
}
},
- "has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
- "dev": true
- },
"has-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
@@ -21196,6 +22095,15 @@
}
}
},
+ "hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.2"
+ }
+ },
"he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
@@ -21251,15 +22159,6 @@
"debug": "4"
},
"dependencies": {
- "agent-base": {
- "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"
- }
- },
"debug": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
@@ -21271,16 +22170,6 @@
}
}
},
- "http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
- "requires": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- }
- },
"https-browserify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
@@ -21291,26 +22180,15 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
"integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
- "dev": true,
"requires": {
"agent-base": "6",
"debug": "4"
},
"dependencies": {
- "agent-base": {
- "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"
- }
- },
"debug": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
- "dev": true,
"requires": {
"ms": "2.1.2"
}
@@ -21343,6 +22221,12 @@
"integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
"dev": true
},
+ "immediate": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
+ "dev": true
+ },
"import-fresh": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
@@ -21361,6 +22245,17 @@
}
}
},
+ "import-in-the-middle": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.4.2.tgz",
+ "integrity": "sha512-9WOz1Yh/cvO/p69sxRmhyQwrIGGSp7EIdcb+fFNVi7CzQGQB8U1/1XrKVSbEd/GNOAeM0peJtmi7+qphe7NvAw==",
+ "requires": {
+ "acorn": "^8.8.2",
+ "acorn-import-assertions": "^1.9.0",
+ "cjs-module-lexer": "^1.2.2",
+ "module-details-from-path": "^1.0.3"
+ }
+ },
"import-local": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
@@ -21438,7 +22333,7 @@
"invert-kv": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
- "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
+ "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==",
"dev": true
},
"is-absolute": {
@@ -21481,6 +22376,12 @@
"has-tostringtag": "^1.0.0"
}
},
+ "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.2",
"resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz",
@@ -21499,7 +22400,8 @@
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
},
"is-callable": {
"version": "1.2.4",
@@ -21508,10 +22410,9 @@
"dev": true
},
"is-core-module": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
- "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
- "dev": true,
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
+ "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
"requires": {
"has": "^1.0.3"
}
@@ -21564,6 +22465,12 @@
}
}
},
+ "is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "dev": true
+ },
"is-extendable": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
@@ -21579,7 +22486,7 @@
"is-fullwidth-code-point": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
"dev": true,
"requires": {
"number-is-nan": "^1.0.0"
@@ -21755,7 +22662,8 @@
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "dev": true
},
"is-unc-path": {
"version": "1.0.0",
@@ -21799,6 +22707,15 @@
"integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
"dev": true
},
+ "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"
+ }
+ },
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
@@ -21816,15 +22733,10 @@
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
"dev": true
},
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
- },
"istanbul-lib-coverage": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz",
- "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
+ "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
"dev": true
},
"istanbul-lib-hook": {
@@ -21837,198 +22749,43 @@
}
},
"istanbul-lib-instrument": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.0.tgz",
- "integrity": "sha512-Nm4wVHdo7ZXSG30KjZ2Wl5SU/Bw7bDx1PdaiIFzEStdjs0H12mOTncn1GVYuqQSaZxpg87VGBRsVRPGD2cD1AQ==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
+ "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
"dev": true,
"requires": {
"@babel/core": "^7.7.5",
- "@babel/parser": "^7.7.5",
- "@babel/template": "^7.7.4",
- "@babel/traverse": "^7.7.4",
"@istanbuljs/schema": "^0.1.2",
"istanbul-lib-coverage": "^3.0.0",
"semver": "^6.3.0"
- },
- "dependencies": {
- "@babel/core": {
- "version": "7.7.7",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.7.tgz",
- "integrity": "sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.5.5",
- "@babel/generator": "^7.7.7",
- "@babel/helpers": "^7.7.4",
- "@babel/parser": "^7.7.7",
- "@babel/template": "^7.7.4",
- "@babel/traverse": "^7.7.4",
- "@babel/types": "^7.7.4",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "json5": "^2.1.0",
- "lodash": "^4.17.13",
- "resolve": "^1.3.2",
- "semver": "^5.4.1",
- "source-map": "^0.5.0"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- }
- }
- },
- "@babel/generator": {
- "version": "7.7.7",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz",
- "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.7.4",
- "jsesc": "^2.5.1",
- "lodash": "^4.17.13",
- "source-map": "^0.5.0"
- }
- },
- "@babel/helper-function-name": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz",
- "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==",
- "dev": true,
- "requires": {
- "@babel/helper-get-function-arity": "^7.7.4",
- "@babel/template": "^7.7.4",
- "@babel/types": "^7.7.4"
- }
- },
- "@babel/helper-get-function-arity": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz",
- "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.7.4"
- }
- },
- "@babel/helper-split-export-declaration": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz",
- "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.7.4"
- }
- },
- "@babel/helpers": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.4.tgz",
- "integrity": "sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.7.4",
- "@babel/traverse": "^7.7.4",
- "@babel/types": "^7.7.4"
- }
- },
- "@babel/parser": {
- "version": "7.7.7",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz",
- "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==",
- "dev": true
- },
- "@babel/template": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz",
- "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "@babel/parser": "^7.7.4",
- "@babel/types": "^7.7.4"
- }
- },
- "@babel/traverse": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz",
- "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.5.5",
- "@babel/generator": "^7.7.4",
- "@babel/helper-function-name": "^7.7.4",
- "@babel/helper-split-export-declaration": "^7.7.4",
- "@babel/parser": "^7.7.4",
- "@babel/types": "^7.7.4",
- "debug": "^4.1.0",
- "globals": "^11.1.0",
- "lodash": "^4.17.13"
- }
- },
- "@babel/types": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
- "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.17.13",
- "to-fast-properties": "^2.0.0"
- }
- },
- "convert-source-map": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
- "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.1"
- }
- },
- "debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
+ },
+ "dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true
}
}
},
"istanbul-lib-processinfo": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz",
- "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz",
+ "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==",
"dev": true,
"requires": {
"archy": "^1.0.0",
- "cross-spawn": "^7.0.0",
- "istanbul-lib-coverage": "^3.0.0-alpha.1",
- "make-dir": "^3.0.0",
+ "cross-spawn": "^7.0.3",
+ "istanbul-lib-coverage": "^3.2.0",
"p-map": "^3.0.0",
"rimraf": "^3.0.0",
- "uuid": "^3.3.3"
+ "uuid": "^8.3.2"
},
"dependencies": {
"cross-spawn": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz",
- "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==",
+ "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",
@@ -22065,12 +22822,6 @@
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true
- },
- "uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "dev": true
}
}
},
@@ -22114,20 +22865,20 @@
},
"dependencies": {
"debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"requires": {
- "ms": "^2.1.1"
+ "ms": "2.1.2"
}
}
}
},
"istanbul-reports": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz",
- "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
+ "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
"dev": true,
"requires": {
"html-escaper": "^2.0.0",
@@ -22196,11 +22947,6 @@
}
}
},
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
- },
"jsesc": {
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
@@ -22219,15 +22965,11 @@
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
"dev": true
},
- "json-schema": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
- "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
- },
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
},
"json-stable-stringify-without-jsonify": {
"version": "1.0.1",
@@ -22235,11 +22977,6 @@
"integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
"dev": true
},
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
- },
"json5": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
@@ -22247,19 +22984,49 @@
"dev": true
},
"jsonc-parser": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz",
- "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA=="
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
+ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w=="
},
- "jsprim": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
- "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
+ "jsonwebtoken": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
+ "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==",
+ "dev": true,
"requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.4.0",
- "verror": "1.10.0"
+ "jws": "^3.2.2",
+ "lodash.includes": "^4.3.0",
+ "lodash.isboolean": "^3.0.3",
+ "lodash.isinteger": "^4.0.4",
+ "lodash.isnumber": "^3.0.3",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.isstring": "^4.0.1",
+ "lodash.once": "^4.0.0",
+ "ms": "^2.1.1",
+ "semver": "^7.5.4"
+ },
+ "dependencies": {
+ "jwa": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
+ "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
+ "dev": true,
+ "requires": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "jws": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
+ "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
+ "dev": true,
+ "requires": {
+ "jwa": "^1.4.1",
+ "safe-buffer": "^5.0.1"
+ }
+ }
}
},
"jsx-ast-utils": {
@@ -22272,6 +23039,18 @@
"object.assign": "^4.1.2"
}
},
+ "jszip": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
+ "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
+ "dev": true,
+ "requires": {
+ "lie": "~3.3.0",
+ "pako": "~1.0.2",
+ "readable-stream": "~2.3.6",
+ "setimmediate": "^1.0.5"
+ }
+ },
"just-debounce": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz",
@@ -22284,14 +23063,36 @@
"integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==",
"dev": true
},
+ "jwa": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
+ "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
+ "dev": true,
+ "requires": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "jws": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
+ "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
+ "dev": true,
+ "requires": {
+ "jwa": "^2.0.0",
+ "safe-buffer": "^5.0.1"
+ }
+ },
"keytar": {
- "version": "7.7.0",
- "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.7.0.tgz",
- "integrity": "sha512-YEY9HWqThQc5q5xbXbRwsZTh2PJ36OSYRjSv3NN2xf5s5dpLTjEZnC2YikR29OaVybf9nQ0dJ/80i40RS97t/A==",
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz",
+ "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==",
"dev": true,
+ "optional": true,
"requires": {
- "node-addon-api": "^3.0.0",
- "prebuild-install": "^6.0.0"
+ "node-addon-api": "^4.3.0",
+ "prebuild-install": "^7.0.1"
}
},
"keyv": {
@@ -22346,7 +23147,7 @@
"lcid": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
- "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+ "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==",
"dev": true,
"requires": {
"invert-kv": "^1.0.0"
@@ -22367,6 +23168,25 @@
"integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
"dev": true
},
+ "levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ }
+ },
+ "lie": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
+ "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
+ "dev": true,
+ "requires": {
+ "immediate": "~3.0.5"
+ }
+ },
"liftoff": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz",
@@ -22392,16 +23212,10 @@
"uc.micro": "^1.0.1"
}
},
- "listenercount": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz",
- "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=",
- "dev": true
- },
"load-json-file": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
- "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
@@ -22411,19 +23225,10 @@
"strip-bom": "^2.0.0"
},
"dependencies": {
- "parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
- "dev": true,
- "requires": {
- "error-ex": "^1.2.0"
- }
- },
"pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
"dev": true
}
}
@@ -22477,12 +23282,54 @@
"integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
"dev": true
},
+ "lodash.includes": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
+ "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==",
+ "dev": true
+ },
+ "lodash.isboolean": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
+ "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==",
+ "dev": true
+ },
+ "lodash.isinteger": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
+ "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==",
+ "dev": true
+ },
+ "lodash.isnumber": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
+ "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==",
+ "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.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
"dev": true
},
+ "lodash.once": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
+ "dev": true
+ },
"lodash.some": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz",
@@ -22617,9 +23464,9 @@
},
"dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true
}
}
@@ -22714,6 +23561,7 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
"integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
+ "dev": true,
"requires": {
"charenc": "0.0.2",
"crypt": "0.0.2",
@@ -22842,7 +23690,8 @@
"minimist": {
"version": "1.2.6",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
- "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
+ "dev": true
},
"mixin-deep": {
"version": "1.3.2",
@@ -22869,6 +23718,7 @@
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "dev": true,
"requires": {
"minimist": "^1.2.5"
}
@@ -22877,7 +23727,8 @@
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
"integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
- "dev": true
+ "dev": true,
+ "optional": true
},
"mocha": {
"version": "9.2.2",
@@ -23166,6 +24017,11 @@
}
}
},
+ "module-details-from-path": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz",
+ "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A=="
+ },
"mrmime": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz",
@@ -23175,8 +24031,7 @@
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"mute-stdout": {
"version": "1.0.1",
@@ -23231,7 +24086,8 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
"integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==",
- "dev": true
+ "dev": true,
+ "optional": true
},
"natural-compare": {
"version": "1.4.0",
@@ -23245,6 +24101,12 @@
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"dev": true
},
+ "next-tick": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
+ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
+ "dev": true
+ },
"nice-try": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
@@ -23264,56 +24126,22 @@
"path-to-regexp": "^1.7.0"
}
},
- "nock": {
- "version": "10.0.6",
- "resolved": "https://registry.npmjs.org/nock/-/nock-10.0.6.tgz",
- "integrity": "sha512-b47OWj1qf/LqSQYnmokNWM8D88KvUl2y7jT0567NB3ZBAZFz2bWp2PC81Xn7u8F2/vJxzkzNZybnemeFa7AZ2w==",
- "dev": true,
- "requires": {
- "chai": "^4.1.2",
- "debug": "^4.1.0",
- "deep-equal": "^1.0.0",
- "json-stringify-safe": "^5.0.1",
- "lodash": "^4.17.5",
- "mkdirp": "^0.5.0",
- "propagate": "^1.0.0",
- "qs": "^6.5.1",
- "semver": "^5.5.0"
- },
- "dependencies": {
- "debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- }
- }
- },
"node-abi": {
- "version": "2.30.1",
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz",
- "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==",
+ "version": "3.45.0",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.45.0.tgz",
+ "integrity": "sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==",
"dev": true,
+ "optional": true,
"requires": {
- "semver": "^5.4.1"
+ "semver": "^7.3.5"
}
},
"node-addon-api": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
- "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
- "dev": true
- },
- "node-fetch": {
- "version": "2.6.7",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
- "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
- "requires": {
- "whatwg-url": "^5.0.0"
- }
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
+ "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==",
+ "dev": true,
+ "optional": true
},
"node-has-native-dependencies": {
"version": "1.0.2",
@@ -23515,9 +24343,9 @@
}
},
"node-releases": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz",
- "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==",
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz",
+ "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==",
"dev": true
},
"node-stream-zip": {
@@ -23535,6 +24363,14 @@
"resolve": "^1.10.0",
"semver": "2 || 3 || 4 || 5",
"validate-npm-package-license": "^3.0.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true
+ }
}
},
"normalize-path": {
@@ -23591,18 +24427,6 @@
}
}
},
- "npmlog": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
- "dev": true,
- "requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
"nth-check": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
@@ -23615,7 +24439,7 @@
"number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",
"dev": true
},
"nyc": {
@@ -23653,26 +24477,6 @@
"yargs": "^15.0.2"
},
"dependencies": {
- "convert-source-map": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
- "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.1"
- }
- },
- "find-cache-dir": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.2.0.tgz",
- "integrity": "sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg==",
- "dev": true,
- "requires": {
- "commondir": "^1.0.1",
- "make-dir": "^3.0.0",
- "pkg-dir": "^4.1.0"
- }
- },
"p-map": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
@@ -23684,11 +24488,6 @@
}
}
},
- "oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
- },
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -23732,9 +24531,9 @@
"integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="
},
"object-inspect": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
- "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==",
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
"dev": true
},
"object-is": {
@@ -23908,12 +24707,37 @@
"mimic-fn": "^2.1.0"
}
},
+ "open": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
+ "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
+ "dev": true,
+ "requires": {
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
+ }
+ },
"opener": {
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
"integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
"dev": true
},
+ "optionator": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "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"
+ }
+ },
"ordered-read-streams": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
@@ -23932,7 +24756,7 @@
"os-locale": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
- "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+ "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==",
"dev": true,
"requires": {
"lcid": "^1.0.0"
@@ -24024,6 +24848,12 @@
"release-zalgo": "^1.0.0"
}
},
+ "pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+ "dev": true
+ },
"parent-module": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@@ -24042,14 +24872,13 @@
}
},
"parse-asn1": {
- "version": "5.1.4",
- "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz",
- "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==",
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
+ "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
"dev": true,
"requires": {
- "asn1.js": "^4.0.0",
+ "asn1.js": "^5.2.0",
"browserify-aes": "^1.0.0",
- "create-hash": "^1.1.0",
"evp_bytestokey": "^1.0.0",
"pbkdf2": "^3.0.3",
"safe-buffer": "^5.1.1"
@@ -24066,6 +24895,15 @@
"path-root": "^0.1.1"
}
},
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
"parse-node-version": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
@@ -24081,10 +24919,18 @@
"parse-semver": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz",
- "integrity": "sha1-mkr9bfBj3Egm+T+6SpnPIj9mbLg=",
+ "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==",
"dev": true,
"requires": {
"semver": "^5.1.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true
+ }
}
},
"parse5-htmlparser2-tree-adapter": {
@@ -24142,8 +24988,7 @@
"path-parse": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
"path-root": {
"version": "0.1.1",
@@ -24208,11 +25053,6 @@
"integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
"dev": true
},
- "performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
- },
"picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
@@ -24280,22 +25120,22 @@
"dev": true
},
"prebuild-install": {
- "version": "6.1.4",
- "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz",
- "integrity": "sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz",
+ "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==",
"dev": true,
+ "optional": true,
"requires": {
- "detect-libc": "^1.0.3",
+ "detect-libc": "^2.0.0",
"expand-template": "^2.0.3",
"github-from-package": "0.0.0",
"minimist": "^1.2.3",
"mkdirp-classic": "^0.5.3",
"napi-build-utils": "^1.0.1",
- "node-abi": "^2.21.0",
- "npmlog": "^4.0.1",
+ "node-abi": "^3.3.0",
"pump": "^3.0.0",
"rc": "^1.2.7",
- "simple-get": "^3.0.3",
+ "simple-get": "^4.0.0",
"tar-fs": "^2.0.0",
"tunnel-agent": "^0.6.0"
},
@@ -24305,6 +25145,7 @@
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"dev": true,
+ "optional": true,
"requires": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
@@ -24312,6 +25153,12 @@
}
}
},
+ "prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true
+ },
"prepend-http": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
@@ -24333,7 +25180,8 @@
"process": {
"version": "0.11.10",
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
- "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+ "dev": true
},
"process-nextick-args": {
"version": "2.0.1",
@@ -24361,17 +25209,6 @@
"react-is": "^16.13.1"
}
},
- "propagate": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/propagate/-/propagate-1.0.0.tgz",
- "integrity": "sha1-AMLa7t2iDofjeCs0Stuhzd1q1wk=",
- "dev": true
- },
- "psl": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
- "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
- },
"public-encrypt": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
@@ -24410,12 +25247,17 @@
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "dev": true
},
"qs": {
- "version": "6.5.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
- "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA=="
+ "version": "6.12.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz",
+ "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==",
+ "dev": true,
+ "requires": {
+ "side-channel": "^1.0.6"
+ }
},
"query-string": {
"version": "5.1.1",
@@ -24440,11 +25282,6 @@
"integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
"dev": true
},
- "querystringify": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
- "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
- },
"queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -24475,6 +25312,7 @@
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
"integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
"dev": true,
+ "optional": true,
"requires": {
"deep-extend": "^0.6.0",
"ini": "~1.3.0",
@@ -24485,8 +25323,9 @@
"strip-json-comments": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
- "dev": true
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "dev": true,
+ "optional": true
}
}
},
@@ -24508,7 +25347,7 @@
"read-pkg": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
- "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==",
"dev": true,
"requires": {
"load-json-file": "^1.0.0",
@@ -24519,7 +25358,7 @@
"path-type": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
- "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
@@ -24530,7 +25369,7 @@
"pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
"dev": true
}
}
@@ -24538,7 +25377,7 @@
"read-pkg-up": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
- "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==",
"dev": true,
"requires": {
"find-up": "^1.0.0",
@@ -24548,7 +25387,7 @@
"find-up": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==",
"dev": true,
"requires": {
"path-exists": "^2.0.0",
@@ -24558,7 +25397,7 @@
"path-exists": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==",
"dev": true,
"requires": {
"pinkie-promise": "^2.0.0"
@@ -24703,55 +25542,13 @@
},
"replace-homedir": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz",
- "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=",
- "dev": true,
- "requires": {
- "homedir-polyfill": "^1.0.1",
- "is-absolute": "^1.0.0",
- "remove-trailing-separator": "^1.1.0"
- }
- },
- "request": {
- "version": "2.88.2",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
- "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
- "requires": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.3",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- },
- "dependencies": {
- "uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
- }
- }
- },
- "request-progress": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz",
- "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=",
+ "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz",
+ "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=",
+ "dev": true,
"requires": {
- "throttleit": "^1.0.0"
+ "homedir-polyfill": "^1.0.1",
+ "is-absolute": "^1.0.0",
+ "remove-trailing-separator": "^1.1.0"
}
},
"require-directory": {
@@ -24766,24 +25563,38 @@
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
"dev": true
},
+ "require-in-the-middle": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.2.0.tgz",
+ "integrity": "sha512-3TLx5TGyAY6AOqLBoXmHkNql0HIf2RGbuMgCDT2WO/uGVAPJs6h7Kl+bN6TIZGd9bWhWPwnDnTHGtW8Iu77sdw==",
+ "requires": {
+ "debug": "^4.1.1",
+ "module-details-from-path": "^1.0.3",
+ "resolve": "^1.22.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ }
+ }
+ },
"require-main-filename": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+ "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==",
"dev": true
},
- "requires-port": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
- },
"resolve": {
- "version": "1.22.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
- "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
- "dev": true,
+ "version": "1.22.4",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz",
+ "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==",
"requires": {
- "is-core-module": "^2.8.1",
+ "is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
}
@@ -24850,9 +25661,9 @@
"dev": true
},
"rewiremock": {
- "version": "3.14.3",
- "resolved": "https://registry.npmjs.org/rewiremock/-/rewiremock-3.14.3.tgz",
- "integrity": "sha512-6BaUGfp7NtxBjisxcGN73nNiA2fS2AwhEk/9DMUqxfv5v0aDM1wpOYpj5GSArqsJi07YCfLhkD8C74LAN7+FkQ==",
+ "version": "3.14.5",
+ "resolved": "https://registry.npmjs.org/rewiremock/-/rewiremock-3.14.5.tgz",
+ "integrity": "sha512-MdPutvaUd+kKVz/lcEz6N6337s4PxRUR5vhphIp2/TJRgfXIckomIkCsIAbwB53MjiSLwi7KBMdQ9lPWE5WpYA==",
"dev": true,
"requires": {
"babel-runtime": "^6.26.0",
@@ -24925,6 +25736,11 @@
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ },
"schema-utils": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
@@ -24957,9 +25773,12 @@
}
},
"semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
},
"semver-greatest-satisfied-range": {
"version": "1.1.0",
@@ -24985,6 +25804,20 @@
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
"dev": true
},
+ "set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
+ "requires": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ }
+ },
"set-value": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
@@ -25062,14 +25895,15 @@
}
},
"side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
"dev": true,
"requires": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
}
},
"signal-exit": {
@@ -25082,33 +25916,37 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
"integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
- "dev": true
+ "dev": true,
+ "optional": true
},
"simple-get": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz",
- "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
+ "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
"dev": true,
+ "optional": true,
"requires": {
- "decompress-response": "^4.2.0",
+ "decompress-response": "^6.0.0",
"once": "^1.3.1",
"simple-concat": "^1.0.0"
},
"dependencies": {
"decompress-response": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz",
- "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
+ "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,
+ "optional": true,
"requires": {
- "mimic-response": "^2.0.0"
+ "mimic-response": "^3.1.0"
}
},
"mimic-response": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz",
- "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==",
- "dev": true
+ "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,
+ "optional": true
}
}
},
@@ -25396,9 +26234,9 @@
}
},
"spdx-correct": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
- "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+ "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
"dev": true,
"requires": {
"spdx-expression-parse": "^3.0.0",
@@ -25406,15 +26244,15 @@
}
},
"spdx-exceptions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
- "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
"dev": true
},
"spdx-expression-parse": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
- "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
"dev": true,
"requires": {
"spdx-exceptions": "^2.1.0",
@@ -25422,9 +26260,9 @@
}
},
"spdx-license-ids": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
- "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
+ "version": "3.0.13",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz",
+ "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==",
"dev": true
},
"split-string": {
@@ -25442,22 +26280,6 @@
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
"dev": true
},
- "sshpk": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
- "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
- "requires": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- }
- },
"stack-chain": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz",
@@ -25489,6 +26311,12 @@
}
}
},
+ "stoppable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz",
+ "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==",
+ "dev": true
+ },
"stream-browserify": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
@@ -25550,7 +26378,7 @@
"string-width": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
"dev": true,
"requires": {
"code-point-at": "^1.0.0",
@@ -25561,13 +26389,13 @@
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
"dev": true
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
@@ -25623,7 +26451,7 @@
"strip-bom": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
- "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==",
"dev": true,
"requires": {
"is-utf8": "^0.2.0"
@@ -25676,8 +26504,7 @@
"supports-preserve-symlinks-flag": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
},
"sver-compat": {
"version": "1.5.0",
@@ -25750,6 +26577,7 @@
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
"integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
"dev": true,
+ "optional": true,
"requires": {
"chownr": "^1.1.1",
"mkdirp-classic": "^0.5.2",
@@ -25762,6 +26590,7 @@
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
"dev": true,
+ "optional": true,
"requires": {
"buffer": "^5.5.0",
"inherits": "^2.0.4",
@@ -25773,16 +26602,18 @@
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"dev": true,
+ "optional": true,
"requires": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
},
"readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dev": true,
+ "optional": true,
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -25794,6 +26625,7 @@
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
"integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
"dev": true,
+ "optional": true,
"requires": {
"bl": "^4.0.3",
"end-of-stream": "^1.4.1",
@@ -25820,12 +26652,9 @@
}
},
"tas-client": {
- "version": "0.1.58",
- "resolved": "https://registry.npmjs.org/tas-client/-/tas-client-0.1.58.tgz",
- "integrity": "sha512-fOWii4wQXuo9Zl0oXgvjBzZWzKc5MmUR6XQWX93WU2c1SaP1plPo/zvXP8kpbZ9fvegFOHdapszYqMTRq/SRtg==",
- "requires": {
- "axios": "^0.26.1"
- }
+ "version": "0.2.33",
+ "resolved": "https://registry.npmjs.org/tas-client/-/tas-client-0.2.33.tgz",
+ "integrity": "sha512-V+uqV66BOQnWxvI6HjDnE4VkInmYZUQ4dgB7gzaDyFyFSK1i1nF/j7DpS9UbQAgV9NaF1XpcyuavnM1qOeiEIg=="
},
"terser": {
"version": "5.14.2",
@@ -25880,11 +26709,6 @@
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
"dev": true
},
- "throttleit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz",
- "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw="
- },
"through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
@@ -25965,7 +26789,7 @@
"to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
"dev": true
},
"to-object-path": {
@@ -26025,26 +26849,6 @@
"integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==",
"dev": true
},
- "tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
- "requires": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- }
- },
- "tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
- },
- "traverse": {
- "version": "0.3.9",
- "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
- "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=",
- "dev": true
- },
"trim-repeated": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
@@ -26140,15 +26944,6 @@
"picomatch": "^2.3.1"
}
},
- "semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -26313,27 +27108,34 @@
"tunnel": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
- "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="
+ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
+ "dev": true
},
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
+ "dev": true,
+ "optional": true,
"requires": {
"safe-buffer": "^5.0.1"
}
},
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
- },
"type": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/type/-/type-1.0.1.tgz",
"integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw==",
"dev": true
},
+ "type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "^1.2.1"
+ }
+ },
"type-detect": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
@@ -26347,25 +27149,14 @@
"dev": true
},
"typed-rest-client": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.5.tgz",
- "integrity": "sha512-952/Aegu3lTqUAI1anbDLbewojnF/gh8at9iy1CIrfS1h/+MtNjB1Y9z6ZF5n2kZd+97em56lZ9uu7Zz3y/pwg==",
+ "version": "1.8.11",
+ "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz",
+ "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==",
"dev": true,
"requires": {
"qs": "^6.9.1",
"tunnel": "0.0.6",
"underscore": "^1.12.1"
- },
- "dependencies": {
- "qs": {
- "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.4"
- }
- }
}
},
"typedarray": {
@@ -26440,9 +27231,9 @@
"dev": true
},
"underscore": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz",
- "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==",
+ "version": "1.13.6",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
+ "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==",
"dev": true
},
"undertaker": {
@@ -26495,11 +27286,6 @@
"through2-filter": "^3.0.0"
}
},
- "universalify": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
- "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg=="
- },
"unset-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
@@ -26545,42 +27331,27 @@
"resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
"integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw=="
},
- "unzipper": {
- "version": "0.10.11",
- "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz",
- "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==",
- "dev": true,
- "requires": {
- "big-integer": "^1.6.17",
- "binary": "~0.3.0",
- "bluebird": "~3.4.1",
- "buffer-indexof-polyfill": "~1.0.0",
- "duplexer2": "~0.1.4",
- "fstream": "^1.0.12",
- "graceful-fs": "^4.2.2",
- "listenercount": "~1.0.1",
- "readable-stream": "~2.3.6",
- "setimmediate": "~1.0.4"
- },
- "dependencies": {
- "bluebird": {
- "version": "3.4.7",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz",
- "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=",
- "dev": true
- }
- }
- },
"upath": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
"integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
"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==",
+ "dev": true,
+ "requires": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ }
+ },
"uri-js": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "dev": true,
"requires": {
"punycode": "^2.1.0"
}
@@ -26615,15 +27386,6 @@
"integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==",
"dev": true
},
- "url-parse": {
- "version": "1.5.10",
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
- "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
- "requires": {
- "querystringify": "^2.1.1",
- "requires-port": "^1.0.0"
- }
- },
"url-parse-lax": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
@@ -26685,6 +27447,15 @@
"integrity": "sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==",
"dev": true
},
+ "v8flags": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz",
+ "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==",
+ "dev": true,
+ "requires": {
+ "homedir-polyfill": "^1.0.1"
+ }
+ },
"validate-npm-package-license": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
@@ -26701,16 +27472,6 @@
"integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=",
"dev": true
},
- "verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "requires": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
"vinyl": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz",
@@ -26782,155 +27543,64 @@
"integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
"dev": true
},
- "vsce": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.7.0.tgz",
- "integrity": "sha512-CKU34wrQlbKDeJCRBkd1a8iwF9EvNxcYMg9hAUH6AxFGR6Wo2IKWwt3cJIcusHxx6XdjDHWlfAS/fJN30uvVnA==",
- "dev": true,
- "requires": {
- "azure-devops-node-api": "^11.0.1",
- "chalk": "^2.4.2",
- "cheerio": "^1.0.0-rc.9",
- "commander": "^6.1.0",
- "glob": "^7.0.6",
- "hosted-git-info": "^4.0.2",
- "keytar": "^7.7.0",
- "leven": "^3.1.0",
- "markdown-it": "^12.3.2",
- "mime": "^1.3.4",
- "minimatch": "^3.0.3",
- "parse-semver": "^1.1.1",
- "read": "^1.0.7",
- "semver": "^5.1.0",
- "tmp": "^0.2.1",
- "typed-rest-client": "^1.8.4",
- "url-join": "^4.0.1",
- "xml2js": "^0.4.23",
- "yauzl": "^2.3.1",
- "yazl": "^2.2.2"
- },
- "dependencies": {
- "commander": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
- "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
- "dev": true
- },
- "hosted-git-info": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
- "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "tmp": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
- "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
- "dev": true,
- "requires": {
- "rimraf": "^3.0.0"
- }
- }
- }
- },
- "vscode-debugadapter": {
- "version": "1.35.0",
- "resolved": "https://registry.npmjs.org/vscode-debugadapter/-/vscode-debugadapter-1.35.0.tgz",
- "integrity": "sha512-Au90Iowj6TuD5uDMaTnxOjl/9hQN0Yoky1TV1Cjjr7jPdxTQpALBRW09Y2LzkIXUVICXlAqxWL9zL8BpzI30jg==",
- "requires": {
- "mkdirp": "^0.5.1",
- "vscode-debugprotocol": "1.35.0"
- }
- },
- "vscode-debugadapter-testsupport": {
- "version": "1.35.0",
- "resolved": "https://registry.npmjs.org/vscode-debugadapter-testsupport/-/vscode-debugadapter-testsupport-1.35.0.tgz",
- "integrity": "sha512-4emLt6JOk4iKqC2aWNJupOtrK6JwYAZ6KppqvKASN6B1s063VoqI18QhUB1CeoKwNaN1LIG3VPv2xM8HKOjyDA==",
- "dev": true,
- "requires": {
- "vscode-debugprotocol": "1.35.0"
- }
- },
"vscode-debugprotocol": {
"version": "1.35.0",
"resolved": "https://registry.npmjs.org/vscode-debugprotocol/-/vscode-debugprotocol-1.35.0.tgz",
"integrity": "sha512-+OMm11R1bGYbpIJ5eQIkwoDGFF4GvBz3Ztl6/VM+/RNNb2Gjk2c0Ku+oMmfhlTmTlPCpgHBsH4JqVCbUYhu5bA=="
},
"vscode-jsonrpc": {
- "version": "8.0.2-next.1",
- "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.0.2-next.1.tgz",
- "integrity": "sha512-sbbvGSWja7NVBLHPGawtgezc8DHYJaP4qfr/AaJiyDapWcSFtHyPtm18+LnYMLTmB7bhOUW/lf5PeeuLpP6bKA=="
+ "version": "9.0.0-next.2",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.2.tgz",
+ "integrity": "sha512-meIaXAgChCHzWy45QGU8YpCNyqnZQ/sYeCj32OLDDbUYsCF7AvgpdXx3nnZn9yzr8ed0Od9bW+NGphEmXsqvIQ=="
},
"vscode-languageclient": {
- "version": "8.0.2-next.5",
- "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.0.2-next.5.tgz",
- "integrity": "sha512-g87RJLHz0XlRyk6DOTbAk4JHcj8CKggXy4JiFL7OlhETkcYzTOR8d+Qdb4GqZr37PDs1Cl21omtTNK5LyR/RQg==",
+ "version": "10.0.0-next.2",
+ "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-10.0.0-next.2.tgz",
+ "integrity": "sha512-ERKtgOkto4pHCxC2u1K3FfsYHSt8AeuZJjg1u/3TvnrCbBkMxrpn5mHWkh4m3rl6qo2Wk4m9YFgU6F7KCWQNZw==",
"requires": {
- "minimatch": "^3.0.4",
- "semver": "^7.3.5",
- "vscode-languageserver-protocol": "3.17.2-next.6"
+ "minimatch": "^9.0.3",
+ "semver": "^7.6.0",
+ "vscode-languageserver-protocol": "3.17.6-next.3"
},
"dependencies": {
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"requires": {
- "brace-expansion": "^1.1.7"
+ "balanced-match": "^1.0.0"
}
},
- "semver": {
- "version": "7.3.7",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
- "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+ "minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
"requires": {
- "lru-cache": "^6.0.0"
+ "brace-expansion": "^2.0.1"
}
}
}
},
- "vscode-languageserver": {
- "version": "8.0.2-next.5",
- "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-8.0.2-next.5.tgz",
- "integrity": "sha512-2ZDb7O/4atS9mJKufPPz637z+51kCyZfgnobFW5eSrUdS3c0UB/nMS4Ng1EavYTX84GVaVMKCrmP0f2ceLmR0A==",
- "requires": {
- "vscode-languageserver-protocol": "3.17.2-next.6"
- }
- },
"vscode-languageserver-protocol": {
- "version": "3.17.2-next.6",
- "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.2-next.6.tgz",
- "integrity": "sha512-WtsebNOOkWyNn4oFYoAMPC8Q/ZDoJ/K7Ja53OzTixiitvrl/RpXZETrtzH79R8P5kqCyx6VFBPb6KQILJfkDkA==",
+ "version": "3.17.6-next.3",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.3.tgz",
+ "integrity": "sha512-H8ATH5SAvc3JzttS+AL6g681PiBOZM/l34WP2JZk4akY3y7NqTP+f9cJ+MhrVBbD3aDS8bdAKewZgbFLW6M8Pg==",
"requires": {
- "vscode-jsonrpc": "8.0.2-next.1",
- "vscode-languageserver-types": "3.17.2-next.2"
- },
- "dependencies": {
- "vscode-languageserver-types": {
- "version": "3.17.2-next.2",
- "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2-next.2.tgz",
- "integrity": "sha512-TiAkLABgqkVWdAlC3XlOfdhdjIAdVU4YntPUm9kKGbXr+MGwpVnKz2KZMNBcvG0CFx8Hi8qliL0iq+ndPB720w=="
- }
+ "vscode-jsonrpc": "9.0.0-next.2",
+ "vscode-languageserver-types": "3.17.6-next.3"
}
},
+ "vscode-languageserver-types": {
+ "version": "3.17.6-next.3",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.3.tgz",
+ "integrity": "sha512-l5kNFXFRQGuzriXpuBqFpRmkf6f6A4VoU3h95OsVkqIOoi1k7KbwSo600cIdsKSJWrPg/+vX+QMPcMw1oI7ItA=="
+ },
"vscode-tas-client": {
- "version": "0.1.63",
- "resolved": "https://registry.npmjs.org/vscode-tas-client/-/vscode-tas-client-0.1.63.tgz",
- "integrity": "sha512-TY5TPyibzi6rNmuUB7eRVqpzLzNfQYrrIl/0/F8ukrrbzOrKVvS31hM3urE+tbaVrnT+TMYXL16GhX57vEowhA==",
+ "version": "0.1.84",
+ "resolved": "https://registry.npmjs.org/vscode-tas-client/-/vscode-tas-client-0.1.84.tgz",
+ "integrity": "sha512-rUTrUopV+70hvx1hW5ebdw1nd6djxubkLvVxjGdyD/r5v/wcVF41LIfiAtbm5qLZDtQdsMH1IaCuDoluoIa88w==",
"requires": {
- "tas-client": "0.1.58"
+ "tas-client": "0.2.33"
}
},
"vscode-uri": {
@@ -26948,11 +27618,6 @@
"graceful-fs": "^4.1.2"
}
},
- "webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
- },
"webpack": {
"version": "5.76.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz",
@@ -27137,15 +27802,6 @@
"integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
"dev": true
},
- "whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "requires": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
"which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -27187,7 +27843,7 @@
"which-module": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
- "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
+ "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==",
"dev": true
},
"which-typed-array": {
@@ -27204,15 +27860,6 @@
"is-typed-array": "^1.1.7"
}
},
- "wide-align": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
- "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
- "dev": true,
- "requires": {
- "string-width": "^1.0.2 || 2"
- }
- },
"wildcard": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz",
@@ -27239,11 +27886,15 @@
"wipe-node-cache": "^2.1.0"
}
},
- "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
+ "worker-loader": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/worker-loader/-/worker-loader-3.0.8.tgz",
+ "integrity": "sha512-XQyQkIFeRVC7f7uRhFdNMe/iJOdO6zxAaR3EWbDp45v3mDhrTi+++oswKNxShUNjPC/1xUp5DB29YKLhFo129g==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0"
+ }
},
"workerpool": {
"version": "6.2.0",
@@ -27254,7 +27905,7 @@
"wrap-ansi": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==",
"dev": true,
"requires": {
"string-width": "^1.0.1",
@@ -27264,13 +27915,13 @@
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
"dev": true
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
@@ -27309,19 +27960,12 @@
"dev": true
},
"xml2js": {
- "version": "0.4.23",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
- "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz",
+ "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
"requires": {
"sax": ">=0.6.0",
"xmlbuilder": "~11.0.0"
- },
- "dependencies": {
- "sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
- }
}
},
"xmlbuilder": {
diff --git a/package.json b/package.json
index cb06f5e6a519..2ef08a3511aa 100644
--- a/package.json
+++ b/package.json
@@ -1,8 +1,8 @@
{
"name": "python",
"displayName": "Python",
- "description": "IntelliSense (Pylance), Linting, Debugging (multi-threaded, remote), Jupyter Notebooks, code formatting, refactoring, unit tests, and more.",
- "version": "2023.5.0-dev",
+ "description": "Python language support with extension access points for IntelliSense (Pylance), Debugging (Python Debugger), linting, formatting, refactoring, unit tests, and more.",
+ "version": "2024.7.0-dev",
"featureFlags": {
"usingNewInterpreterStorage": true
},
@@ -20,8 +20,12 @@
"enabledApiProposals": [
"contribEditorContentMenu",
"quickPickSortByLabel",
- "envShellEvent",
- "testObserver"
+ "testObserver",
+ "quickPickItemTooltip",
+ "terminalDataWriteEvent",
+ "terminalExecuteCommandEvent",
+ "contribIssueReporter",
+ "terminalShellIntegration"
],
"author": {
"name": "Microsoft Corporation"
@@ -42,8 +46,9 @@
"theme": "dark"
},
"engines": {
- "vscode": "^1.77.0-20230309"
+ "vscode": "^1.89.0-20240415"
},
+ "enableTelemetry": false,
"keywords": [
"python",
"django",
@@ -53,21 +58,14 @@
"categories": [
"Programming Languages",
"Debuggers",
- "Linters",
- "Formatters",
"Other",
"Data Science",
- "Machine Learning",
- "Notebooks"
+ "Machine Learning"
],
"activationEvents": [
"onDebugInitialConfigurations",
"onLanguage:python",
- "onDebugDynamicConfigurations:python",
"onDebugResolve:python",
- "onWalkthrough:pythonWelcome",
- "onWalkthrough:pythonWelcomeWithDS",
- "onWalkthrough:pythonDataScienceWelcome",
"workspaceContains:mspythonconfig.json",
"workspaceContains:pyproject.toml",
"workspaceContains:Pipfile",
@@ -83,24 +81,33 @@
"walkthroughs": [
{
"id": "pythonWelcome",
- "title": "Get Started with Python Development",
- "description": "Your first steps to set up a Python project with all the powerful tools and features that the Python extension has to offer!",
+ "title": "%walkthrough.pythonWelcome.title%",
+ "description": "%walkthrough.pythonWelcome.description%",
"when": "workspacePlatform != webworker",
"steps": [
+ {
+ "id": "python.createPythonFolder",
+ "title": "%walkthrough.step.python.createPythonFolder.title%",
+ "description": "%walkthrough.step.python.createPythonFolder.description%",
+ "media": {
+ "svg": "resources/walkthrough/open-folder.svg",
+ "altText": "%walkthrough.step.python.createPythonFile.altText%"
+ },
+ "when": "workspaceFolderCount = 0"
+ },
{
"id": "python.createPythonFile",
- "title": "Create a Python file",
- "description": "[Open](command:toSide:workbench.action.files.openFile) or [create](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22python%22%7D) a Python file - make sure to save it as \".py\".\n[Create Python File](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22python%22%7D)",
+ "title": "%walkthrough.step.python.createPythonFile.title%",
+ "description": "%walkthrough.step.python.createPythonFile.description%",
"media": {
"svg": "resources/walkthrough/open-folder.svg",
- "altText": "Open a Python file or a folder with a Python project."
- },
- "when": ""
+ "altText": "%walkthrough.step.python.createPythonFile.altText%"
+ }
},
{
"id": "python.installPythonWin8",
- "title": "Install Python",
- "description": "The Python Extension requires Python to be installed. Install Python [from python.org](https://www.python.org/downloads).\n\n[Install Python](https://www.python.org/downloads)\n",
+ "title": "%walkthrough.step.python.installPythonWin8.title%",
+ "description": "%walkthrough.step.python.installPythonWin8.description%",
"media": {
"markdown": "resources/walkthrough/install-python-windows-8.md"
},
@@ -108,8 +115,8 @@
},
{
"id": "python.installPythonMac",
- "title": "Install Python",
- "description": "The Python Extension requires Python to be installed. Install Python 3 through the terminal.\n[Install Python via Brew](command:python.installPythonOnMac)\n",
+ "title": "%walkthrough.step.python.installPythonMac.title%",
+ "description": "%walkthrough.step.python.installPythonMac.description%",
"media": {
"markdown": "resources/walkthrough/install-python-macos.md"
},
@@ -118,78 +125,65 @@
},
{
"id": "python.installPythonLinux",
- "title": "Install Python",
- "description": "The Python Extension requires Python to be installed. Install Python 3 through the terminal.\n[Install Python via terminal](command:python.installPythonOnLinux)\n",
+ "title": "%walkthrough.step.python.installPythonLinux.title%",
+ "description": "%walkthrough.step.python.installPythonLinux.description%",
"media": {
"markdown": "resources/walkthrough/install-python-linux.md"
},
"when": "workspacePlatform == linux && showInstallPythonTile",
"command": "workbench.action.terminal.new"
},
- {
- "id": "python.selectInterpreter",
- "title": "Select a Python Interpreter",
- "description": "Choose which Python interpreter/environment you want to use for your Python project.\n[Select Python Interpreter](command:python.setInterpreter)\n**Tip**: Run the ``Python: Select Interpreter`` command in the [Command Palette](command:workbench.action.showCommands).",
- "media": {
- "svg": "resources/walkthrough/python-interpreter.svg",
- "altText": "Selecting a python interpreter from the status bar"
- },
- "when": "workspaceFolderCount == 0"
- },
{
"id": "python.createEnvironment",
- "title": "Create a Python Environment ",
- "description": "Create an environment for your Python project.\n[Create Environment](command:python.createEnvironment)\n**Tip**: Run the ``Python: Create Environment`` command in the [Command Palette](command:workbench.action.showCommands).\n 🔍 Check out our [docs](https://aka.ms/pythonenvs) to learn more.",
+ "title": "%walkthrough.step.python.createEnvironment.title%",
+ "description": "%walkthrough.step.python.createEnvironment.description%",
"media": {
"svg": "resources/walkthrough/create-environment.svg",
- "altText": "Creating a Python environment from the Command Palette"
- },
- "when": "workspaceFolderCount > 0"
+ "altText": "%walkthrough.step.python.createEnvironment.altText%"
+ }
},
{
"id": "python.runAndDebug",
- "title": "Run and debug your Python file",
- "description": "Open your Python file and click on the play button on the top right of the editor, or press F5 when on the file and select \"Python File\" to run with the debugger. \n \n[Learn more](https://code.visualstudio.com/docs/python/python-tutorial#_run-hello-world)",
+ "title": "%walkthrough.step.python.runAndDebug.title%",
+ "description": "%walkthrough.step.python.runAndDebug.description%",
"media": {
"svg": "resources/walkthrough/rundebug2.svg",
- "altText": "How to run and debug in VS Code with F5 or the play button on the top right."
- },
- "when": ""
+ "altText": "%walkthrough.step.python.runAndDebug.altText%"
+ }
},
{
"id": "python.learnMoreWithDS",
- "title": "Explore more resources",
- "description": "🎨 Explore all the features the Python extension has to offer by looking for \"Python\" in the [Command Palette](command:workbench.action.showCommands). \n 📈 Learn more about getting started with [data science](command:workbench.action.openWalkthrough?%7B%22category%22%3A%22ms-python.python%23pythonDataScienceWelcome%22%2C%22step%22%3A%22ms-python.python%23python.createNewNotebook%22%7D) in Python. \n ✨ Take a look at our [Release Notes](https://aka.ms/AA8dxtb) to learn more about the latest features. \n \n[Learn More](https://aka.ms/AA8dqti)",
+ "title": "%walkthrough.step.python.learnMoreWithDS.title%",
+ "description": "%walkthrough.step.python.learnMoreWithDS.description%",
"media": {
- "altText": "Image representing our documentation page and mailing list resources.",
+ "altText": "%walkthrough.step.python.learnMoreWithDS.altText%",
"svg": "resources/walkthrough/learnmore.svg"
- },
- "when": ""
+ }
}
]
},
{
"id": "pythonDataScienceWelcome",
- "title": "Get Started with Python for Data Science",
- "description": "Your first steps to getting started with a Data Science project with Python!",
+ "title": "%walkthrough.pythonDataScienceWelcome.title%",
+ "description": "%walkthrough.pythonDataScienceWelcome.description%",
"when": "false",
"steps": [
{
"id": "python.installJupyterExt",
- "title": "Install Jupyter extension",
- "description": "If you haven't already, install the [Jupyter extension](command:workbench.extensions.search?\"ms-toolsai.jupyter\") to take full advantage of notebooks experiences in VS Code!\n \n[Search Jupyter extension](command:workbench.extensions.search?\"ms-toolsai.jupyter\")",
+ "title": "%walkthrough.step.python.installJupyterExt.title%",
+ "description": "%walkthrough.step.python.installJupyterExt.description%",
"media": {
"svg": "resources/walkthrough/data-science.svg",
- "altText": "Creating a new Jupyter notebook"
+ "altText": "%walkthrough.step.python.installJupyterExt.altText%"
}
},
{
"id": "python.createNewNotebook",
- "title": "Create or open a Jupyter Notebook",
- "description": "Right click in the file explorer and create a new file with an .ipynb extension. Or, open the [Command Palette](command:workbench.action.showCommands) and run the command \n``Jupyter: Create New Blank Notebook``.\n[Create new Jupyter Notebook](command:toSide:jupyter.createnewnotebook)\n If you have an existing project, you can also [open a folder](command:workbench.action.files.openFolder) and/or clone a project from GitHub: [clone a Git repository](command:git.clone).",
+ "title": "%walkthrough.step.python.createNewNotebook.title%",
+ "description": "%walkthrough.step.python.createNewNotebook.description%",
"media": {
"svg": "resources/walkthrough/create-notebook.svg",
- "altText": "Creating a new Jupyter notebook"
+ "altText": "%walkthrough.step.python.createNewNotebook.altText%"
},
"completionEvents": [
"onCommand:jupyter.createnewnotebook",
@@ -199,11 +193,11 @@
},
{
"id": "python.openInteractiveWindow",
- "title": "Open the Python Interactive Window",
- "description": "The Python Interactive Window is a Python shell where you can execute and view the results of your Python code. You can create cells on a Python file by typing ``#%%``.\n \nTo open the interactive window anytime, open the [Command Palette](command:workbench.action.showCommands) and run the command \n``Jupyter: Create Interactive Window``.\n[Open Interactive Window](command:jupyter.createnewinteractive)",
+ "title": "%walkthrough.step.python.openInteractiveWindow.title%",
+ "description": "%walkthrough.step.python.openInteractiveWindow.description%",
"media": {
"svg": "resources/walkthrough/interactive-window.svg",
- "altText": "Opening python interactive window"
+ "altText": "%walkthrough.step.python.openInteractiveWindow.altText%"
},
"completionEvents": [
"onCommand:jupyter.createnewinteractive"
@@ -211,11 +205,11 @@
},
{
"id": "python.dataScienceLearnMore",
- "title": "Find out more!",
- "description": "📒 Take a look into the [Jupyter extension](command:workbench.extensions.search?\"ms-toolsai.jupyter\") features, by looking for \"Jupyter\" in the [Command Palette](command:workbench.action.showCommands). \n 🏃🏻 Find out more features in our [Tutorials](https://aka.ms/AAdjzpd). \n[Learn more](https://aka.ms/AAdar6q)",
+ "title": "%walkthrough.step.python.dataScienceLearnMore.title%",
+ "description": "%walkthrough.step.python.dataScienceLearnMore.description%",
"media": {
"svg": "resources/walkthrough/learnmore.svg",
- "altText": "Image representing our documentation page and mailing list resources."
+ "altText": "%walkthrough.step.python.dataScienceLearnMore.altText%"
}
}
]
@@ -277,8 +271,8 @@
},
{
"category": "Python",
- "command": "python.enableLinting",
- "title": "%python.command.python.enableLinting.title%"
+ "command": "python.createEnvironment-button",
+ "title": "%python.command.python.createEnvironment.title%"
},
{
"category": "Python",
@@ -298,9 +292,9 @@
},
{
"category": "Python",
- "command": "python.debugInTerminal",
- "icon": "$(debug-alt)",
- "title": "%python.command.python.debugInTerminal.title%"
+ "command": "python.execInDedicatedTerminal",
+ "icon": "$(play)",
+ "title": "%python.command.python.execInDedicatedTerminal.title%"
},
{
"category": "Python",
@@ -312,6 +306,11 @@
"command": "python.execSelectionInTerminal",
"title": "%python.command.python.execSelectionInTerminal.title%"
},
+ {
+ "category": "Python",
+ "command": "python.execInREPL",
+ "title": "%python.command.python.execInREPL.title%"
+ },
{
"category": "Python",
"command": "python.launchTensorBoard",
@@ -335,26 +334,11 @@
"icon": "$(run-errors)",
"title": "%python.command.testing.rerunFailedTests.title%"
},
- {
- "category": "Python",
- "command": "python.runLinting",
- "title": "%python.command.python.runLinting.title%"
- },
{
"category": "Python",
"command": "python.setInterpreter",
"title": "%python.command.python.setInterpreter.title%"
},
- {
- "category": "Python",
- "command": "python.setLinter",
- "title": "%python.command.python.setLinter.title%"
- },
- {
- "category": "Python Refactor",
- "command": "python.sortImports",
- "title": "%python.command.python.sortImports.title%"
- },
{
"category": "Python",
"command": "python.startREPL",
@@ -374,6 +358,11 @@
"light": "resources/light/repl.svg"
},
"title": "%python.command.python.viewOutput.title%"
+ },
+ {
+ "category": "Python",
+ "command": "python.installJupyter",
+ "title": "%python.command.python.installJupyter.title%"
}
],
"configuration": {
@@ -391,6 +380,26 @@
"type": "array",
"uniqueItems": true
},
+ "python.createEnvironment.contentButton": {
+ "default": "hide",
+ "markdownDescription": "%python.createEnvironment.contentButton.description%",
+ "scope": "machine-overridable",
+ "type": "string",
+ "enum": [
+ "show",
+ "hide"
+ ]
+ },
+ "python.createEnvironment.trigger": {
+ "default": "prompt",
+ "markdownDescription": "%python.createEnvironment.trigger.description%",
+ "scope": "machine-overridable",
+ "type": "string",
+ "enum": [
+ "off",
+ "prompt"
+ ]
+ },
"python.condaPath": {
"default": "",
"description": "%python.condaPath.description%",
@@ -418,7 +427,7 @@
"python.experiments.enabled": {
"default": true,
"description": "%python.experiments.enabled.description%",
- "scope": "machine",
+ "scope": "window",
"type": "boolean"
},
"python.experiments.optInto": {
@@ -429,16 +438,24 @@
"All",
"pythonSurveyNotification",
"pythonPromptNewToolsExt",
- "pythonTerminalEnvVarActivation"
+ "pythonTerminalEnvVarActivation",
+ "pythonDiscoveryUsingWorkers",
+ "pythonTestAdapter",
+ "pythonREPLSmartSend",
+ "pythonRecommendTensorboardExt"
],
"enumDescriptions": [
"%python.experiments.All.description%",
"%python.experiments.pythonSurveyNotification.description%",
"%python.experiments.pythonPromptNewToolsExt.description%",
- "%python.experiments.pythonTerminalEnvVarActivation.description%"
+ "%python.experiments.pythonTerminalEnvVarActivation.description%",
+ "%python.experiments.pythonDiscoveryUsingWorkers.description%",
+ "%python.experiments.pythonTestAdapter.description%",
+ "%python.experiments.pythonREPLSmartSend.description%",
+ "%python.experiments.pythonRecommendTensorboardExt.description%"
]
},
- "scope": "machine",
+ "scope": "window",
"type": "array",
"uniqueItems": true
},
@@ -450,76 +467,25 @@
"All",
"pythonSurveyNotification",
"pythonPromptNewToolsExt",
- "pythonTerminalEnvVarActivation"
+ "pythonTerminalEnvVarActivation",
+ "pythonDiscoveryUsingWorkers",
+ "pythonTestAdapter",
+ "pythonREPLSmartSend"
],
"enumDescriptions": [
"%python.experiments.All.description%",
"%python.experiments.pythonSurveyNotification.description%",
"%python.experiments.pythonPromptNewToolsExt.description%",
- "%python.experiments.pythonTerminalEnvVarActivation.description%"
+ "%python.experiments.pythonTerminalEnvVarActivation.description%",
+ "%python.experiments.pythonDiscoveryUsingWorkers.description%",
+ "%python.experiments.pythonTestAdapter.description%",
+ "%python.experiments.pythonREPLSmartSend.description%"
]
},
- "scope": "machine",
+ "scope": "window",
"type": "array",
"uniqueItems": true
},
- "python.formatting.autopep8Args": {
- "default": [],
- "description": "%python.formatting.autopep8Args.description%",
- "items": {
- "type": "string"
- },
- "scope": "resource",
- "type": "array"
- },
- "python.formatting.autopep8Path": {
- "default": "autopep8",
- "description": "%python.formatting.autopep8Path.description%",
- "scope": "machine-overridable",
- "type": "string"
- },
- "python.formatting.blackArgs": {
- "default": [],
- "description": "%python.formatting.blackArgs.description%",
- "items": {
- "type": "string"
- },
- "scope": "resource",
- "type": "array"
- },
- "python.formatting.blackPath": {
- "default": "black",
- "description": "%python.formatting.blackPath.description%",
- "scope": "machine-overridable",
- "type": "string"
- },
- "python.formatting.provider": {
- "default": "autopep8",
- "description": "%python.formatting.provider.description%",
- "enum": [
- "autopep8",
- "black",
- "none",
- "yapf"
- ],
- "scope": "resource",
- "type": "string"
- },
- "python.formatting.yapfArgs": {
- "default": [],
- "description": "%python.formatting.yapfArgs.description%",
- "items": {
- "type": "string"
- },
- "scope": "resource",
- "type": "array"
- },
- "python.formatting.yapfPath": {
- "default": "yapf",
- "description": "%python.formatting.yapfPath.description%",
- "scope": "machine-overridable",
- "type": "string"
- },
"python.globalModuleInstallation": {
"default": false,
"description": "%python.globalModuleInstallation.description%",
@@ -544,72 +510,6 @@
"scope": "window",
"type": "string"
},
- "python.linting.banditArgs": {
- "default": [],
- "description": "%python.linting.banditArgs.description%",
- "items": {
- "type": "string"
- },
- "scope": "resource",
- "type": "array"
- },
- "python.linting.banditEnabled": {
- "default": false,
- "description": "%python.linting.banditEnabled.description%",
- "scope": "resource",
- "type": "boolean"
- },
- "python.linting.banditPath": {
- "default": "bandit",
- "description": "%python.linting.banditPath.description%",
- "scope": "machine-overridable",
- "type": "string"
- },
- "python.linting.cwd": {
- "default": null,
- "description": "%python.linting.cwd.description%",
- "scope": "resource",
- "type": "string"
- },
- "python.linting.enabled": {
- "default": true,
- "description": "%python.linting.enabled.description%",
- "scope": "resource",
- "type": "boolean"
- },
- "python.linting.flake8Args": {
- "default": [],
- "description": "%python.linting.flake8Args.description%",
- "items": {
- "type": "string"
- },
- "scope": "resource",
- "type": "array"
- },
- "python.linting.flake8CategorySeverity.E": {
- "default": "Error",
- "description": "%python.linting.flake8CategorySeverity.E.description%",
- "enum": [
- "Error",
- "Hint",
- "Information",
- "Warning"
- ],
- "scope": "resource",
- "type": "string"
- },
- "python.linting.flake8CategorySeverity.F": {
- "default": "Error",
- "description": "%python.linting.flake8CategorySeverity.F.description%",
- "enum": [
- "Error",
- "Hint",
- "Information",
- "Warning"
- ],
- "scope": "resource",
- "type": "string"
- },
"python.interpreter.infoVisibility": {
"default": "onPythonRelated",
"description": "%python.interpreter.infoVisibility.description%",
@@ -626,261 +526,23 @@
"scope": "machine",
"type": "string"
},
- "python.linting.flake8CategorySeverity.W": {
- "default": "Warning",
- "description": "%python.linting.flake8CategorySeverity.W.description%",
- "enum": [
- "Error",
- "Hint",
- "Information",
- "Warning"
- ],
- "scope": "resource",
- "type": "string"
- },
- "python.linting.flake8Enabled": {
- "default": false,
- "description": "%python.linting.flake8Enabled.description%",
- "scope": "resource",
- "type": "boolean"
- },
- "python.linting.flake8Path": {
- "default": "flake8",
- "description": "%python.linting.flake8Path.description%",
- "scope": "machine-overridable",
- "type": "string"
- },
- "python.linting.ignorePatterns": {
- "default": [
- "**/site-packages/**/*.py",
- ".vscode/*.py"
- ],
- "description": "%python.linting.ignorePatterns.description%",
- "items": {
- "type": "string"
- },
- "scope": "resource",
- "type": "array",
- "uniqueItems": true
- },
- "python.linting.lintOnSave": {
- "default": true,
- "description": "%python.linting.lintOnSave.description%",
- "scope": "resource",
- "type": "boolean"
- },
- "python.linting.maxNumberOfProblems": {
- "default": 100,
- "description": "%python.linting.maxNumberOfProblems.description%",
- "scope": "resource",
- "type": "number"
- },
- "python.linting.mypyArgs": {
- "default": [
- "--follow-imports=silent",
- "--ignore-missing-imports",
- "--show-column-numbers",
- "--no-pretty"
- ],
- "description": "%python.linting.mypyArgs.description%",
- "items": {
- "type": "string"
- },
- "scope": "resource",
- "type": "array"
- },
- "python.linting.mypyCategorySeverity.error": {
- "default": "Error",
- "description": "%python.linting.mypyCategorySeverity.error.description%",
- "enum": [
- "Error",
- "Hint",
- "Information",
- "Warning"
- ],
- "scope": "resource",
- "type": "string"
- },
- "python.linting.mypyCategorySeverity.note": {
- "default": "Information",
- "description": "%python.linting.mypyCategorySeverity.note.description%.",
- "enum": [
- "Error",
- "Hint",
- "Information",
- "Warning"
- ],
- "scope": "resource",
- "type": "string"
- },
- "python.linting.mypyEnabled": {
- "default": false,
- "description": "%python.linting.mypyEnabled.description%",
- "scope": "resource",
- "type": "boolean"
- },
- "python.linting.mypyPath": {
- "default": "mypy",
- "description": "%python.linting.mypyPath.description%",
- "scope": "machine-overridable",
- "type": "string"
- },
- "python.linting.prospectorArgs": {
- "default": [],
- "description": "%python.linting.prospectorArgs.description%",
- "items": {
- "type": "string"
- },
- "scope": "resource",
- "type": "array"
- },
- "python.linting.prospectorEnabled": {
- "default": false,
- "description": "%python.linting.prospectorEnabled.description%",
- "scope": "resource",
- "type": "boolean"
- },
- "python.linting.prospectorPath": {
- "default": "prospector",
- "description": "%python.linting.prospectorPath.description%",
- "scope": "machine-overridable",
- "type": "string"
- },
- "python.linting.pycodestyleArgs": {
- "default": [],
- "description": "%python.linting.pycodestyleArgs.description%",
- "items": {
- "type": "string"
- },
- "scope": "resource",
- "type": "array"
- },
- "python.linting.pycodestyleCategorySeverity.E": {
- "default": "Error",
- "description": "%python.linting.pycodestyleCategorySeverity.E.description%",
- "enum": [
- "Error",
- "Hint",
- "Information",
- "Warning"
- ],
- "scope": "resource",
- "type": "string"
- },
- "python.linting.pycodestyleCategorySeverity.W": {
- "default": "Warning",
- "description": "%python.linting.pycodestyleCategorySeverity.W.description%",
- "enum": [
- "Error",
- "Hint",
- "Information",
- "Warning"
- ],
- "scope": "resource",
- "type": "string"
- },
- "python.linting.pycodestyleEnabled": {
- "default": false,
- "description": "%python.linting.pycodestyleEnabled.description%",
- "scope": "resource",
- "type": "boolean"
- },
- "python.linting.pycodestylePath": {
- "default": "pycodestyle",
- "description": "%python.linting.pycodestylePath.description%",
- "scope": "machine-overridable",
- "type": "string"
- },
- "python.linting.pydocstyleArgs": {
- "default": [],
- "description": "%python.linting.pydocstyleArgs.description%",
- "items": {
- "type": "string"
- },
- "scope": "resource",
- "type": "array"
- },
- "python.linting.pydocstyleEnabled": {
- "default": false,
- "description": "%python.linting.pydocstyleEnabled.description%",
- "scope": "resource",
- "type": "boolean"
- },
- "python.linting.pydocstylePath": {
- "default": "pydocstyle",
- "description": "%python.linting.pydocstylePath.description%",
- "scope": "machine-overridable",
- "type": "string"
- },
- "python.linting.pylamaArgs": {
- "default": [],
- "description": "%python.linting.pylamaArgs.description%",
- "items": {
- "type": "string"
- },
- "scope": "resource",
- "type": "array"
- },
- "python.linting.pylamaEnabled": {
- "default": false,
- "description": "%python.linting.pylamaEnabled.description%",
- "scope": "resource",
- "type": "boolean"
- },
- "python.linting.pylamaPath": {
- "default": "pylama",
- "description": "%python.linting.pylamaPath.description%",
- "scope": "machine-overridable",
- "type": "string"
- },
- "python.linting.pylintArgs": {
- "default": [],
- "description": "%python.linting.pylintArgs.description%",
- "items": {
- "type": "string"
- },
- "scope": "resource",
- "type": "array"
- },
- "python.linting.pylintCategorySeverity.convention": {
- "default": "Information",
- "description": "%python.linting.pylintCategorySeverity.convention.description%",
- "enum": [
- "Error",
- "Hint",
- "Information",
- "Warning"
- ],
- "scope": "resource",
- "type": "string"
- },
- "python.linting.pylintCategorySeverity.error": {
- "default": "Error",
- "description": "%python.linting.pylintCategorySeverity.error.description%",
- "enum": [
- "Error",
- "Hint",
- "Information",
- "Warning"
- ],
- "scope": "resource",
- "type": "string"
- },
- "python.linting.pylintCategorySeverity.fatal": {
- "default": "Error",
- "description": "%python.linting.pylintCategorySeverity.fatal.description%",
+ "python.logging.level": {
+ "default": "error",
+ "deprecationMessage": "%python.logging.level.deprecation%",
+ "description": "%python.logging.level.description%",
"enum": [
- "Error",
- "Hint",
- "Information",
- "Warning"
+ "debug",
+ "error",
+ "info",
+ "off",
+ "warn"
],
- "scope": "resource",
+ "scope": "machine",
"type": "string"
},
- "python.linting.pylintCategorySeverity.refactor": {
+ "python.missingPackage.severity": {
"default": "Hint",
- "description": "%python.linting.pylintCategorySeverity.refactor.description%",
+ "description": "%python.missingPackage.severity.description%",
"enum": [
"Error",
"Hint",
@@ -888,41 +550,20 @@
"Warning"
],
"scope": "resource",
- "type": "string"
+ "type": "string",
+ "tags": [
+ "experimental"
+ ]
},
- "python.linting.pylintCategorySeverity.warning": {
- "default": "Warning",
- "description": "%python.linting.pylintCategorySeverity.warning.description%",
+ "python.locator": {
+ "default": "js",
+ "description": "%python.locator.description%",
"enum": [
- "Error",
- "Hint",
- "Information",
- "Warning"
+ "js",
+ "native"
],
- "scope": "resource",
- "type": "string"
- },
- "python.linting.pylintEnabled": {
- "default": false,
- "description": "%python.linting.pylintEnabled.description%",
- "scope": "resource",
- "type": "boolean"
- },
- "python.linting.pylintPath": {
- "default": "pylint",
- "description": "%python.linting.pylintPath.description%",
- "scope": "machine-overridable",
- "type": "string"
- },
- "python.logging.level": {
- "default": "error",
- "description": "%python.logging.level.description%",
- "enum": [
- "debug",
- "error",
- "info",
- "off",
- "warn"
+ "tags": [
+ "experimental"
],
"scope": "machine",
"type": "string"
@@ -939,28 +580,13 @@
"scope": "machine-overridable",
"type": "string"
},
- "python.sortImports.args": {
- "default": [],
- "description": "%python.sortImports.args.description%",
- "items": {
- "type": "string"
- },
- "scope": "resource",
- "type": "array",
- "deprecationMessage": "%python.sortImports.args.deprecationMessage%"
- },
- "python.sortImports.path": {
- "default": "",
- "description": "%python.sortImports.path.description%",
- "scope": "machine-overridable",
- "type": "string",
- "deprecationMessage": "%python.sortImports.path.deprecationMessage%"
- },
"python.tensorBoard.logDirectory": {
"default": "",
"description": "%python.tensorBoard.logDirectory.description%",
"scope": "resource",
- "type": "string"
+ "type": "string",
+ "markdownDeprecationMessage": "%python.tensorBoard.logDirectory.markdownDeprecationMessage%",
+ "deprecationMessage": "%python.tensorBoard.logDirectory.deprecationMessage%"
},
"python.terminal.activateEnvInCurrentTerminal": {
"default": false,
@@ -992,6 +618,21 @@
"scope": "resource",
"type": "array"
},
+ "python.REPL.enableREPLSmartSend": {
+ "default": true,
+ "description": "%python.EnableREPLSmartSend.description%",
+ "scope": "resource",
+ "type": "boolean"
+ },
+ "python.REPL.sendToNativeREPL": {
+ "default": false,
+ "description": "%python.REPL.sendToNativeREPL.description%",
+ "scope": "resource",
+ "type": "boolean",
+ "tags": [
+ "experimental"
+ ]
+ },
"python.testing.autoTestDiscoverOnSaveEnabled": {
"default": true,
"description": "%python.testing.autoTestDiscoverOnSaveEnabled.description%",
@@ -1272,6 +913,10 @@
"internalConsole"
]
},
+ "consoleTitle": {
+ "default": "Python Debug Console",
+ "description": "Display name of the debug console or terminal"
+ },
"cwd": {
"default": "${workspaceFolder}",
"description": "Absolute path to the working directory of the program being debugged. Default is the root directory of the file (leave empty).",
@@ -1429,6 +1074,7 @@
}
}
},
+ "deprecated": "%python.debugger.deprecatedMessage%",
"configurationSnippets": [],
"label": "Python",
"languages": [
@@ -1438,7 +1084,8 @@
"variables": {
"pickProcess": "python.pickLocalProcess"
},
- "when": "!virtualWorkspace && shellExecutionSupported"
+ "when": "!virtualWorkspace && shellExecutionSupported",
+ "hiddenWhen": "true"
}
],
"grammars": [
@@ -1466,7 +1113,22 @@
{
"command": "python.execSelectionInTerminal",
"key": "shift+enter",
- "when": "editorTextFocus && editorLangId == python && !findInputFocussed && !replaceInputFocussed && !jupyter.ownsSelection && !notebookEditorFocused"
+ "when": "!config.python.REPL.sendToNativeREPL && editorTextFocus && editorLangId == python && !findInputFocussed && !replaceInputFocussed && !jupyter.ownsSelection && !notebookEditorFocused && activeEditor != 'workbench.editor.interactive'"
+ },
+ {
+ "command": "python.execInREPL",
+ "key": "shift+enter",
+ "when": "config.python.REPL.sendToNativeREPL && activeEditor != 'workbench.editor.interactive'"
+ },
+ {
+ "command": "python.execREPLShiftEnter",
+ "key": "shift+enter",
+ "when": "activeEditor == 'workbench.editor.interactive' && config.interactiveWindow.executeWithShiftEnter"
+ },
+ {
+ "command": "python.execInREPLEnter",
+ "key": "enter",
+ "when": "!config.interactiveWindow.executeWithShiftEnter && activeEditor == 'workbench.editor.interactive'"
},
{
"command": "python.refreshTensorBoard",
@@ -1493,10 +1155,8 @@
],
"configuration": "./languages/pip-requirements.json",
"filenamePatterns": [
- "**/*-requirements.{txt, in}",
- "**/*-constraints.txt",
- "**/requirements-*.{txt, in}",
- "**/constraints-*.txt",
+ "**/*requirements*.{txt, in}",
+ "**/*constraints*.txt",
"**/requirements/*.{txt,in}",
"**/constraints/*.txt"
],
@@ -1537,6 +1197,11 @@
}
],
"menus": {
+ "issue/reporter": [
+ {
+ "command": "python.reportIssue"
+ }
+ ],
"commandPalette": [
{
"category": "Python",
@@ -1554,7 +1219,7 @@
"category": "Python",
"command": "python.clearWorkspaceInterpreter",
"title": "%python.command.python.clearWorkspaceInterpreter.title%",
- "when": "!virtualWorkspace && shellExecutionSupported && editorLangId == python"
+ "when": "!virtualWorkspace && shellExecutionSupported"
},
{
"category": "Python",
@@ -1570,15 +1235,15 @@
},
{
"category": "Python",
- "command": "python.createTerminal",
- "title": "%python.command.python.createTerminal.title%",
- "when": "!virtualWorkspace && shellExecutionSupported"
+ "command": "python.createEnvironment-button",
+ "title": "%python.command.python.createEnvironment.title%",
+ "when": "false"
},
{
"category": "Python",
- "command": "python.enableLinting",
- "title": "%python.command.python.enableLinting.title%",
- "when": "!virtualWorkspace && shellExecutionSupported && editorLangId == python"
+ "command": "python.createTerminal",
+ "title": "%python.command.python.createTerminal.title%",
+ "when": "!virtualWorkspace && shellExecutionSupported"
},
{
"category": "Python",
@@ -1597,14 +1262,14 @@
"command": "python.execInTerminal-icon",
"icon": "$(play)",
"title": "%python.command.python.execInTerminalIcon.title%",
- "when": "false && editorLangId == python"
+ "when": "false"
},
{
"category": "Python",
- "command": "python.debugInTerminal",
- "icon": "$(debug-alt)",
- "title": "%python.command.python.debugInTerminal.title%",
- "when": "!virtualWorkspace && shellExecutionSupported && editorLangId == python"
+ "command": "python.execInDedicatedTerminal",
+ "icon": "$(play)",
+ "title": "%python.command.python.execInDedicatedTerminal.title%",
+ "when": "false"
},
{
"category": "Python",
@@ -1618,11 +1283,17 @@
"title": "%python.command.python.execSelectionInTerminal.title%",
"when": "!virtualWorkspace && shellExecutionSupported && editorLangId == python"
},
+ {
+ "category": "Python",
+ "command": "python.execInREPL",
+ "title": "%python.command.python.execInREPL.title%",
+ "when": "false"
+ },
{
"category": "Python",
"command": "python.launchTensorBoard",
"title": "%python.command.python.launchTensorBoard.title%",
- "when": "!virtualWorkspace && shellExecutionSupported"
+ "when": "!virtualWorkspace && shellExecutionSupported && !python.tensorboardExtInstalled"
},
{
"category": "Python",
@@ -1630,7 +1301,7 @@
"enablement": "python.hasActiveTensorBoardSession",
"icon": "$(refresh)",
"title": "%python.command.python.refreshTensorBoard.title%",
- "when": "!virtualWorkspace && shellExecutionSupported"
+ "when": "!virtualWorkspace && shellExecutionSupported && !python.tensorboardExtInstalled"
},
{
"category": "Python",
@@ -1645,30 +1316,12 @@
"title": "%python.command.testing.rerunFailedTests.title%",
"when": "!virtualWorkspace && shellExecutionSupported"
},
- {
- "category": "Python",
- "command": "python.runLinting",
- "title": "%python.command.python.runLinting.title%",
- "when": "!virtualWorkspace && shellExecutionSupported && editorLangId == python"
- },
{
"category": "Python",
"command": "python.setInterpreter",
"title": "%python.command.python.setInterpreter.title%",
"when": "!virtualWorkspace && shellExecutionSupported"
},
- {
- "category": "Python",
- "command": "python.setLinter",
- "title": "%python.command.python.setLinter.title%",
- "when": "!virtualWorkspace && shellExecutionSupported && editorLangId == python"
- },
- {
- "category": "Python Refactor",
- "command": "python.sortImports",
- "title": "%python.command.python.sortImports.title%",
- "when": "!virtualWorkspace && shellExecutionSupported && editorLangId == python"
- },
{
"category": "Python",
"command": "python.startREPL",
@@ -1692,16 +1345,35 @@
"editor/content": [
{
"group": "Python",
- "command": "python.createEnvironment",
- "when": "resourceLangId == pip-requirements && !virtualWorkspace && shellExecutionSupported"
+ "command": "python.createEnvironment-button",
+ "when": "showCreateEnvButton && resourceLangId == pip-requirements && !virtualWorkspace && shellExecutionSupported && !inDiffEditor && !isMergeResultEditor && pythonDepsNotInstalled"
},
{
"group": "Python",
- "command": "python.createEnvironment",
- "when": "resourceFilename == pyproject.toml && pipInstallableToml && !virtualWorkspace && shellExecutionSupported"
+ "command": "python.createEnvironment-button",
+ "when": "showCreateEnvButton && resourceFilename == pyproject.toml && pipInstallableToml && !virtualWorkspace && shellExecutionSupported && !inDiffEditor && !isMergeResultEditor && pythonDepsNotInstalled"
}
],
"editor/context": [
+ {
+ "submenu": "python.run",
+ "group": "Python",
+ "when": "editorLangId == python && !virtualWorkspace && shellExecutionSupported && isWorkspaceTrusted"
+ },
+ {
+ "submenu": "python.runFileInteractive",
+ "group": "Jupyter2",
+ "when": "editorLangId == python && !virtualWorkspace && shellExecutionSupported && !isJupyterInstalled && isWorkspaceTrusted"
+ }
+ ],
+ "python.runFileInteractive": [
+ {
+ "command": "python.installJupyter",
+ "group": "Jupyter2",
+ "when": "resourceLangId == python && !virtualWorkspace && shellExecutionSupported"
+ }
+ ],
+ "python.run": [
{
"command": "python.execInTerminal",
"group": "Python",
@@ -1715,13 +1387,12 @@
{
"command": "python.execSelectionInTerminal",
"group": "Python",
- "when": "editorFocus && editorLangId == python && !virtualWorkspace && shellExecutionSupported"
+ "when": "!config.python.REPL.sendToNativeREPL && editorFocus && editorLangId == python && !virtualWorkspace && shellExecutionSupported"
},
{
- "command": "python.sortImports",
- "group": "Refactor",
- "title": "%python.command.python.sortImports.title%",
- "when": "editorLangId == python && !notebookEditorFocused && !virtualWorkspace && shellExecutionSupported"
+ "command": "python.execInREPL",
+ "group": "Python",
+ "when": "editorFocus && editorLangId == python && !virtualWorkspace && shellExecutionSupported && config.python.REPL.sendToNativeREPL"
}
],
"editor/title": [
@@ -1739,9 +1410,9 @@
"when": "resourceLangId == python && !isInDiffEditor && !virtualWorkspace && shellExecutionSupported"
},
{
- "command": "python.debugInTerminal",
- "group": "navigation@1",
- "title": "%python.command.python.debugInTerminal.title%",
+ "command": "python.execInDedicatedTerminal",
+ "group": "navigation@0",
+ "title": "%python.command.python.execInDedicatedTerminal.title%",
"when": "resourceLangId == python && !isInDiffEditor && !virtualWorkspace && shellExecutionSupported"
}
],
@@ -1767,6 +1438,17 @@
}
]
},
+ "submenus": [
+ {
+ "id": "python.run",
+ "label": "%python.editor.context.submenu.runPython%",
+ "icon": "$(play)"
+ },
+ {
+ "id": "python.runFileInteractive",
+ "label": "%python.editor.context.submenu.runPythonInteractive%"
+ }
+ ],
"viewsWelcome": [
{
"view": "testing",
@@ -1793,6 +1475,7 @@
"package": "gulp clean && gulp prePublishBundle && vsce package -o ms-python-insiders.vsix",
"prePublish": "gulp clean && gulp prePublishNonBundle",
"compile": "tsc -watch -p ./",
+ "compileApi": "node ./node_modules/typescript/lib/tsc.js -b ./pythonExtensionApi/tsconfig.json",
"compiled": "deemon npm run compile",
"kill-compiled": "deemon --kill npm run compile",
"checkDependencies": "gulp checkDependencies",
@@ -1815,8 +1498,8 @@
"testSmoke": "cross-env INSTALL_JUPYTER_EXTENSION=true \"node ./out/test/smokeTest.js\"",
"testInsiders": "cross-env VSC_PYTHON_CI_TEST_VSC_CHANNEL=insiders INSTALL_PYLANCE_EXTENSION=true TEST_FILES_SUFFIX=insiders.test CODE_TESTS_WORKSPACE=src/testMultiRootWkspc/smokeTests \"node ./out/test/standardTest.js\"",
"lint-staged": "node gulpfile.js",
- "lint": "eslint --ext .ts,.js src build",
- "lint-fix": "eslint --fix --ext .ts,.js src build gulpfile.js",
+ "lint": "eslint --ext .ts,.js src build pythonExtensionApi",
+ "lint-fix": "eslint --fix --ext .ts,.js src build pythonExtensionApi gulpfile.js",
"format-check": "prettier --check 'src/**/*.ts' 'build/**/*.js' '.github/**/*.yml' gulpfile.js",
"format-fix": "prettier --write 'src/**/*.ts' 'build/**/*.js' '.github/**/*.yml' gulpfile.js",
"clean": "gulp clean",
@@ -1827,10 +1510,9 @@
},
"dependencies": {
"@iarna/toml": "^2.2.5",
- "@vscode/extension-telemetry": "^0.7.4-preview",
+ "@vscode/extension-telemetry": "^0.8.4",
"@vscode/jupyter-lsp-middleware": "^0.2.50",
"arch": "^2.1.0",
- "diff-match-patch": "^1.0.0",
"fs-extra": "^10.0.1",
"glob": "^7.2.0",
"hash.js": "^1.1.7",
@@ -1838,61 +1520,54 @@
"inversify": "^5.0.4",
"jsonc-parser": "^3.0.0",
"lodash": "^4.17.21",
- "md5": "^2.2.1",
"minimatch": "^5.0.1",
"named-js-regexp": "^1.3.3",
"node-stream-zip": "^1.6.0",
"reflect-metadata": "^0.1.12",
- "request": "^2.87.0",
- "request-progress": "^3.0.0",
"rxjs": "^6.5.4",
"rxjs-compat": "^6.5.4",
- "semver": "^5.5.0",
+ "semver": "^7.5.2",
"stack-trace": "0.0.10",
"sudo-prompt": "^9.2.1",
"tmp": "^0.0.33",
"uint64be": "^3.0.0",
"unicode": "^14.0.0",
"untildify": "^4.0.0",
- "vscode-debugadapter": "^1.28.0",
"vscode-debugprotocol": "^1.28.0",
- "vscode-jsonrpc": "8.0.2-next.1",
- "vscode-languageclient": "8.0.2-next.5",
- "vscode-languageserver": "8.0.2-next.5",
- "vscode-languageserver-protocol": "3.17.2-next.6",
- "vscode-tas-client": "^0.1.63",
+ "vscode-jsonrpc": "^9.0.0-next.2",
+ "vscode-languageclient": "^10.0.0-next.2",
+ "vscode-languageserver-protocol": "^3.17.6-next.3",
+ "vscode-tas-client": "^0.1.84",
"which": "^2.0.2",
"winreg": "^1.2.4",
- "xml2js": "^0.4.19"
+ "xml2js": "^0.5.0"
},
"devDependencies": {
"@istanbuljs/nyc-config-typescript": "^1.0.2",
+ "@types/bent": "^7.3.0",
"@types/chai": "^4.1.2",
"@types/chai-arrays": "^2.0.0",
"@types/chai-as-promised": "^7.1.0",
- "@types/diff-match-patch": "^1.0.32",
"@types/download": "^8.0.1",
"@types/fs-extra": "^9.0.13",
"@types/glob": "^7.2.0",
"@types/lodash": "^4.14.104",
- "@types/md5": "^2.1.32",
"@types/mocha": "^9.1.0",
- "@types/nock": "^10.0.3",
- "@types/node": "^14.18.0",
- "@types/request": "^2.47.0",
+ "@types/node": "^18.17.1",
"@types/semver": "^5.5.0",
"@types/shortid": "^0.0.29",
"@types/sinon": "^10.0.11",
"@types/stack-trace": "0.0.29",
"@types/tmp": "^0.0.33",
- "@types/uuid": "^8.3.4",
- "@types/vscode": "^1.75.0",
+ "@types/vscode": "^1.81.0",
"@types/which": "^2.0.1",
"@types/winreg": "^1.2.30",
"@types/xml2js": "^0.4.2",
"@typescript-eslint/eslint-plugin": "^3.7.0",
"@typescript-eslint/parser": "^3.7.0",
- "@vscode/test-electron": "^2.1.3",
+ "@vscode/test-electron": "^2.3.8",
+ "@vscode/vsce": "^2.26.1",
+ "bent": "^7.3.12",
"chai": "^4.1.2",
"chai-arrays": "^2.0.0",
"chai-as-promised": "^7.1.1",
@@ -1900,7 +1575,6 @@
"cross-spawn": "^6.0.5",
"del": "^6.0.0",
"download": "^8.0.0",
- "es5-ext": "0.10.53",
"eslint": "^7.2.0",
"eslint-config-airbnb": "^18.2.0",
"eslint-config-prettier": "^8.3.0",
@@ -1916,14 +1590,12 @@
"mocha": "^9.2.2",
"mocha-junit-reporter": "^2.0.2",
"mocha-multi-reporters": "^1.1.7",
- "nock": "^10.0.6",
"node-has-native-dependencies": "^1.0.2",
"node-loader": "^1.0.2",
"node-polyfill-webpack-plugin": "^1.1.4",
"nyc": "^15.0.0",
"prettier": "^2.0.2",
"rewiremock": "^3.13.0",
- "rimraf": "^3.0.2",
"shortid": "^2.2.8",
"sinon": "^13.0.1",
"source-map-support": "^0.5.12",
@@ -1934,8 +1606,6 @@
"typemoq": "^2.1.0",
"typescript": "4.5.5",
"uuid": "^8.3.2",
- "vsce": "^2.6.6",
- "vscode-debugadapter-testsupport": "^1.27.0",
"webpack": "^5.76.0",
"webpack-bundle-analyzer": "^4.5.0",
"webpack-cli": "^4.9.2",
@@ -1943,11 +1613,7 @@
"webpack-merge": "^5.8.0",
"webpack-node-externals": "^3.0.0",
"webpack-require-from": "^1.8.6",
+ "worker-loader": "^3.0.8",
"yargs": "^15.3.1"
- },
- "__metadata": {
- "id": "f1f59ae4-9318-4f3c-a9b5-81b2eaa5f8a5",
- "publisherDisplayName": "Microsoft",
- "publisherId": "998b010b-e2af-44a5-a6cd-0b5fd3b9b6f8"
}
}
diff --git a/package.nls.json b/package.nls.json
index b36b1b829609..669a14bed528 100644
--- a/package.nls.json
+++ b/package.nls.json
@@ -1,33 +1,36 @@
{
- "python.command.python.sortImports.title": "Sort Imports",
"python.command.python.startREPL.title": "Start REPL",
"python.command.python.createEnvironment.title": "Create Environment...",
"python.command.python.createNewFile.title": "New Python File",
"python.command.python.createTerminal.title": "Create Terminal",
"python.command.python.execInTerminal.title": "Run Python File in Terminal",
- "python.command.python.debugInTerminal.title": "Debug Python File",
"python.command.python.execInTerminalIcon.title": "Run Python File",
+ "python.command.python.execInDedicatedTerminal.title": "Run Python File in Dedicated Terminal",
"python.command.python.setInterpreter.title": "Select Interpreter",
"python.command.python.clearWorkspaceInterpreter.title": "Clear Workspace Interpreter Setting",
"python.command.python.viewOutput.title": "Show Output",
+ "python.command.python.installJupyter.title": "Install the Jupyter extension",
"python.command.python.viewLanguageServerOutput.title": "Show Language Server Output",
"python.command.python.configureTests.title": "Configure Tests",
"python.command.testing.rerunFailedTests.title": "Rerun Failed Tests",
"python.command.python.execSelectionInTerminal.title": "Run Selection/Line in Python Terminal",
+ "python.command.python.execInREPL.title": "Run Selection/Line in Python REPL",
"python.command.python.execSelectionInDjangoShell.title": "Run Selection/Line in Django Shell",
"python.command.python.reportIssue.title": "Report Issue...",
- "python.command.python.setLinter.title": "Select Linter",
- "python.command.python.enableLinting.title": "Enable/Disable Linting",
- "python.command.python.runLinting.title": "Run Linting",
"python.command.python.enableSourceMapSupport.title": "Enable Source Map Support For Extension Debugging",
"python.command.python.clearCacheAndReload.title": "Clear Cache and Reload Window",
"python.command.python.analysis.restartLanguageServer.title": "Restart Language Server",
"python.command.python.launchTensorBoard.title": "Launch TensorBoard",
"python.command.python.refreshTensorBoard.title": "Refresh TensorBoard",
+ "python.createEnvironment.contentButton.description": "Show or hide Create Environment button in the editor for `requirements.txt` or other dependency files.",
+ "python.createEnvironment.trigger.description": "Detect if environment creation is required for the current project",
"python.menu.createNewFile.title": "Python File",
+ "python.editor.context.submenu.runPython": "Run Python",
+ "python.editor.context.submenu.runPythonInteractive": "Run in Interactive window",
"python.activeStateToolPath.description": "Path to the State Tool executable for ActiveState runtimes (version 0.36+).",
"python.autoComplete.extraPaths.description": "List of paths to libraries and the like that need to be imported by auto complete engine. E.g. when using Google App SDK, the paths are not in system path, hence need to be added into this list.",
"python.condaPath.description": "Path to the conda executable to use for activation (version 4.4+).",
+ "python.debugger.deprecatedMessage": "This configuration will be deprecated soon. Please replace `python` with `debugpy` to use the new Python Debugger extension.",
"python.defaultInterpreterPath.description": "Path to default Python to use when extension loads up for the first time, no longer used once an interpreter is selected for the workspace. See [here](https://aka.ms/AAfekmf) to understand when this is used",
"python.diagnostics.sourceMapsEnabled.description": "Enable source map support for meaningful stack traces in error logs.",
"python.envFile.description": "Absolute path to a file containing environment variable definitions.",
@@ -38,70 +41,31 @@
"python.experiments.pythonSurveyNotification.description": "Denotes the Python Survey Notification experiment.",
"python.experiments.pythonPromptNewToolsExt.description": "Denotes the Python Prompt New Tools Extension experiment.",
"python.experiments.pythonTerminalEnvVarActivation.description": "Enables use of environment variables to activate terminals instead of sending activation commands.",
- "python.formatting.autopep8Args.description": "Arguments passed in. Each argument is a separate item in the array.",
- "python.formatting.autopep8Path.description": "Path to autopep8, you can use a custom version of autopep8 by modifying this setting to include the full path.",
- "python.formatting.blackArgs.description": "Arguments passed in. Each argument is a separate item in the array.",
- "python.formatting.blackPath.description": "Path to Black, you can use a custom version of Black by modifying this setting to include the full path.",
- "python.formatting.provider.description": "Provider for formatting. Possible options include 'autopep8', 'black', and 'yapf'.",
- "python.formatting.yapfArgs.description": "Arguments passed in. Each argument is a separate item in the array.",
- "python.formatting.yapfPath.description": "Path to yapf, you can use a custom version of yapf by modifying this setting to include the full path.",
+ "python.experiments.pythonDiscoveryUsingWorkers.description": "Enables use of worker threads to do heavy computation when discovering interpreters.",
+ "python.experiments.pythonTestAdapter.description": "Denotes the Python Test Adapter experiment.",
+ "python.experiments.pythonREPLSmartSend.description": "Denotes the Python REPL Smart Send experiment.",
+ "python.experiments.pythonRecommendTensorboardExt.description": "Denotes the Tensorboard Extension recommendation experiment.",
"python.globalModuleInstallation.description": "Whether to install Python modules globally when not using an environment.",
"python.languageServer.description": "Defines type of the language server.",
"python.languageServer.defaultDescription": "Automatically select a language server: Pylance if installed and available, otherwise fallback to Jedi.",
"python.languageServer.jediDescription": "Use Jedi behind the Language Server Protocol (LSP) as a language server.",
"python.languageServer.pylanceDescription": "Use Pylance as a language server.",
"python.languageServer.noneDescription": "Disable language server capabilities.",
- "python.linting.banditArgs.description": "Arguments passed in. Each argument is a separate item in the array.",
- "python.linting.banditEnabled.description": "Whether to lint Python files using bandit.",
- "python.linting.banditPath.description": "Path to bandit, you can use a custom version of bandit by modifying this setting to include the full path.",
- "python.linting.cwd.description": "Optional working directory for linters.",
- "python.linting.enabled.description": "Whether to lint Python files.",
- "python.linting.flake8Args.description": "Arguments passed in. Each argument is a separate item in the array.",
- "python.linting.flake8CategorySeverity.E.description": "Severity of Flake8 message type 'E'.",
- "python.linting.flake8CategorySeverity.F.description": "Severity of Flake8 message type 'F'.",
- "python.linting.flake8CategorySeverity.W.description": "Severity of Flake8 message type 'W'.",
- "python.linting.flake8Enabled.description": "Whether to lint Python files using flake8.",
- "python.linting.flake8Path.description": "Path to flake8, you can use a custom version of flake8 by modifying this setting to include the full path.",
- "python.linting.ignorePatterns.description": "Patterns used to exclude files or folders from being linted.",
"python.interpreter.infoVisibility.description": "Controls when to display information of selected interpreter in the status bar.",
"python.interpreter.infoVisibility.never.description": "Never display information.",
"python.interpreter.infoVisibility.onPythonRelated.description": "Only display information if Python-related files are opened.",
"python.interpreter.infoVisibility.always.description": "Always display information.",
- "python.linting.lintOnSave.description": "Whether to lint Python files when saved.",
- "python.linting.maxNumberOfProblems.description": "Controls the maximum number of problems produced by the server.",
- "python.linting.mypyArgs.description": "Arguments passed in. Each argument is a separate item in the array.",
- "python.linting.mypyCategorySeverity.error.description": "Severity of Mypy message type 'Error'.",
- "python.linting.mypyCategorySeverity.note.description": "Severity of Mypy message type 'Note'.",
- "python.linting.mypyEnabled.description": "Whether to lint Python files using mypy.",
- "python.linting.mypyPath.description": "Path to mypy, you can use a custom version of mypy by modifying this setting to include the full path.",
- "python.linting.prospectorArgs.description": "Arguments passed in. Each argument is a separate item in the array.",
- "python.linting.prospectorEnabled.description": "Whether to lint Python files using prospector.",
- "python.linting.prospectorPath.description": "Path to Prospector, you can use a custom version of prospector by modifying this setting to include the full path.",
- "python.linting.pycodestyleArgs.description": "Arguments passed in. Each argument is a separate item in the array.",
- "python.linting.pycodestyleCategorySeverity.E.description": "Severity of pycodestyle message type 'E'.",
- "python.linting.pycodestyleCategorySeverity.W.description": "Severity of pycodestyle message type 'W'.",
- "python.linting.pycodestyleEnabled.description": "Whether to lint Python files using pycodestyle.",
- "python.linting.pycodestylePath.description": "Path to pycodestyle, you can use a custom version of pycodestyle by modifying this setting to include the full path.",
- "python.linting.pydocstyleArgs.description": "Arguments passed in. Each argument is a separate item in the array.",
- "python.linting.pydocstyleEnabled.description": "Whether to lint Python files using pydocstyle.",
- "python.linting.pydocstylePath.description": "Path to pydocstyle, you can use a custom version of pydocstyle by modifying this setting to include the full path.",
- "python.linting.pylamaArgs.description": "Arguments passed in. Each argument is a separate item in the array.",
- "python.linting.pylamaEnabled.description": "Whether to lint Python files using pylama.",
- "python.linting.pylamaPath.description": "Path to pylama, you can use a custom version of pylama by modifying this setting to include the full path.",
- "python.linting.pylintArgs.description": "Arguments passed in. Each argument is a separate item in the array.",
- "python.linting.pylintCategorySeverity.convention.description": "Severity of Pylint message type 'Convention/C'.",
- "python.linting.pylintCategorySeverity.error.description": "Severity of Pylint message type 'Error/E'.",
- "python.linting.pylintCategorySeverity.fatal.description": "Severity of Pylint message type 'Error/F'.",
- "python.linting.pylintCategorySeverity.refactor.description": "Severity of Pylint message type 'Refactor/R'.",
- "python.linting.pylintCategorySeverity.warning.description": "Severity of Pylint message type 'Warning/W'.",
- "python.linting.pylintEnabled.description": "Whether to lint Python files using pylint.",
- "python.linting.pylintPath.description": "Path to Pylint, you can use a custom version of pylint by modifying this setting to include the full path.",
"python.logging.level.description": "The logging level the extension logs at, defaults to 'error'",
+ "python.logging.level.deprecation": "This setting is deprecated. Please use command `Developer: Set Log Level...` to set logging level.",
+ "python.missingPackage.severity.description": "Set severity of missing packages in requirements.txt or pyproject.toml",
+ "python.locator.description": "[Experimental] Select implementation of environment locators. This is an experimental setting while we test native environment location.",
"python.pipenvPath.description": "Path to the pipenv executable to use for activation.",
"python.poetryPath.description": "Path to the poetry executable.",
- "python.sortImports.args.description": "Arguments passed in. Each argument is a separate item in the array.",
- "python.sortImports.path.description": "Path to isort script, default using inner version",
+ "python.EnableREPLSmartSend.description": "Toggle Smart Send for the Python REPL. Smart Send enables sending the smallest runnable block of code to the REPL on Shift+Enter and moves the cursor accordingly.",
+ "python.REPL.sendToNativeREPL.description": "Toggle to send code to Python REPL instead of the terminal on execution. Turning this on will change the behavior for both Smart Send and Run Selection/Line in the Context Menu.",
"python.tensorBoard.logDirectory.description": "Set this setting to your preferred TensorBoard log directory to skip log directory prompt when starting TensorBoard.",
+ "python.tensorBoard.logDirectory.markdownDeprecationMessage": "Tensorboard support has been moved to the extension [Tensorboard extension](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.tensorboard). Instead use the setting `tensorBoard.logDirectory`.",
+ "python.tensorBoard.logDirectory.deprecationMessage": "Tensorboard support has been moved to the extension Tensorboard extension. Instead use the setting `tensorBoard.logDirectory`.",
"python.terminal.activateEnvInCurrentTerminal.description": "Activate Python Environment in the current Terminal on load of the Extension.",
"python.terminal.activateEnvironment.description": "Activate Python Environment in all Terminals created.",
"python.terminal.executeInFileDir.description": "When executing a file in the terminal, whether to use execute in the file's directory, instead of the current open folder.",
@@ -118,6 +82,87 @@
"python.testing.unittestEnabled.description": "Enable testing using unittest.",
"python.venvFolders.description": "Folders in your home directory to look into for virtual environments (supports pyenv, direnv and virtualenvwrapper by default).",
"python.venvPath.description": "Path to folder with a list of Virtual Environments (e.g. ~/.pyenv, ~/Envs, ~/.virtualenvs).",
- "python.sortImports.args.deprecationMessage": "This setting will be removed soon. Use 'isort.args' instead.",
- "python.sortImports.path.deprecationMessage": "This setting will be removed soon. Use 'isort.path' instead."
+ "walkthrough.pythonWelcome.title": "Get Started with Python Development",
+ "walkthrough.pythonWelcome.description": "Your first steps to set up a Python project with all the powerful tools and features that the Python extension has to offer!",
+ "walkthrough.step.python.createPythonFile.title": "Create a Python file",
+ "walkthrough.step.python.createPythonFolder.title": "Open a Python project folder",
+ "walkthrough.step.python.createPythonFile.description": {
+ "message": "[Open](command:toSide:workbench.action.files.openFile) or [create](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22python%22%7D) a Python file - make sure to save it as \".py\".\n[Create Python File](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22python%22%7D)",
+ "comment": [
+ "{Locked='](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22python%22%7D'}",
+ "Do not translate the 'command:*' part inside of the '(..)'. It is an internal command syntax for VS Code",
+ "Please make sure there is no space between the right bracket and left parenthesis: ]( this is an internal syntax for links"
+ ]
+ },
+ "walkthrough.step.python.createPythonFolder.description": {
+ "message": "[Open](command:workbench.action.files.openFolder) or create a project folder.\n[Open Project Folder](command:workbench.action.files.openFolder)",
+ "comment": [
+ "{Locked='](command:workbench.action.files.openFolder'}",
+ "Do not translate the 'command:*' part inside of the '(..)'. It is an internal command syntax for VS Code",
+ "Please make sure there is no space between the right bracket and left parenthesis: ]( this is an internal syntax for links"
+ ]
+ },
+ "walkthrough.step.python.installPythonWin8.title": "Install Python",
+ "walkthrough.step.python.installPythonWin8.description": "The Python Extension requires Python to be installed. Install Python [from python.org](https://www.python.org/downloads).\n\n[Install Python](https://www.python.org/downloads)\n",
+ "walkthrough.step.python.installPythonMac.title": "Install Python",
+ "walkthrough.step.python.installPythonMac.description": {
+ "message": "The Python Extension requires Python to be installed. Install Python 3 through the terminal.\n[Install Python via Brew](command:python.installPythonOnMac)\n",
+ "comment": [
+ "{Locked='](command:python.installPythonOnMac'}",
+ "Do not translate the 'command:*' part inside of the '(..)'. It is an internal command syntax for VS Code",
+ "Please make sure there is no space between the right bracket and left parenthesis: ]( this is an internal syntax for links"
+ ]
+ },
+ "walkthrough.step.python.installPythonLinux.title": "Install Python",
+ "walkthrough.step.python.installPythonLinux.description": {
+ "message": "The Python Extension requires Python to be installed. Install Python 3 through the terminal.\n[Install Python via terminal](command:python.installPythonOnLinux)\n",
+ "comment": [
+ "{Locked='](command:python.installPythonOnLinux'}",
+ "Do not translate the 'command:*' part inside of the '(..)'. It is an internal command syntax for VS Code",
+ "Please make sure there is no space between the right bracket and left parenthesis: ]( this is an internal syntax for links"
+ ]
+ },
+ "walkthrough.step.python.selectInterpreter.title": "Select a Python Interpreter",
+ "walkthrough.step.python.createEnvironment.title": "Select or create a Python environment",
+ "walkthrough.step.python.createEnvironment.description": {
+ "message": "Create an environment for your Python project or use [Select Python Interpreter](command:python.setInterpreter) to select an existing one.\n[Create Environment](command:python.createEnvironment)\n**Tip**: Run the ``Python: Create Environment`` command in the [Command Palette](command:workbench.action.showCommands).",
+ "comment": [
+ "{Locked='](command:python.createEnvironment'}",
+ "{Locked='](command:workbench.action.showCommands'}",
+ "{Locked='](command:python.setInterpreter'}",
+ "Do not translate the 'command:*' part inside of the '(..)'. It is an internal command syntax for VS Code",
+ "Please make sure there is no space between the right bracket and left parenthesis: ]( this is an internal syntax for links"
+ ]
+ },
+ "walkthrough.step.python.runAndDebug.title": "Run and debug your Python file",
+ "walkthrough.step.python.runAndDebug.description": "Open your Python file and click on the play button on the top right of the editor, or press F5 when on the file and select \"Python File\" to run with the debugger. \n \n[Learn more](https://code.visualstudio.com/docs/python/python-tutorial#_run-hello-world)",
+ "walkthrough.step.python.learnMoreWithDS.title": "Keep exploring!",
+ "walkthrough.step.python.learnMoreWithDS.description": {
+ "message":"🎨 Explore all the features the Python extension has to offer by looking for \"Python\" in the [Command Palette](command:workbench.action.showCommands). \n 📈 Learn more about getting started with [data science](command:workbench.action.openWalkthrough?%7B%22category%22%3A%22ms-python.python%23pythonDataScienceWelcome%22%2C%22step%22%3A%22ms-python.python%23python.createNewNotebook%22%7D) in Python. \n ✨ Take a look at our [Release Notes](https://aka.ms/AA8dxtb) to learn more about the latest features. \n \n[Follow along with the Python Tutorial](https://aka.ms/AA8dqti)",
+ "comment":[
+ "{Locked='](command:workbench.action.showCommands'}",
+ "{Locked='](command:workbench.action.openWalkthrough?%7B%22category%22%3A%22ms-python.python%23pythonDataScienceWelcome%22%2C%22step%22%3A%22ms-python.python%23python.createNewNotebook%22%7D'}",
+ "Do not translate the 'command:*' part inside of the '(..)'. It is an internal command syntax for VS Code",
+ "Please make sure there is no space between the right bracket and left parenthesis: ]( this is an internal syntax for links"
+ ]
+ },
+ "walkthrough.pythonDataScienceWelcome.title": "Get Started with Python for Data Science",
+ "walkthrough.pythonDataScienceWelcome.description": "Your first steps to getting started with a Data Science project with Python!",
+ "walkthrough.step.python.installJupyterExt.title": "Install Jupyter extension",
+ "walkthrough.step.python.installJupyterExt.description": "If you haven't already, install the [Jupyter extension](command:workbench.extensions.search?\"ms-toolsai.jupyter\") to take full advantage of notebooks experiences in VS Code!\n \n[Search Jupyter extension](command:workbench.extensions.search?\"ms-toolsai.jupyter\")",
+ "walkthrough.step.python.createNewNotebook.title": "Create or open a Jupyter Notebook",
+ "walkthrough.step.python.createNewNotebook.description": "Right click in the file explorer and create a new file with an .ipynb extension. Or, open the [Command Palette](command:workbench.action.showCommands) and run the command \n``Jupyter: Create New Blank Notebook``.\n[Create new Jupyter Notebook](command:toSide:jupyter.createnewnotebook)\n If you have an existing project, you can also [open a folder](command:workbench.action.files.openFolder) and/or clone a project from GitHub: [clone a Git repository](command:git.clone).",
+ "walkthrough.step.python.openInteractiveWindow.title": "Open the Python Interactive Window",
+ "walkthrough.step.python.openInteractiveWindow.description": "The Python Interactive Window is a Python shell where you can execute and view the results of your Python code. You can create cells on a Python file by typing ``#%%``.\n \nTo open the interactive window anytime, open the [Command Palette](command:workbench.action.showCommands) and run the command \n``Jupyter: Create Interactive Window``.\n[Open Interactive Window](command:jupyter.createnewinteractive)",
+ "walkthrough.step.python.dataScienceLearnMore.title": "Find out more!",
+ "walkthrough.step.python.dataScienceLearnMore.description": "📒 Take a look into the [Jupyter extension](command:workbench.extensions.search?\"ms-toolsai.jupyter\") features, by looking for \"Jupyter\" in the [Command Palette](command:workbench.action.showCommands). \n 🏃🏻 Find out more features in our [Tutorials](https://aka.ms/AAdjzpd). \n[Learn more](https://aka.ms/AAdar6q)",
+ "walkthrough.step.python.createPythonFile.altText": "Open a Python file or a folder with a Python project.",
+ "walkthrough.step.python.selectInterpreter.altText": "Selecting a Python interpreter from the status bar",
+ "walkthrough.step.python.createEnvironment.altText": "Creating a Python environment from the Command Palette",
+ "walkthrough.step.python.runAndDebug.altText": "How to run and debug in VS Code with F5 or the play button on the top right.",
+ "walkthrough.step.python.learnMoreWithDS.altText": "Image representing our documentation page and mailing list resources.",
+ "walkthrough.step.python.installJupyterExt.altText": "Creating a new Jupyter notebook",
+ "walkthrough.step.python.createNewNotebook.altText": "Creating a new Jupyter notebook",
+ "walkthrough.step.python.openInteractiveWindow.altText": "Opening Python interactive window",
+ "walkthrough.step.python.dataScienceLearnMore.altText": "Image representing our documentation page and mailing list resources."
}
diff --git a/pythonExtensionApi/.eslintrc b/pythonExtensionApi/.eslintrc
new file mode 100644
index 000000000000..8828c49002ed
--- /dev/null
+++ b/pythonExtensionApi/.eslintrc
@@ -0,0 +1,11 @@
+{
+ "overrides": [
+ {
+ "files": ["**/main.d.ts"],
+ "rules": {
+ "@typescript-eslint/no-explicit-any": "off",
+ "padding-line-between-statements": ["error", { "blankLine": "always", "prev": "export", "next": "*" }]
+ }
+ }
+ ]
+}
diff --git a/pythonExtensionApi/.npmignore b/pythonExtensionApi/.npmignore
new file mode 100644
index 000000000000..283d589ea5fe
--- /dev/null
+++ b/pythonExtensionApi/.npmignore
@@ -0,0 +1,8 @@
+example/**
+dist/
+out/**/*.map
+out/**/*.tsbuildInfo
+src/
+.eslintrc*
+.eslintignore
+tsconfig*.json
diff --git a/pythonExtensionApi/LICENSE.md b/pythonExtensionApi/LICENSE.md
new file mode 100644
index 000000000000..767f4076ba05
--- /dev/null
+++ b/pythonExtensionApi/LICENSE.md
@@ -0,0 +1,21 @@
+Copyright (c) Microsoft Corporation. All rights reserved.
+
+MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED _AS IS_, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/pythonExtensionApi/README.md b/pythonExtensionApi/README.md
new file mode 100644
index 000000000000..5208d90cdfa5
--- /dev/null
+++ b/pythonExtensionApi/README.md
@@ -0,0 +1,55 @@
+# Python extension's API
+
+This npm module implements an API facade for the Python extension in VS Code.
+
+## Example
+
+First we need to define a `package.json` for the extension that wants to use the API:
+
+```jsonc
+{
+ "name": "...",
+ ...
+ // depend on the Python extension
+ "extensionDependencies": [
+ "ms-python.python"
+ ],
+ // Depend on the Python extension facade npm module to get easier API access to the
+ // core extension.
+ "dependencies": {
+ "@vscode/python-extension": "...",
+ "@types/vscode": "..."
+ },
+}
+```
+
+Update `"@types/vscode"` to [a recent version](https://code.visualstudio.com/updates/) of VS Code, say `"^1.81.0"` for VS Code version `"1.81"`, in case there are any conflicts.
+
+The actual source code to get the active environment to run some script could look like this:
+
+```typescript
+// Import the API
+import { PythonExtension } from '@vscode/python-extension';
+
+...
+
+// Load the Python extension API
+const pythonApi: PythonExtension = await PythonExtension.api();
+
+// This will return something like /usr/bin/python
+const environmentPath = pythonApi.environments.getActiveEnvironmentPath();
+
+// `environmentPath.path` carries the value of the setting. Note that this path may point to a folder and not the
+// python binary. Depends entirely on how the env was created.
+// E.g., `conda create -n myenv python` ensures the env has a python binary
+// `conda create -n myenv` does not include a python binary.
+// Also, the path specified may not be valid, use the following to get complete details for this environment if
+// need be.
+
+const environment = await pythonApi.environments.resolveEnvironment(environmentPath);
+if (environment) {
+ // run your script here.
+}
+```
+
+Check out [the wiki](https://aka.ms/pythonEnvironmentApi) for many more examples and usage.
diff --git a/pythonExtensionApi/SECURITY.md b/pythonExtensionApi/SECURITY.md
new file mode 100644
index 000000000000..a050f362c152
--- /dev/null
+++ b/pythonExtensionApi/SECURITY.md
@@ -0,0 +1,41 @@
+
+
+## Security
+
+Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
+
+If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), please report it to us as described below.
+
+## Reporting Security Issues
+
+**Please do not report security vulnerabilities through public GitHub issues.**
+
+Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
+
+If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
+
+You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).
+
+Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
+
+ * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
+ * Full paths of source file(s) related to the manifestation of the issue
+ * The location of the affected source code (tag/branch/commit or direct URL)
+ * Any special configuration required to reproduce the issue
+ * Step-by-step instructions to reproduce the issue
+ * Proof-of-concept or exploit code (if possible)
+ * Impact of the issue, including how an attacker might exploit the issue
+
+This information will help us triage your report more quickly.
+
+If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs.
+
+## Preferred Languages
+
+We prefer all communications to be in English.
+
+## Policy
+
+Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).
+
+
diff --git a/pythonExtensionApi/package-lock.json b/pythonExtensionApi/package-lock.json
new file mode 100644
index 000000000000..ef6914e0e786
--- /dev/null
+++ b/pythonExtensionApi/package-lock.json
@@ -0,0 +1,155 @@
+{
+ "name": "@vscode/python-extension",
+ "version": "1.0.5",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "@vscode/python-extension",
+ "version": "1.0.5",
+ "license": "MIT",
+ "devDependencies": {
+ "@types/vscode": "^1.78.0",
+ "source-map": "^0.8.0-beta.0",
+ "typescript": "5.0.4"
+ },
+ "engines": {
+ "node": ">=18.17.1",
+ "vscode": "^1.78.0"
+ }
+ },
+ "node_modules/@types/vscode": {
+ "version": "1.80.0",
+ "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.80.0.tgz",
+ "integrity": "sha512-qK/CmOdS2o7ry3k6YqU4zD3R2AYlJfbwBoSbKpBoP+GpXNE+0NEgJOli4n0bm0diK5kfBnchgCEj4igQz/44Hg==",
+ "dev": true
+ },
+ "node_modules/lodash.sortby": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
+ "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
+ "dev": true
+ },
+ "node_modules/punycode": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
+ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.8.0-beta.0",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
+ "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
+ "dev": true,
+ "dependencies": {
+ "whatwg-url": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
+ "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz",
+ "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==",
+ "dev": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=12.20"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+ "dev": true
+ },
+ "node_modules/whatwg-url": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
+ "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
+ "dev": true,
+ "dependencies": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^1.0.1",
+ "webidl-conversions": "^4.0.2"
+ }
+ }
+ },
+ "dependencies": {
+ "@types/vscode": {
+ "version": "1.80.0",
+ "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.80.0.tgz",
+ "integrity": "sha512-qK/CmOdS2o7ry3k6YqU4zD3R2AYlJfbwBoSbKpBoP+GpXNE+0NEgJOli4n0bm0diK5kfBnchgCEj4igQz/44Hg==",
+ "dev": true
+ },
+ "lodash.sortby": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
+ "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
+ "dev": true
+ },
+ "punycode": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
+ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.8.0-beta.0",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
+ "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
+ "dev": true,
+ "requires": {
+ "whatwg-url": "^7.0.0"
+ }
+ },
+ "tr46": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
+ "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "typescript": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz",
+ "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==",
+ "dev": true
+ },
+ "webidl-conversions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+ "dev": true
+ },
+ "whatwg-url": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
+ "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
+ "dev": true,
+ "requires": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^1.0.1",
+ "webidl-conversions": "^4.0.2"
+ }
+ }
+ }
+}
diff --git a/pythonExtensionApi/package.json b/pythonExtensionApi/package.json
new file mode 100644
index 000000000000..9e58f1a2400c
--- /dev/null
+++ b/pythonExtensionApi/package.json
@@ -0,0 +1,43 @@
+{
+ "name": "@vscode/python-extension",
+ "description": "An API facade for the Python extension in VS Code",
+ "version": "1.0.5",
+ "author": {
+ "name": "Microsoft Corporation"
+ },
+ "keywords": [
+ "Python",
+ "VSCode",
+ "API"
+ ],
+ "main": "./out/main.js",
+ "types": "./out/main.d.ts",
+ "engines": {
+ "node": ">=18.17.1",
+ "vscode": "^1.78.0"
+ },
+ "license": "MIT",
+ "homepage": "https://github.com/microsoft/vscode-python/tree/main/pythonExtensionApi",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/Microsoft/vscode-python"
+ },
+ "bugs": {
+ "url": "https://github.com/Microsoft/vscode-python/issues"
+ },
+ "devDependencies": {
+ "typescript": "5.0.4",
+ "@types/vscode": "^1.78.0",
+ "source-map": "^0.8.0-beta.0"
+ },
+ "scripts": {
+ "prepublishOnly": "echo \"⛔ Can only publish from a secure pipeline ⛔\" && node ../build/fail",
+ "prepack": "npm run all:publish",
+ "compile": "node ./node_modules/typescript/lib/tsc.js -b ./tsconfig.json",
+ "clean": "node ../node_modules/rimraf/bin.js out",
+ "lint": "node ../node_modules/eslint/bin/eslint.js --ext ts src",
+ "all": "npm run clean && npm run compile",
+ "formatTypings": "node ../node_modules/eslint/bin/eslint.js --fix ./out/main.d.ts",
+ "all:publish": "git clean -xfd . && npm install && npm run compile && npm run formatTypings"
+ }
+}
diff --git a/src/client/apiTypes.ts b/pythonExtensionApi/src/main.ts
similarity index 90%
rename from src/client/apiTypes.ts
rename to pythonExtensionApi/src/main.ts
index d30a81582a7e..dccbd78f6f04 100644
--- a/src/client/apiTypes.ts
+++ b/pythonExtensionApi/src/main.ts
@@ -1,33 +1,25 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
-import { CancellationToken, Event, Uri, WorkspaceFolder } from 'vscode';
-import { IDataViewerDataProvider, IJupyterUriProvider } from './jupyter/types';
+import { CancellationToken, Event, Uri, WorkspaceFolder, extensions } from 'vscode';
/*
* Do not introduce any breaking changes to this API.
* This is the public API for other extensions to interact with this extension.
*/
-
-export interface IExtensionApi {
+export interface PythonExtension {
/**
* Promise indicating whether all parts of the extension have completed loading or not.
- * @type {Promise}
- * @memberof IExtensionApi
*/
ready: Promise;
- jupyter: {
- registerHooks(): void;
- };
debug: {
/**
* Generate an array of strings for commands to pass to the Python executable to launch the debugger for remote debugging.
* Users can append another array of strings of what they want to execute along with relevant arguments to Python.
- * E.g `['/Users/..../pythonVSCode/pythonFiles/lib/python/debugpy', '--listen', 'localhost:57039', '--wait-for-client']`
- * @param {string} host
- * @param {number} port
- * @param {boolean} [waitUntilDebuggerAttaches=true]
- * @returns {Promise}
+ * E.g `['/Users/..../pythonVSCode/python_files/lib/python/debugpy', '--listen', 'localhost:57039', '--wait-for-client']`
+ * @param host
+ * @param port
+ * @param waitUntilDebuggerAttaches Defaults to `true`.
*/
getRemoteLauncherCommand(host: string, port: number, waitUntilDebuggerAttaches: boolean): Promise;
@@ -38,20 +30,6 @@ export interface IExtensionApi {
getDebuggerPackagePath(): Promise;
};
- datascience: {
- /**
- * Launches Data Viewer component.
- * @param {IDataViewerDataProvider} dataProvider Instance that will be used by the Data Viewer component to fetch data.
- * @param {string} title Data Viewer title
- */
- showDataViewer(dataProvider: IDataViewerDataProvider, title: string): Promise;
- /**
- * Registers a remote server provider component that's used to pick remote jupyter server URIs
- * @param serverProvider object called back when picking jupyter server URI
- */
- registerRemoteServerProvider(serverProvider: IJupyterUriProvider): void;
- };
-
/**
* These APIs provide a way for extensions to work with by python environments available in the user's machine
* as found by the Python extension. See
@@ -349,3 +327,23 @@ export type EnvironmentVariablesChangeEvent = {
*/
readonly env: EnvironmentVariables;
};
+
+export const PVSC_EXTENSION_ID = 'ms-python.python';
+
+// eslint-disable-next-line @typescript-eslint/no-namespace
+export namespace PythonExtension {
+ /**
+ * Returns the API exposed by the Python extension in VS Code.
+ */
+ export async function api(): Promise {
+ const extension = extensions.getExtension(PVSC_EXTENSION_ID);
+ if (extension === undefined) {
+ throw new Error(`Python extension is not installed or is disabled`);
+ }
+ if (!extension.isActive) {
+ await extension.activate();
+ }
+ const pythonApi: PythonExtension = extension.exports;
+ return pythonApi;
+ }
+}
diff --git a/pythonExtensionApi/tsconfig.json b/pythonExtensionApi/tsconfig.json
new file mode 100644
index 000000000000..9ab7617023df
--- /dev/null
+++ b/pythonExtensionApi/tsconfig.json
@@ -0,0 +1,34 @@
+{
+ "compilerOptions": {
+ "baseUrl": ".",
+ "paths": {
+ "*": ["types/*"]
+ },
+ "module": "commonjs",
+ "target": "es2018",
+ "outDir": "./out",
+ "lib": [
+ "es6",
+ "es2018",
+ "dom",
+ "ES2019",
+ "ES2020"
+ ],
+ "sourceMap": true,
+ "rootDir": "src",
+ "experimentalDecorators": true,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "noImplicitAny": true,
+ "noImplicitThis": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noFallthroughCasesInSwitch": true,
+ "resolveJsonModule": true,
+ "declaration": true
+ },
+ "exclude": [
+ "node_modules",
+ "out"
+ ]
+}
diff --git a/pythonFiles/create_venv.py b/pythonFiles/create_venv.py
deleted file mode 100644
index a97199c4c6c6..000000000000
--- a/pythonFiles/create_venv.py
+++ /dev/null
@@ -1,167 +0,0 @@
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License.
-
-import argparse
-import importlib.util as import_util
-import os
-import pathlib
-import subprocess
-import sys
-from typing import List, Optional, Sequence, Union
-
-VENV_NAME = ".venv"
-CWD = pathlib.PurePath(os.getcwd())
-
-
-class VenvError(Exception):
- pass
-
-
-def parse_args(argv: Sequence[str]) -> argparse.Namespace:
- parser = argparse.ArgumentParser()
-
- parser.add_argument(
- "--requirements",
- action="append",
- default=[],
- help="Install additional dependencies into the virtual environment.",
- )
-
- parser.add_argument(
- "--toml",
- action="store",
- default=None,
- help="Install additional dependencies from sources like `pyproject.toml` into the virtual environment.",
- )
- parser.add_argument(
- "--extras",
- action="append",
- default=[],
- help="Install specific package groups from `pyproject.toml` into the virtual environment.",
- )
-
- parser.add_argument(
- "--git-ignore",
- action="store_true",
- default=False,
- help="Add .gitignore to the newly created virtual environment.",
- )
- parser.add_argument(
- "--name",
- default=VENV_NAME,
- type=str,
- help="Name of the virtual environment.",
- metavar="NAME",
- action="store",
- )
- return parser.parse_args(argv)
-
-
-def is_installed(module: str) -> bool:
- return import_util.find_spec(module) is not None
-
-
-def file_exists(path: Union[str, pathlib.PurePath]) -> bool:
- return os.path.exists(path)
-
-
-def venv_exists(name: str) -> bool:
- return os.path.exists(CWD / name) and file_exists(get_venv_path(name))
-
-
-def run_process(args: Sequence[str], error_message: str) -> None:
- try:
- print("Running: " + " ".join(args))
- subprocess.run(args, cwd=os.getcwd(), check=True)
- except subprocess.CalledProcessError:
- raise VenvError(error_message)
-
-
-def get_venv_path(name: str) -> str:
- # See `venv` doc here for more details on binary location:
- # https://docs.python.org/3/library/venv.html#creating-virtual-environments
- if sys.platform == "win32":
- return os.fspath(CWD / name / "Scripts" / "python.exe")
- else:
- return os.fspath(CWD / name / "bin" / "python")
-
-
-def install_requirements(venv_path: str, requirements: List[str]) -> None:
- if not requirements:
- return
-
- print(f"VENV_INSTALLING_REQUIREMENTS: {requirements}")
- args = []
- for requirement in requirements:
- args += ["-r", requirement]
- run_process(
- [venv_path, "-m", "pip", "install"] + args,
- "CREATE_VENV.PIP_FAILED_INSTALL_REQUIREMENTS",
- )
- print("CREATE_VENV.PIP_INSTALLED_REQUIREMENTS")
-
-
-def install_toml(venv_path: str, extras: List[str]) -> None:
- args = "." if len(extras) == 0 else f".[{','.join(extras)}]"
- run_process(
- [venv_path, "-m", "pip", "install", "-e", args],
- "CREATE_VENV.PIP_FAILED_INSTALL_PYPROJECT",
- )
- print("CREATE_VENV.PIP_INSTALLED_PYPROJECT")
-
-
-def upgrade_pip(venv_path: str) -> None:
- run_process(
- [venv_path, "-m", "pip", "install", "--upgrade", "pip"],
- "CREATE_VENV.PIP_UPGRADE_FAILED",
- )
-
-
-def add_gitignore(name: str) -> None:
- git_ignore = CWD / name / ".gitignore"
- if not file_exists(git_ignore):
- print("Creating: " + os.fspath(git_ignore))
- with open(git_ignore, "w") as f:
- f.write("*")
-
-
-def main(argv: Optional[Sequence[str]] = None) -> None:
- if argv is None:
- argv = []
- args = parse_args(argv)
-
- if not is_installed("venv"):
- raise VenvError("CREATE_VENV.VENV_NOT_FOUND")
-
- pip_installed = is_installed("pip")
- deps_needed = args.requirements or args.extras or args.toml
- if deps_needed and not pip_installed:
- raise VenvError("CREATE_VENV.PIP_NOT_FOUND")
-
- if venv_exists(args.name):
- venv_path = get_venv_path(args.name)
- print(f"EXISTING_VENV:{venv_path}")
- else:
- run_process(
- [sys.executable, "-m", "venv", args.name],
- "CREATE_VENV.VENV_FAILED_CREATION",
- )
- venv_path = get_venv_path(args.name)
- print(f"CREATED_VENV:{venv_path}")
- if args.git_ignore:
- add_gitignore(args.name)
-
- if pip_installed:
- upgrade_pip(venv_path)
-
- if args.toml:
- print(f"VENV_INSTALLING_PYPROJECT: {args.toml}")
- install_toml(venv_path, args.extras)
-
- if args.requirements:
- print(f"VENV_INSTALLING_REQUIREMENTS: {args.requirements}")
- install_requirements(venv_path, args.requirements)
-
-
-if __name__ == "__main__":
- main(sys.argv[1:])
diff --git a/pythonFiles/get-pip.py b/pythonFiles/get-pip.py
deleted file mode 100644
index 2c411ecf21e3..000000000000
--- a/pythonFiles/get-pip.py
+++ /dev/null
@@ -1,27086 +0,0 @@
-#!/usr/bin/env python
-#
-# Hi There!
-#
-# You may be wondering what this giant blob of binary data here is, you might
-# even be worried that we're up to something nefarious (good for you for being
-# paranoid!). This is a base85 encoding of a zip file, this zip file contains
-# an entire copy of pip (version 21.3.1).
-#
-# Pip is a thing that installs packages, pip itself is a package that someone
-# might want to install, especially if they're looking to run this get-pip.py
-# script. Pip has a lot of code to deal with the security of installing
-# packages, various edge cases on various platforms, and other such sort of
-# "tribal knowledge" that has been encoded in its code base. Because of this
-# we basically include an entire copy of pip inside this blob. We do this
-# because the alternatives are attempt to implement a "minipip" that probably
-# doesn't do things correctly and has weird edge cases, or compress pip itself
-# down into a single file.
-#
-# If you're wondering how this is created, it is generated using
-# `scripts/generate.py` in https://github.com/pypa/get-pip.
-
-import sys
-
-this_python = sys.version_info[:2]
-min_version = (3, 6)
-if this_python < min_version:
- message_parts = [
- "This script does not work on Python {}.{}".format(*this_python),
- "The minimum supported Python version is {}.{}.".format(*min_version),
- "Please use https://bootstrap.pypa.io/pip/{}.{}/get-pip.py instead.".format(
- *this_python
- ),
- ]
- print("ERROR: " + " ".join(message_parts))
- sys.exit(1)
-
-
-import os.path
-import pkgutil
-import shutil
-import tempfile
-from base64 import b85decode
-
-
-def determine_pip_install_arguments():
- implicit_pip = True
- implicit_setuptools = True
- implicit_wheel = True
-
- # Check if the user has requested us not to install setuptools
- if "--no-setuptools" in sys.argv or os.environ.get("PIP_NO_SETUPTOOLS"):
- args = [x for x in sys.argv[1:] if x != "--no-setuptools"]
- implicit_setuptools = False
- else:
- args = sys.argv[1:]
-
- # Check if the user has requested us not to install wheel
- if "--no-wheel" in args or os.environ.get("PIP_NO_WHEEL"):
- args = [x for x in args if x != "--no-wheel"]
- implicit_wheel = False
-
- # We only want to implicitly install setuptools and wheel if they don't
- # already exist on the target platform.
- if implicit_setuptools:
- try:
- import setuptools # noqa
-
- implicit_setuptools = False
- except ImportError:
- pass
- if implicit_wheel:
- try:
- import wheel # noqa
-
- implicit_wheel = False
- except ImportError:
- pass
-
- # Add any implicit installations to the end of our args
- if implicit_pip:
- args += ["pip"]
- if implicit_setuptools:
- args += ["setuptools"]
- if implicit_wheel:
- args += ["wheel"]
-
- return ["install", "--upgrade", "--force-reinstall"] + args
-
-
-def monkeypatch_for_cert(tmpdir):
- """Patches `pip install` to provide default certificate with the lowest priority.
-
- This ensures that the bundled certificates are used unless the user specifies a
- custom cert via any of pip's option passing mechanisms (config, env-var, CLI).
-
- A monkeypatch is the easiest way to achieve this, without messing too much with
- the rest of pip's internals.
- """
- from pip._internal.commands.install import InstallCommand
-
- # We want to be using the internal certificates.
- cert_path = os.path.join(tmpdir, "cacert.pem")
- with open(cert_path, "wb") as cert:
- cert.write(pkgutil.get_data("pip._vendor.certifi", "cacert.pem"))
-
- install_parse_args = InstallCommand.parse_args
-
- def cert_parse_args(self, args):
- if not self.parser.get_default_values().cert:
- # There are no user provided cert -- force use of bundled cert
- self.parser.defaults["cert"] = cert_path # calculated above
- return install_parse_args(self, args)
-
- InstallCommand.parse_args = cert_parse_args
-
-
-def bootstrap(tmpdir):
- monkeypatch_for_cert(tmpdir)
-
- # Execute the included pip and use it to install the latest pip and
- # setuptools from PyPI
- from pip._internal.cli.main import main as pip_entry_point
-
- args = determine_pip_install_arguments()
- sys.exit(pip_entry_point(args))
-
-
-def main():
- tmpdir = None
- try:
- # Create a temporary working directory
- tmpdir = tempfile.mkdtemp()
-
- # Unpack the zipfile into the temporary directory
- pip_zip = os.path.join(tmpdir, "pip.zip")
- with open(pip_zip, "wb") as fp:
- fp.write(b85decode(DATA.replace(b"\n", b"")))
-
- # Add the zipfile to sys.path so that we can import it
- sys.path.insert(0, pip_zip)
-
- # Run the bootstrap
- bootstrap(tmpdir=tmpdir)
- finally:
- # Clean up our temporary working directory
- if tmpdir:
- shutil.rmtree(tmpdir, ignore_errors=True)
-
-
-DATA = b"""
-P)h>@6aWAK2mt$eR#TliG(h+O003nH000jF003}la4%n9X>MtBUtcb8c|B0UO2j}6z0X&KUUXrdvMRV
-16ubz6s0VM$QfAw<4YV^ulDhQoop$MlK*;0e$L01LzdVw?IP-tnf*qTlkJj!Mom=viw7qw3H>hKz6
-^g4|bOsV`^+*aO7_tw^Cd$4zs{Pl#j>6{|X*AaQ6!2wJ?w>%d+2&1X4Rc!^r6h-hMtH_d5{IF3D`nKTt~p1QY-O00;p4c~(;+8{@xi0ssK6
-1ONaJ0001RX>c!JUu|J&ZeL$6aCu!*!ET%|5WVviBXU@FMMw_qp;5O|rCxIBA*z%^Qy~|I#aghDZI*1
-mzHbcdCgFtbH*em&nbG}VT_EcdJ^%Uh<#$rfXmjvMazjtt+Y{4fL(0@tjn1(F!nz|6RBOjouLCQKB%tCsn
-f_O;(TkT9D!5I2G1vZWcORK<
-*}iONjWAr8Zm1&KuL0jC{@?djd+x5R}RGfYPBawx08>U(W?WmDk1T9S4?epCt{Z(ueTz)EC*E`5mT15
--&2~-DsS-6=uU3I|BmObEPJI*Sr)^2!Om@h-$wOJl_c@O>A_3OHg5wqIeD(E7`y@m0ou*N^~8Scf|wu
-`N_HtL5`*k&gASg%W(oQp9a7<~IpnR_S}F8z9z|q{`1rb)-o!>My0eex)q(ByedFLGyO7=Ikq8}(HcH
-6i;acy-%V$hD`fEosH@wgA+8z#{H{ToXOd_?&uMj~(yRVmD7BE?-`X6FU!78rkLs#HE1jqSOWnjp~Z3(}j4wN{#<0DmEaw
-w2fbN$l@K=F!>KqO9KQH000080Q-4XQ_aV~HNXG>03HDV01N;C0B~t=FK~G-ba`-PWF?NVPQ@?`MfZN
-i-B_Ob4-5=!Z$M%;t!XVKc9b}U{5?(?Egj!;iWEo#VY8e`cO+3psdiM#D?U$24DrcGE{QX%^A1rwho7
-bo%%^4nEOe11`ih5ds}r~C4-D(by*bnzy~VhcmspFPs+92he4iKm495?R6(6IB9*bzqWO6Z``e?dj4>
-$ei>cuLo8^bh>J0qwmAsn45g@9MQ{TAMQ=}M~B1K+Woqz5;+g_LK&{q3XhT~awQHE!$j2T)4`1QY-O0
-0;p4c~(=FwQ!+P0RR9!0ssIR0001RX>c!JX>N37a&BR4FJE72ZfSI1UoLQYb&)Yo#4rqn_xuX$SgsPJ
-3leY=j7%q3*bq8})@_Z_B-k#f{~ot+ASB2V>&bck^4xJALFYoL2O3Leg*}O$!hKQ7DMaVKUUslOCh)if@+itrPZeClT~
-1iR*^N=_&VilHX7ezR{Ys!P3i6v#8#CnCLX(r^h#(D9Q2`wcYz#AqB@vfzGIq$A8sk{)NWEK&TeAplO
-P?6fq6Q1^6a*0l)grsP?n#H~**AHt%UnWjY1bq&q0|@WSC{?>xZeNm!(&pOOE&dqH}AXz$)6~;-HFq;
-xJFdD4^T@31QY-O00;p4c~(c!JX>N37a&BR4FJg6RY-C?$ZgwtkdDU9
-obKAHPf7f4uG7lkBlGE!=dmYW`dihW;o~E`ZcCNi@JUohoY@8{Q1wh-1$NzhG@j(J4?IbgOIlV{(b{C
-7?A9fc@1wrttV^vAk^$p`qy{EM#ouDPzHJmWfRJmkLP0Eh5`jUu}2}!od0gsCy2o?*rZyPR2(bSUO$%
-<|5NYz|kB9(b;g#Fd#^2(tThkgbn-15A&&!1SkV-;QOc(aEUs)`n$97g+j+@~e@<#e6Bez$)8kE7$CVsa!Y&$ksdzhuK>@*WHllam(J%Bz^1
-QFuJ>TBK59wcM7qX?8>Fvf*h#xnw(L7rDKHEljCe&?`s#rJVk^W1OOEdeuJ+V^6W(P%hAYhU;hjIOt?
-2vJB0fWh56koK;Ps{O-tR;9d?}OpA)80<2VnFw5Vxw9d@n9FLVJJhuS000yys;B?3CXqmx?Fhd=u2$L
-Ckdn)rXm$@sB4hWuO=_IQ}D!OgUn}Uj7lOnIGY#4r=RnmQ%m5le`faf>hg931HhzU-^Y`1Ea-aQB*l>FFREh)$5jY2R>#sl
-UWuDTJ2(W2$w`i9+Bh+a@^EZli~*{QY3)2@XMbNRCX=Qyv-{?{i!Xhm5ElvxeI#=`~
-D?LO(6baf!usZ{VAodthv$pdbX0
-|q%mA+?{9piAA{!!stmrt0q3V$EuC6g`A+nT|BM2+3s>qh=U=AFthLvH+k0!N|r9wJ!j!=fA$q`6UAS{-Ga
-(eL*g?2>_1%t|33HNce3`{^o3NV21-EIponyvONX0_bnWq$thPGHCZ|R4{P7TcWCqn9dCn}ym+Ans=a
->N`DS#m=&*%-GN%tdJ~G8IL_C>r_Dv+ba=a!
-VgIRWan$LZbsL6xMVoz~81qqTbPQPn$khB?V(*t%SlRv3Mo`_qk>@hbk}Cq^~|6y?>LfkAH@&35JAK5
-1H1mT%Gd{5bFm(8}bk^PW|M^=@6rHY?DanXt&!q{>@Tx$k!rQJLg}2s(t4ScUH=DGin8&9C__68M{q(n|SlK>S*QE*7Gx8RY1
-y_%fH?47QqMfUPB}6DyjinRLhBK%obEtt2A~Q7~W)A$hSzb)&uj}Tv)}7c^_QTFovq0k$sq=1AQ=^!BI_En|a4Ggg|)oU`+0c4al`EZ^4``D&Jo4JP3a?0bO$_CR%5e3
-;C?%8VZV>f;=0;gV_JE2j!!vqIu#XFj{2k`%(_hZtog5#Zd^}r!I6FFD4`YhLjqyVzYvPBOINd1HRAuH7*&S^3x&tM`*%12XpXMC8OX