diff --git a/.github/actions/build-vsix/action.yml b/.github/actions/build-vsix/action.yml index d6a35794..caaef161 100644 --- a/.github/actions/build-vsix/action.yml +++ b/.github/actions/build-vsix/action.yml @@ -15,11 +15,10 @@ runs: node-version: ${{ inputs.node_version }} cache: 'npm' - # Minimum supported version is Python 3.7 - - name: Use Python 3.7 + - name: Use Python 3.6 uses: actions/setup-python@v4 with: - python-version: 3.7 + python-version: 3.6 - name: Pip cache uses: actions/cache@v3 @@ -30,8 +29,8 @@ runs: ${{ runner.os }}-pip-build-vsix- # For faster/better builds of sdists. - - name: Update pip, install pipx and install wheel - run: python -m pip install -U pip pipx wheel + - name: Update pip, install nox and install wheel + run: python -m pip install -U pip nox wheel shell: bash - name: Run npm ci @@ -39,14 +38,14 @@ runs: shell: bash - name: Install bundled python libraries - run: pipx run nox --session install_old_bundled_libs + run: python -m nox --session install_bundled_libs 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: pipx run nox --session update_build_number -- $GITHUB_RUN_ID + run: python -m nox --session update_build_number -- $GITHUB_RUN_ID shell: bash - name: Build VSIX diff --git a/.github/actions/lint/action.yml b/.github/actions/lint/action.yml index 5bf96897..46e3acb3 100644 --- a/.github/actions/lint/action.yml +++ b/.github/actions/lint/action.yml @@ -41,15 +41,15 @@ runs: ${{ runner.os }}-pip-lint- # For faster/better builds of sdists. - - name: Update pip, install pipx and install wheel - run: python -m pip install -U pip pipx wheel + - name: Update pip, install nox and install wheel + run: python -m pip install -U pip nox wheel shell: bash # This will install libraries to a target directory. - name: Install bundled python libraries - run: pipx run nox --session install_old_bundled_libs + run: python -m nox --session install_bundled_libs shell: bash - name: Check linting and formatting - run: pipx run nox --session lint + run: python -m nox --session lint shell: bash diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 5b733004..6191bc99 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -23,7 +23,7 @@ on: jobs: analyze: name: Analyze - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 permissions: actions: read contents: read diff --git a/.github/workflows/issue-labels.yml b/.github/workflows/issue-labels.yml index c8198c5a..38c29aea 100644 --- a/.github/workflows/issue-labels.yml +++ b/.github/workflows/issue-labels.yml @@ -11,7 +11,7 @@ jobs: # From https://github.com/marketplace/actions/github-script#apply-a-label-to-an-issue. add-triage-label: name: "Add 'triage-needed'" - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - uses: actions/github-script@v6 with: diff --git a/.github/workflows/pr-check.yml b/.github/workflows/pr-check.yml index 816aaa46..f36ca5ae 100644 --- a/.github/workflows/pr-check.yml +++ b/.github/workflows/pr-check.yml @@ -4,7 +4,7 @@ on: pull_request: env: - NODE_VERSION: 16.17.0 + NODE_VERSION: 18.17.1 TEST_RESULTS_DIRECTORY: . # Force a path with spaces and unicode chars to test extension works in these scenarios special-working-directory: './🐍 🐛' @@ -13,7 +13,7 @@ env: jobs: build-vsix: name: Create VSIX - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - name: Checkout uses: actions/checkout@v3 @@ -25,7 +25,7 @@ jobs: lint: name: Lint - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - name: Checkout uses: actions/checkout@v3 @@ -44,7 +44,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, windows-latest] + os: [ubuntu-20.04, windows-latest] python: ['3.6'] steps: @@ -53,19 +53,18 @@ jobs: with: path: ${{ env.special-working-directory-relative }} - # Install bundled libs using 3.6 even though you test it on other versions. - name: Use Python 3.6 - uses: actions/setup-python@v4 + uses: actions/setup-python@v3 with: python-version: '3.6' - - name: Update pip, install pipx and install wheel - run: python -m pip install -U pip pipx wheel + - name: Update pip, install nox and install wheel + run: python -m pip install -U pip nox wheel shell: bash # This will install libraries to a target directory. - name: Install bundled python libraries - run: pipx run nox --session install_old_bundled_libs + run: python -m nox --session install_bundled_libs shell: bash - name: Install Node @@ -78,16 +77,16 @@ jobs: - name: Install dependencies (npm ci) run: npm ci - # Now that the bundle is installed to target using python 3.7 + # Now that the bundle is installed to target using python 3.6 # switch back the python we want to test with - name: Use Python ${{ matrix.python }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v3 with: python-version: ${{ matrix.python }} # The new python may not have nox so install it again - - name: Update pip, install pipx and install wheel (again) - run: python -m pip install -U pip pipx wheel + - name: Update pip, install nox and install wheel (again) + run: python -m pip install -U pip nox wheel shell: bash - name: Start xvfb on Linux @@ -98,7 +97,7 @@ jobs: if: ${{ runner.os }} == 'Linux' - name: Run tests - run: pipx run nox --session tests + run: python -m nox --session tests shell: bash env: DISPLAY: ${{ env.DISPLAY }} diff --git a/.github/workflows/pr-labels.yml b/.github/workflows/pr-labels.yml index 8353173e..2a807b1b 100644 --- a/.github/workflows/pr-labels.yml +++ b/.github/workflows/pr-labels.yml @@ -11,10 +11,10 @@ on: jobs: add-pr-label: name: 'Ensure Required Labels' - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 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/push-check.yml b/.github/workflows/push-check.yml index 41781277..65916911 100644 --- a/.github/workflows/push-check.yml +++ b/.github/workflows/push-check.yml @@ -9,7 +9,7 @@ on: - 'release-*' env: - NODE_VERSION: 16.17.0 + NODE_VERSION: 18.17.1 TEST_RESULTS_DIRECTORY: . # Force a path with spaces and unicode chars to test extension works in these scenarios special-working-directory: './🐍 🐛' @@ -18,7 +18,7 @@ env: jobs: build-vsix: name: Create VSIX - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - name: Checkout uses: actions/checkout@v3 @@ -30,7 +30,7 @@ jobs: lint: name: Lint - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - name: Checkout uses: actions/checkout@v3 @@ -49,7 +49,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, windows-latest] + os: [ubuntu-20.04, windows-latest] python: ['3.6'] steps: @@ -58,19 +58,18 @@ jobs: with: path: ${{ env.special-working-directory-relative }} - # Install bundled libs using 3.6 even though you test it on other versions. - name: Use Python 3.6 - uses: actions/setup-python@v4 + uses: actions/setup-python@v3 with: python-version: '3.6' - - name: Update pip, install pipx and install wheel - run: python -m pip install -U pip pipx wheel + - name: Update pip, install nox and install wheel + run: python -m pip install -U pip nox wheel shell: bash # This will install libraries to a target directory. - name: Install bundled python libraries - run: pipx run nox --session install_old_bundled_libs + run: python -m nox --session install_bundled_libs shell: bash - name: Install Node @@ -83,16 +82,16 @@ jobs: - name: Install dependencies (npm ci) run: npm ci - # Now that the bundle is installed to target using python 3.7 + # Now that the bundle is installed to target using python 3.6 # switch back the python we want to test with - name: Use Python ${{ matrix.python }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v3 with: python-version: ${{ matrix.python }} # The new python may not have nox so install it again - - name: Update pip, install pipx and install wheel (again) - run: python -m pip install -U pip pipx wheel + - name: Update pip, install nox and install wheel (again) + run: python -m pip install -U pip nox wheel shell: bash - name: Start xvfb on Linux @@ -103,5 +102,5 @@ jobs: if: ${{ runner.os }} == 'Linux' - name: Run tests - run: pipx run nox --session tests + run: python -m nox --session tests shell: bash diff --git a/.vscodeignore b/.vscodeignore index 715f9162..cb1e5cf4 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -1,5 +1,6 @@ .vscode/** .vscode-test/** +build/** out/** node_modules/** src/** @@ -20,4 +21,4 @@ noxfile.py .pytest_cache/** .pylintrc **/requirements.txt -**/requirements.in \ No newline at end of file +**/requirements.in diff --git a/README.md b/README.md index 960278fc..4a67350f 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,37 @@ -# Debugpy extension for Visual Studio Code +# Python Debugger extension for Visual Studio Code -A [Visual Studio Code](https://code.visualstudio.com/) [extension](https://marketplace.visualstudio.com/VSCode) that supports Python debugging with debugpy. debugpy provides a seamless debugging experience by allowing you to set breakpoints, step through code, inspect variables, and perform other essential debugging tasks. The debugy extension offers debugging support for various types of Python applications including scripts, web applications, remote processes, and multi-threaded processes. +A [Visual Studio Code](https://code.visualstudio.com/) [extension](https://marketplace.visualstudio.com/VSCode) that supports Python debugging with debugpy. Python Debugger provides a seamless debugging experience by allowing you to set breakpoints, step through code, inspect variables, and perform other essential debugging tasks. The debugy extension offers debugging support for various types of Python applications including scripts, web applications, remote processes, and multi-threaded processes. Note: -- The Python extension offers the debugpy extension as an optional installation, including it during the setup process. +- The Python extension offers the python debugger extension as an optional installation, including it during the setup process. - This extension is supported for all [actively supported versions](https://devguide.python.org/#status-of-python-branches) of the Python language (i.e., Python >= 3.7). + +## Purpose + +The main intent of this extension is to offer: + +1. **Independence and Compatibility:** The Python Debugger extension aims to separate the debugging functionality from the main Python extension to prevent compatibility issues. This ensures that even as the Python extension drops support for older Python versions (e.g., Python 3.7), you can continue debugging projects with those versions without downgrading your Python extension. This allows you to access new features and bug fixes while keeping your debugging capabilities intact. + +2. **Platform-Specific Builds:** Unlike the main Python extension, which bundles all debugpy builds for various platforms into a single extension package, the Python Debugger extension provides a more streamlined approach: it delivers platform-specific builds, ensuring you only receive the components relevant to your specific operating system. This reduces download times and unnecessary overhead. + +3. **Feature Parity and Ongoing Updates:** This extension replicates all the functionality available in the main Python extension, and more. Going forward, any new debugger features will be added to this extension. In the future, the Python extension will no longer offer debugging support on its own, and we will transition all debugging support to this extension for all debugging functionality. + + ## Usage -Once installed in Visual Studio Code, debugpy will be automatically activated when you open a Python file. +Once installed in Visual Studio Code, python-debugger will be automatically activated when you open a Python file. -## Disabling the Debugpy extension -If you want to disable the Debugpy extension, you can [disable this extension](https://code.visualstudio.com/docs/editor/extension-marketplace#_disable-an-extension) per workspace in Visual Studio Code. +## Disabling the Python Debugger extension +If you want to disable the Python Debugger extension, you can [disable this extension](https://code.visualstudio.com/docs/editor/extension-marketplace#_disable-an-extension) per workspace in Visual Studio Code. ## Commands | Command | Description | | ---------------------- | --------------------------------- | -| Debugpy: viewOutput | Show the debugpy extension output. | -| Debugpy: clearCacheAndReload | Allows you to clear the global values set in the extension. | -| Debugpy: debugInTerminal | Allows you to debug a simple Python file in the terminal. | +| Python Debugger: viewOutput | Show the Python Debugger Extension output. | +| Python Debugger: clearCacheAndReload | Allows you to clear the global values set in the extension. | +| Python Debugger: debugInTerminal | Allows you to debug a simple Python file in the terminal. | ## Data and telemetry The Debubpy Extension for Visual Studio Code collects usage data and sends it to Microsoft to help improve our products and services. Read our [privacy statement](https://privacy.microsoft.com/privacystatement) to learn more. This extension respects the `telemetry.enableTelemetry` setting which you can learn more about at https://code.visualstudio.com/docs/supporting/faq#_how-to-disable-telemetry-reporting. diff --git a/build/azure-pipeline.pre-release.yml b/build/azure-pipeline.pre-release.yml index e7fd0a73..885ec391 100644 --- a/build/azure-pipeline.pre-release.yml +++ b/build/azure-pipeline.pre-release.yml @@ -28,10 +28,36 @@ extends: template: azure-pipelines/extension/pre-release.yml@templates parameters: l10nSourcePaths: ./src + buildPlatforms: + - name: Linux + packageArch: arm64 + vsceTarget: linux-arm64 + - name: Linux + packageArch: arm + vsceTarget: linux-armhf + - name: Linux + packageArch: x64 + vsceTarget: linux-x64 + - name: MacOS + packageArch: arm64 + vsceTarget: darwin-arm64 + - name: MacOS + packageArch: x64 + vsceTarget: darwin-x64 + - name: Windows + packageArch: arm + vsceTarget: win32-arm64 + - name: Windows + packageArch: ia32 + vsceTarget: win32-ia32 + - name: Windows + packageArch: x64 + vsceTarget: win32-x64 + buildSteps: - task: NodeTool@0 inputs: - versionSpec: '16.17.1' + versionSpec: '18.17.1' displayName: Select Node version - task: UsePythonVersion@0 @@ -47,14 +73,14 @@ 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 nox - displayName: Install wheel + - script: python -m pip install wheel nox + displayName: Install wheel and nox - - script: python -m nox --session install_old_bundled_libs + # update according packageArch + - script: python -m nox --session install_bundled_libs displayName: Install Python dependencies + env: + VSCETARGET: ${{ variables.VSCETARGET }} - script: python ./build/update_ext_version.py --for-publishing displayName: Update build number diff --git a/build/azure-pipeline.stable.yml b/build/azure-pipeline.stable.yml index b090a887..6b4f191c 100644 --- a/build/azure-pipeline.stable.yml +++ b/build/azure-pipeline.stable.yml @@ -24,11 +24,37 @@ extends: template: azure-pipelines/extension/stable.yml@templates parameters: l10nSourcePaths: ./src + buildPlatforms: + - name: Linux + packageArch: arm64 + vsceTarget: linux-arm64 + - name: Linux + packageArch: arm + vsceTarget: linux-armhf + - name: Linux + packageArch: x64 + vsceTarget: linux-x64 + - name: MacOS + packageArch: arm64 + vsceTarget: darwin-arm64 + - name: MacOS + packageArch: x64 + vsceTarget: darwin-x64 + - name: Windows + packageArch: arm + vsceTarget: win32-arm64 + - name: Windows + packageArch: ia32 + vsceTarget: win32-ia32 + - name: Windows + packageArch: x64 + vsceTarget: win32-x64 + publishExtension: ${{ parameters.publishExtension }} buildSteps: - task: NodeTool@0 inputs: - versionSpec: '16.17.1' + versionSpec: '18.17.1' displayName: Select Node version - task: UsePythonVersion@0 @@ -44,14 +70,14 @@ 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 nox - displayName: Install wheel + - script: python -m pip install wheel nox + displayName: Install wheel and nox - - script: python -m nox --session install_old_bundled_libs + # update according packageArch + - script: python -m nox --session install_bundled_libs displayName: Install Python dependencies + env: + VSCETARGET: ${{ variables.VSCETARGET }} - script: python ./build/update_ext_version.py --release --for-publishing displayName: Update build number diff --git a/debugpy_info.json b/debugpy_info.json new file mode 100644 index 00000000..810de854 --- /dev/null +++ b/debugpy_info.json @@ -0,0 +1,32 @@ +{ + "macOS": { + "url": "https://files.pythonhosted.org/packages/2a/ca/832a3448e66b70a08af6a15c2ac981affa8b83a3b158c8f63b68007f4e4b/debugpy-1.5.1-cp39-cp39-macosx_10_15_x86_64.whl", + "hash": { + "sha256": "01e98c594b3e66d529e40edf314f849cd1a21f7a013298df58cd8e263bf8e184" + } + }, + "win32": { + "url": "https://files.pythonhosted.org/packages/0e/b8/dc0acbf110d036badc8687a37d59e5212e4dffb294ca6ad863acee15e8b4/debugpy-1.5.1-cp39-cp39-win32.whl", + "hash": { + "sha256": "23df67fc56d59e386c342428a7953c2c06cc226d8525b11319153e96afb65b0c" + } + }, + "win64": { + "url": "https://files.pythonhosted.org/packages/d2/33/658e00eb31baeeeb9aaed8f21d5ccf10af5d745991aed5701826d4f84e67/debugpy-1.5.1-cp39-cp39-win_amd64.whl", + "hash": { + "sha256": "a2aa64f6d2ca7ded8a7e8a4e7cae3bc71866b09876b7b05cecad231779cb9156" + } + }, + "linux": { + "url": "https://files.pythonhosted.org/packages/19/8e/a6fd16be6b9cbe5b3e9884a30353a3fc0187be041a0b27bbd32d4010cb05/debugpy-1.5.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", + "hash": { + "sha256": "f73988422b17f071ad3c4383551ace1ba5ed810cbab5f9c362783d22d40a08dc" + } + }, + "any": { + "url": "https://files.pythonhosted.org/packages/39/01/aa7092efdfef184e9a213327c6916b7a1d697d08a5ae216907907da3526d/debugpy-1.5.1-py2.py3-none-any.whl", + "hash": { + "sha256": "194f95dd3e84568b5489aab5689a3a2c044e8fdc06f1890b8b4f70b6b89f2778" + } + } +} \ No newline at end of file diff --git a/noxfile.py b/noxfile.py index ac177106..4bf8b932 100644 --- a/noxfile.py +++ b/noxfile.py @@ -1,6 +1,7 @@ # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. """All the action we need during build""" +import hashlib import io import json import os @@ -12,26 +13,6 @@ import nox # pylint: disable=import-error -def _install_bundle(session: nox.Session, version="latest") -> None: - session.install( - "-t", - "./bundled/libs", - "--no-cache-dir", - "--implementation", - "py", - "--no-deps", - "--upgrade", - "-r", - "./requirements.txt", - ) - session.install("packaging") - _install_package(f"{os.getcwd()}/bundled/libs", "debugpy", version) - - -def _update_pip_packages(session: nox.Session) -> None: - session.run("pip-compile", "--generate-hashes", "--upgrade", "./requirements.in") - - @nox.session() def lint(session: nox.Session) -> None: """Runs linter and formatter checks on python files.""" @@ -58,88 +39,80 @@ def tests(session: nox.Session) -> None: session.run("npm", "run", "test") -def _get_package_data(package): - json_uri = f"https://registry.npmjs.org/{package}" - with url_lib.urlopen(json_uri) as response: - return json.loads(response.read()) - - -def _update_npm_packages(session: nox.Session) -> None: - pinned = { - "vscode-languageclient", - "@types/vscode", - "@types/node", - } - package_json_path = pathlib.Path(__file__).parent / "package.json" - package_json = json.loads(package_json_path.read_text(encoding="utf-8")) - - for package in package_json["dependencies"]: - if package not in pinned: - data = _get_package_data(package) - latest = "^" + data["dist-tags"]["latest"] - package_json["dependencies"][package] = latest - - for package in package_json["devDependencies"]: - if package not in pinned: - data = _get_package_data(package) - latest = "^" + data["dist-tags"]["latest"] - package_json["devDependencies"][package] = latest - - # Ensure engine matches the package - if ( - package_json["engines"]["vscode"] - != package_json["devDependencies"]["@types/vscode"] - ): - print( - "Please check VS Code engine version and @types/vscode version in package.json." - ) - - new_package_json = json.dumps(package_json, indent=4) - # JSON dumps uses \n for line ending on all platforms by default - if not new_package_json.endswith("\n"): - new_package_json += "\n" - package_json_path.write_text(new_package_json, encoding="utf-8") - - session.run("npm", "audit", "fix", external=True) - session.run("npm", "install", external=True) - - -def _setup_template_environment(session: nox.Session) -> None: - session.install("wheel", "pip-tools") - _update_pip_packages(session) - _install_bundle(session) - - -@nox.session(python="3.7") +@nox.session() def install_bundled_libs(session): """Installs the libraries that will be bundled with the extension.""" session.install("wheel") - _install_bundle(session) + session.install( + "-t", + "./bundled/libs", + "--no-cache-dir", + "--implementation", + "py", + "--no-deps", + "--require-hashes", + "--only-binary", + ":all:", + "-r", + "./requirements.txt", + ) + session.install("packaging") + debugpy_info_json_path = pathlib.Path(__file__).parent / "debugpy_info.json" + debugpy_info = json.loads(debugpy_info_json_path.read_text(encoding="utf-8")) + + target = os.environ.get("VSCETARGET", "") + print("target:", target) + if "darwin" in target: + download_url(debugpy_info["macOS"]) + elif "win32-ia32" == target: + download_url(debugpy_info["win32"]) + elif "win32-x64" == target: + download_url(debugpy_info["win64"]) + elif "linux-x64" == target: + download_url(debugpy_info["linux"]) + else: + download_url(debugpy_info["any"]) -@nox.session(python="3.6") -def install_old_bundled_libs(session): - """Installs the libraries that will be bundled with the extension.""" - session.install("wheel") - _install_bundle(session, "1.5.1") +def download_url(value): + with url_lib.urlopen(value["url"]) as response: + data = response.read() + hash_algorithm, hash_value = [ + (key, value) for key, value in value["hash"].items() + ][0] + if hashlib.new(hash_algorithm, data).hexdigest() != hash_value: + raise ValueError("Failed hash verification for {}.".format(value["url"])) -@nox.session(python="3.7") -def setup(session: nox.Session) -> None: - """Sets up the extension for development.""" - _setup_template_environment(session) + print("Download: ", value["url"]) + with zipfile.ZipFile(io.BytesIO(data), "r") as wheel: + libs_dir = pathlib.Path.cwd() / "bundled" / "libs" + for zip_info in wheel.infolist(): + print("\t" + zip_info.filename) + wheel.extract(zip_info.filename, libs_dir) @nox.session() -def update_packages(session: nox.Session) -> None: - """Update pip and npm packages.""" - session.install("wheel", "pip-tools") - _update_pip_packages(session) - _update_npm_packages(session) +def update_build_number(session: nox.Session) -> None: + """Updates build number for the extension.""" + if not len(session.posargs): + session.log("No updates to package version") + return + + package_json_path = pathlib.Path(__file__).parent / "package.json" + session.log(f"Reading package.json at: {package_json_path}") + package_json = json.loads(package_json_path.read_text(encoding="utf-8")) -def _contains(s, parts=()): - return any(p for p in parts if p in s) + parts = re.split(r"\.|-", package_json["version"]) + major, minor = parts[:2] + + version = f"{major}.{minor}.{session.posargs[0]}" + version = version if len(parts) == 3 else f"{version}-{''.join(parts[3:])}" + + session.log(f"Updating version from {package_json['version']} to {version}") + package_json["version"] = version + package_json_path.write_text(json.dumps(package_json, indent=4), encoding="utf-8") def _get_pypi_package_data(package_name): @@ -150,59 +123,36 @@ def _get_pypi_package_data(package_name): return json.loads(response.read()) -def _get_urls(data, version): - return list( - r["url"] for r in data["releases"][version] if _contains(r["url"], ("cp37",)) - ) - - -def _download_and_extract(root, url): - if "manylinux" in url or "macosx" in url or "win_amd64" in url: - root = os.getcwd() if root is None or root == "." else root - print(url) - with url_lib.urlopen(url) as response: - data = response.read() - with zipfile.ZipFile(io.BytesIO(data), "r") as wheel: - for zip_info in wheel.infolist(): - # Ignore dist info since we are merging multiple wheels - if ".dist-info/" in zip_info.filename: - continue - print("\t" + zip_info.filename) - wheel.extract(zip_info.filename, root) - - -def _install_package(root, package_name, version="latest"): +def _get_debugpy_info(version="latest", platform="none-any", cp="cp311"): from packaging.version import parse as version_parser - data = _get_pypi_package_data(package_name) + data = _get_pypi_package_data("debugpy") if version == "latest": use_version = max(data["releases"].keys(), key=version_parser) else: use_version = version - for url in _get_urls(data, use_version): - _download_and_extract(root, url) - - -@nox.session() -def update_build_number(session: nox.Session) -> None: - """Updates build number for the extension.""" - if len(session.posargs) == 0: - session.log("No updates to package version") - return - - package_json_path = pathlib.Path(__file__).parent / "package.json" - session.log(f"Reading package.json at: {package_json_path}") - - package_json = json.loads(package_json_path.read_text(encoding="utf-8")) - - parts = re.split("\\.|-", package_json["version"]) - major, minor = parts[:2] - - version = f"{major}.{minor}.{session.posargs[0]}" - version = version if len(parts) == 3 else f"{version}-{''.join(parts[3:])}" - - session.log(f"Updating version from {package_json['version']} to {version}") - package_json["version"] = version - package_json_path.write_text(json.dumps(package_json, indent=4), encoding="utf-8") + return list( + {"url": r["url"], "hash": {"sha256": r["digests"]["sha256"]}} + for r in data["releases"][use_version] + if f"{cp}-{platform}" in r["url"] or f"py3-{platform}" in r["url"] + )[0] + + +@nox.session +@nox.parametrize("version", ["1.5.1", "1.7.0", "latest"]) +@nox.parametrize("cp", ["cp39", "cp311"]) +def create_debugpy_json(session: nox.Session, version="1.7.0", cp="cp311"): + platforms = [ + ("macOS", "macosx"), + ("win32", "win32"), + ("win64", "win_amd64"), + ("linux", "manylinux"), + ("any", "none-any"), + ] + debugpy_info_json_path = pathlib.Path(__file__).parent / "debugpy_info.json" + debugpy_info = {p: _get_debugpy_info(version, id, cp) for p, id in platforms} + debugpy_info_json_path.write_text( + json.dumps(debugpy_info, indent=4), encoding="utf-8" + ) diff --git a/package-lock.json b/package-lock.json index ae18557d..3e219150 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,15 @@ { "name": "debugpy", - "version": "2023.1.0-dev", + "version": "2023.3.0-dev", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "debugpy", - "version": "2023.1.0-dev", + "version": "2023.3.0-dev", "license": "MIT", "dependencies": { - "@vscode/extension-telemetry": "^0.7.7", + "@vscode/extension-telemetry": "^0.8.5", "fs-extra": "^11.1.0", "iconv-lite": "^0.6.3", "inversify": "^6.0.1", @@ -27,27 +27,27 @@ "@types/glob": "^7.2.0", "@types/lodash": "^4.14.191", "@types/mocha": "^10.0.1", - "@types/node": "16.x", + "@types/node": "18.x", "@types/semver": "^7.3.13", "@types/sinon": "^10.0.13", "@types/vscode": "^1.78.0", "@typescript-eslint/eslint-plugin": "^5.31.0", - "@typescript-eslint/parser": "^5.31.0", + "@typescript-eslint/parser": "^5.62.0", "@vscode/test-electron": "^2.1.5", "@vscode/vsce": "^2.19.0", "chai": "^4.3.7", "chai-as-promised": "^7.1.1", - "eslint": "^8.20.0", + "eslint": "^8.50.0", "glob": "^8.0.3", "mocha": "^10.0.0", - "prettier": "^2.7.1", + "prettier": "^3.0.3", "rewiremock": "^3.13.0", "semver": "^7.5.4", "sinon": "^15.0.2", "ts-loader": "^9.3.1", "ts-mockito": "^2.6.1", "typemoq": "^2.1.0", - "typescript": "^5.1.3", + "typescript": "^5.2.2", "vscode-test": "^1.6.1", "webpack": "^5.87.0", "webpack-cli": "^5.1.4" @@ -56,6 +56,15 @@ "vscode": "^1.78.0" } }, + "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/@azure/abort-controller": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", @@ -68,31 +77,33 @@ } }, "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-rest-pipeline": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.11.0.tgz", - "integrity": "sha512-nB4KXl6qAyJmBVLWA7SakT4tzpYZTCk4pvRBeI+Ye0WYSOrlTqlMhc4MSS/8atD3ufeYWdkN380LLoXlUUzThw==", + "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.4.0", "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.3.0", + "@azure/core-util": "^1.0.0", "@azure/logger": "^1.0.0", "form-data": "^4.0.0", "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", - "tslib": "^2.2.0" + "tslib": "^2.2.0", + "uuid": "^8.3.0" }, "engines": { "node": ">=14.0.0" @@ -131,9 +142,9 @@ } }, "node_modules/@azure/core-util": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.3.2.tgz", - "integrity": "sha512-2bECOUh88RvL1pMZTcc6OzfobBeWDBf5oBbhjIhT1MV9otMVWCzpOJkkiKtrnO88y5GGBelgY8At73KGAdbkeQ==", + "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" @@ -153,6 +164,22 @@ "node": ">=14.0.0" } }, + "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/@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", @@ -178,23 +205,23 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.2", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -210,18 +237,18 @@ } }, "node_modules/@eslint/js": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.42.0.tgz", - "integrity": "sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz", + "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -310,56 +337,119 @@ } }, "node_modules/@microsoft/1ds-core-js": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/@microsoft/1ds-core-js/-/1ds-core-js-3.2.12.tgz", - "integrity": "sha512-cHpxZZ+pbtOyqFMFB/c1COpaOE3VPFU6phYVHVvOA9DvoeMZfI/Xrxaj7B/vfq4MmkiE7nOAPhv5ZRn+i6OogA==", + "version": "3.2.14", + "resolved": "https://registry.npmjs.org/@microsoft/1ds-core-js/-/1ds-core-js-3.2.14.tgz", + "integrity": "sha512-UW1YrUTPuvXmAarzqVSeYU1vwTzxCCZdd+ANcf/SDkxm53mCCgxSodVP9yrxtGOQdKhE9Y3rZdETRSvBBdKdXg==", "dependencies": { - "@microsoft/applicationinsights-core-js": "2.8.14", + "@microsoft/applicationinsights-core-js": "2.8.16", "@microsoft/applicationinsights-shims": "^2.0.2", "@microsoft/dynamicproto-js": "^1.1.7" } }, "node_modules/@microsoft/1ds-post-js": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/@microsoft/1ds-post-js/-/1ds-post-js-3.2.12.tgz", - "integrity": "sha512-vhIVYg4FzBfwtM8tBqDUq3xU+cFu6SQ7biuJHtQpd5PVjDgvAovVOMRF1khsZE/k2rttRRBpmBgNEqG3Ptoysw==", + "version": "3.2.14", + "resolved": "https://registry.npmjs.org/@microsoft/1ds-post-js/-/1ds-post-js-3.2.14.tgz", + "integrity": "sha512-pXTfyW8SI6LS2r92W2Zaxl/YjJCHTEX9ej/GdabtlMAikGGgAlEsMlk5a4SJ3BI3K8sDUSGi+oTmJ1FtVes+bQ==", "dependencies": { - "@microsoft/1ds-core-js": "3.2.12", + "@microsoft/1ds-core-js": "3.2.14", "@microsoft/applicationinsights-shims": "^2.0.2", "@microsoft/dynamicproto-js": "^1.1.7" } }, "node_modules/@microsoft/applicationinsights-channel-js": { - "version": "2.8.14", - "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-2.8.14.tgz", - "integrity": "sha512-z1AG6lqV3ACtdUXnT0Ubj48BAZ8K01sFsYdWgroSXpw2lYUlXAzdx3tK8zpaqEXSEhok8CWTZki7aunHzkZHSw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-3.0.3.tgz", + "integrity": "sha512-CWcJQCMKU3CxWLFIE8iPa3G5KB3v2RFkAvPICfY8/fwWZq4tWY7zosgvRPDZ+dIkz8Z/+CMy0+KblYzIKDdG4A==", "dependencies": { - "@microsoft/applicationinsights-common": "2.8.14", - "@microsoft/applicationinsights-core-js": "2.8.14", - "@microsoft/applicationinsights-shims": "2.0.2", - "@microsoft/dynamicproto-js": "^1.1.9" + "@microsoft/applicationinsights-common": "3.0.3", + "@microsoft/applicationinsights-core-js": "3.0.3", + "@microsoft/applicationinsights-shims": "3.0.1", + "@microsoft/dynamicproto-js": "^2.0.2", + "@nevware21/ts-async": ">= 0.3.0 < 2.x", + "@nevware21/ts-utils": ">= 0.10.1 < 2.x" + }, + "peerDependencies": { + "tslib": "*" + } + }, + "node_modules/@microsoft/applicationinsights-channel-js/node_modules/@microsoft/applicationinsights-core-js": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.3.tgz", + "integrity": "sha512-ymtdPHgUhCwIwQZx2ZN3Xw3cq+Z5KHzGmFV8QvURSdUzfaHbjYcHXIQkEZbgCCGOTMLtx9lZqP7J1gbBy0O8GQ==", + "dependencies": { + "@microsoft/applicationinsights-shims": "3.0.1", + "@microsoft/dynamicproto-js": "^2.0.2", + "@nevware21/ts-async": ">= 0.3.0 < 2.x", + "@nevware21/ts-utils": ">= 0.10.1 < 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": "2.8.14", - "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-common/-/applicationinsights-common-2.8.14.tgz", - "integrity": "sha512-1xjJvyyRN7tb5ahOTkEGGsvw8zvqmS714y3+1m7ooKHFfxO0wX+eYOU/kke74BCY0nJ/pocB/6hjWZOgwvbHig==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-common/-/applicationinsights-common-3.0.3.tgz", + "integrity": "sha512-GwnerHHPexry2CMTr6gP2Rjm0e3rgVXZzFCbrxcoOQk8MqrEFDWur6Xs66FwXpGFnY3KV3Zsujkfcl0oePs4Cg==", "dependencies": { - "@microsoft/applicationinsights-core-js": "2.8.14", - "@microsoft/applicationinsights-shims": "2.0.2", - "@microsoft/dynamicproto-js": "^1.1.9" + "@microsoft/applicationinsights-core-js": "3.0.3", + "@microsoft/applicationinsights-shims": "3.0.1", + "@microsoft/dynamicproto-js": "^2.0.2", + "@nevware21/ts-utils": ">= 0.10.1 < 2.x" }, "peerDependencies": { "tslib": "*" } }, + "node_modules/@microsoft/applicationinsights-common/node_modules/@microsoft/applicationinsights-core-js": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.3.tgz", + "integrity": "sha512-ymtdPHgUhCwIwQZx2ZN3Xw3cq+Z5KHzGmFV8QvURSdUzfaHbjYcHXIQkEZbgCCGOTMLtx9lZqP7J1gbBy0O8GQ==", + "dependencies": { + "@microsoft/applicationinsights-shims": "3.0.1", + "@microsoft/dynamicproto-js": "^2.0.2", + "@nevware21/ts-async": ">= 0.3.0 < 2.x", + "@nevware21/ts-utils": ">= 0.10.1 < 2.x" + }, + "peerDependencies": { + "tslib": "*" + } + }, + "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": { + "@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.14", - "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-2.8.14.tgz", - "integrity": "sha512-XacWUHdjSHMUwdngMZBp0oiCBifD56CQK2Egu2PiBiF4xu2AO2yNCtWSXsQX2g5OkEhVwaEjfa/aH3WbpYxB1g==", + "version": "2.8.16", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-2.8.16.tgz", + "integrity": "sha512-pO5rR6UuiPymiHFj8XxNXhQgBSTvyHWygf+gdEVDh0xpUXYFO99bZe0Ux0D0HqYqVkJrRfXzL1Ocru6+S0x53Q==", "dependencies": { "@microsoft/applicationinsights-shims": "2.0.2", "@microsoft/dynamicproto-js": "^1.1.9" @@ -374,20 +464,52 @@ "integrity": "sha512-PoHEgsnmcqruLNHZ/amACqdJ6YYQpED0KSRe6J7gIJTtpZC1FfFU9b1fmDKDKtFoUSrPzEh1qzO3kmRZP0betg==" }, "node_modules/@microsoft/applicationinsights-web-basic": { - "version": "2.8.14", - "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-2.8.14.tgz", - "integrity": "sha512-R2mzg5NmCtLloq3lPQFmnlvjrPIqm3mWNYVy5ELJuOPZ7S6j9y7s4yHOzfXynmOziiQd+0q1j9pTth9aP9vo0g==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-3.0.3.tgz", + "integrity": "sha512-PCKfbCTJUbcyZnRzasxlYgV3L1ORVxpggRB1Uohx0rNyEyKPwk7lcCcFos11NEA+pn/XqZrZY5FYSdaLT45wNA==", "dependencies": { - "@microsoft/applicationinsights-channel-js": "2.8.14", - "@microsoft/applicationinsights-common": "2.8.14", - "@microsoft/applicationinsights-core-js": "2.8.14", - "@microsoft/applicationinsights-shims": "2.0.2", - "@microsoft/dynamicproto-js": "^1.1.9" + "@microsoft/applicationinsights-channel-js": "3.0.3", + "@microsoft/applicationinsights-common": "3.0.3", + "@microsoft/applicationinsights-core-js": "3.0.3", + "@microsoft/applicationinsights-shims": "3.0.1", + "@microsoft/dynamicproto-js": "^2.0.2", + "@nevware21/ts-async": ">= 0.3.0 < 2.x", + "@nevware21/ts-utils": ">= 0.10.1 < 2.x" }, "peerDependencies": { "tslib": "*" } }, + "node_modules/@microsoft/applicationinsights-web-basic/node_modules/@microsoft/applicationinsights-core-js": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.3.tgz", + "integrity": "sha512-ymtdPHgUhCwIwQZx2ZN3Xw3cq+Z5KHzGmFV8QvURSdUzfaHbjYcHXIQkEZbgCCGOTMLtx9lZqP7J1gbBy0O8GQ==", + "dependencies": { + "@microsoft/applicationinsights-shims": "3.0.1", + "@microsoft/dynamicproto-js": "^2.0.2", + "@nevware21/ts-async": ">= 0.3.0 < 2.x", + "@nevware21/ts-utils": ">= 0.10.1 < 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", @@ -398,6 +520,19 @@ "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/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -434,62 +569,80 @@ } }, "node_modules/@opentelemetry/api": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.1.tgz", - "integrity": "sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.6.0.tgz", + "integrity": "sha512-OWlrQAnWn9577PhVgqjUvMr1pg57Bc4jv0iL4w0PRuOSRvq67rvHW9Ie/dZVMvCzhSCB+UxhcY/PmCmFj33Q+g==", "engines": { "node": ">=8.0.0" } }, "node_modules/@opentelemetry/core": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.14.0.tgz", - "integrity": "sha512-MnMZ+sxsnlzloeuXL2nm5QcNczt/iO82UOeQQDHhV83F2fP3sgntW2evvtoxJki0MBLxEsh5ADD7PR/Hn5uzjw==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.17.0.tgz", + "integrity": "sha512-tfnl3h+UefCgx1aeN2xtrmr6BmdWGKXypk0pflQR0urFS40aE88trnkOMc2HTJZbMrqEEl4HsaBeFhwLVXsrJg==", "dependencies": { - "@opentelemetry/semantic-conventions": "1.14.0" + "@opentelemetry/semantic-conventions": "1.17.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" + "@opentelemetry/api": ">=1.0.0 <1.7.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": { + "@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.3.0" } }, "node_modules/@opentelemetry/resources": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.14.0.tgz", - "integrity": "sha512-qRfWIgBxxl3z47E036Aey0Lj2ZjlFb27Q7Xnj1y1z/P293RXJZGLtcfn/w8JF7v1Q2hs3SDGxz7Wb9Dko1YUQA==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.17.0.tgz", + "integrity": "sha512-+u0ciVnj8lhuL/qGRBPeVYvk7fL+H/vOddfvmOeJaA1KC+5/3UED1c9KoZQlRsNT5Kw1FaK8LkY2NVLYfOVZQw==", "dependencies": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0" + "@opentelemetry/core": "1.17.0", + "@opentelemetry/semantic-conventions": "1.17.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" + "@opentelemetry/api": ">=1.0.0 <1.7.0" } }, "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.14.0.tgz", - "integrity": "sha512-NzRGt3PS+HPKfQYMb6Iy8YYc5OKA73qDwci/6ujOIvyW9vcqBJSWbjZ8FeLEAmuatUB5WrRhEKu9b0sIiIYTrQ==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.17.0.tgz", + "integrity": "sha512-2T5HA1/1iE36Q9eg6D4zYlC4Y4GcycI1J6NsHPKZY9oWfAxWsoYnRlkPfUqyY5XVtocCo/xHpnJvGNHwzT70oQ==", "dependencies": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/resources": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0" + "@opentelemetry/core": "1.17.0", + "@opentelemetry/resources": "1.17.0", + "@opentelemetry/semantic-conventions": "1.17.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" + "@opentelemetry/api": ">=1.0.0 <1.7.0" } }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.14.0.tgz", - "integrity": "sha512-rJfCY8rCWz3cb4KI6pEofnytvMPuj3YLQwoscCCYZ5DkdiPjo15IQ0US7+mjcWy9H3fcZIzf2pbJZ7ck/h4tug==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.17.0.tgz", + "integrity": "sha512-+fguCd2d8d2qruk0H0DsCEy2CTK3t0Tugg7MhZ/UQMvmewbZLNnJ6heSYyzIZWG5IPfAXzoj4f4F/qpM7l4VBA==", "engines": { "node": ">=14" } @@ -642,9 +795,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "16.18.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.35.tgz", - "integrity": "sha512-yqU2Rf94HFZqgHf6Tuyc/IqVD0l3U91KjvypSr1GtJKyrnl6L/kfnxVqN4QOwcF5Zx9tO/HKK+fozGr5AtqA+g==", + "version": "18.18.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.3.tgz", + "integrity": "sha512-0OVfGupTl3NBFr8+iXpfZ8NR7jfFO+P1Q+IO/q0wbo02wYkP5gy36phojeYWpLQ6WAMjl+VfmqUk2YbUfp0irA==", "dev": true }, "node_modules/@types/semver": { @@ -653,6 +806,11 @@ "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", "dev": true }, + "node_modules/@types/shimmer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.0.3.tgz", + "integrity": "sha512-F/IjUGnV6pIN7R4ZV4npHJVoNtaLZWvb+2/9gctxjb99wkpI7Ozg8VPogwDiTRyjLwZXAYxjvdg1KS8LTHKdDA==" + }, "node_modules/@types/sinon": { "version": "10.0.15", "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.15.tgz", @@ -709,14 +867,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.59.11", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.11.tgz", - "integrity": "sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.59.11", - "@typescript-eslint/types": "5.59.11", - "@typescript-eslint/typescript-estree": "5.59.11", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", "debug": "^4.3.4" }, "engines": { @@ -735,6 +893,80 @@ } } }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.59.11", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.11.tgz", @@ -863,14 +1095,14 @@ } }, "node_modules/@vscode/extension-telemetry": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/@vscode/extension-telemetry/-/extension-telemetry-0.7.7.tgz", - "integrity": "sha512-uW508BPjkWDBOKvvvSym3ZmGb7kHIiWaAfB/1PHzLz2x9TrC33CfjmFEI+CywIL/jBv4bqZxxjN4tfefB61F+g==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@vscode/extension-telemetry/-/extension-telemetry-0.8.5.tgz", + "integrity": "sha512-YFKANBT2F3qdWQstjcr40XX8BLsdKlKM7a7YPi/jNuMjuiPhb1Jn7YsDR3WZaVEzAqeqGy4gzXsFCBbuZ+L1Tg==", "dependencies": { - "@microsoft/1ds-core-js": "^3.2.9", - "@microsoft/1ds-post-js": "^3.2.9", - "@microsoft/applicationinsights-web-basic": "^2.8.11", - "applicationinsights": "2.5.0" + "@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": { "vscode": "^1.75.0" @@ -949,9 +1181,9 @@ } }, "node_modules/@vscode/vsce/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -1160,10 +1392,9 @@ "dev": true }, "node_modules/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, + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "bin": { "acorn": "bin/acorn" }, @@ -1175,7 +1406,6 @@ "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==", - "dev": true, "peerDependencies": { "acorn": "^8" } @@ -1269,21 +1499,23 @@ } }, "node_modules/applicationinsights": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-2.5.0.tgz", - "integrity": "sha512-6kIFmpANRok+6FhCOmO7ZZ/mh7fdNKn17BaT13cg/RV5roLPJlA6q8srWexayHd3MPcwMb9072e8Zp0P47s/pw==", - "dependencies": { - "@azure/core-auth": "^1.4.0", - "@azure/core-rest-pipeline": "^1.10.0", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-2.8.0.tgz", + "integrity": "sha512-pxVOdCPwXTal1A904yGmzOOUJrIeQ89xQir0ifr7fLl+e0BlGrZ1P4StcIDuEXk93gV9CGxGm5Mol8ksPk2mcg==", + "dependencies": { + "@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" @@ -1388,9 +1620,9 @@ } }, "node_modules/async-listener/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "bin": { "semver": "bin/semver" } @@ -2004,6 +2236,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/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -2043,9 +2280,9 @@ } }, "node_modules/cls-hooked/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "bin": { "semver": "bin/semver" } @@ -2346,29 +2583,21 @@ } }, "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": "*" } }, - "node_modules/diagnostic-channel/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, "node_modules/diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", @@ -2606,27 +2835,27 @@ } }, "node_modules/eslint": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.42.0.tgz", - "integrity": "sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz", + "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.42.0", - "@humanwhocodes/config-array": "^0.11.10", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.50.0", + "@humanwhocodes/config-array": "^0.11.11", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -2636,7 +2865,6 @@ "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", @@ -2646,9 +2874,8 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { @@ -2675,9 +2902,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2748,9 +2975,9 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -2794,12 +3021,12 @@ } }, "node_modules/espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" }, @@ -3155,8 +3382,7 @@ "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 + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "node_modules/get-caller-file": { "version": "2.0.5", @@ -3168,9 +3394,9 @@ } }, "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": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "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": "*" @@ -3257,9 +3483,9 @@ } }, "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.22.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", + "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -3312,7 +3538,6 @@ "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" }, @@ -3556,6 +3781,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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", @@ -3637,7 +3873,6 @@ "version": "2.12.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", - "dev": true, "dependencies": { "has": "^1.0.3" }, @@ -4413,6 +4648,11 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "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/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -4589,17 +4829,17 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.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", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -4691,9 +4931,9 @@ } }, "node_modules/parse-semver/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -4760,8 +5000,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-to-regexp": { "version": "1.8.0", @@ -4947,15 +5186,15 @@ } }, "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", "dev": true, "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" @@ -5173,11 +5412,23 @@ "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/resolve": { "version": "1.22.2", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, "dependencies": { "is-core-module": "^2.11.0", "path-parse": "^1.0.7", @@ -5657,7 +5908,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" }, @@ -5942,9 +6192,9 @@ } }, "node_modules/tslib": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -6055,9 +6305,9 @@ } }, "node_modules/typescript": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", - "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -6190,6 +6440,14 @@ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", @@ -6454,15 +6712,6 @@ "wipe-node-cache": "^2.1.0" } }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/workerpool": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", @@ -6645,6 +6894,12 @@ } }, "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 + }, "@azure/abort-controller": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", @@ -6654,28 +6909,30 @@ } }, "@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" } }, "@azure/core-rest-pipeline": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.11.0.tgz", - "integrity": "sha512-nB4KXl6qAyJmBVLWA7SakT4tzpYZTCk4pvRBeI+Ye0WYSOrlTqlMhc4MSS/8atD3ufeYWdkN380LLoXlUUzThw==", + "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.4.0", "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.3.0", + "@azure/core-util": "^1.0.0", "@azure/logger": "^1.0.0", "form-data": "^4.0.0", "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", - "tslib": "^2.2.0" + "tslib": "^2.2.0", + "uuid": "^8.3.0" }, "dependencies": { "@tootallnate/once": { @@ -6704,9 +6961,9 @@ } }, "@azure/core-util": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.3.2.tgz", - "integrity": "sha512-2bECOUh88RvL1pMZTcc6OzfobBeWDBf5oBbhjIhT1MV9otMVWCzpOJkkiKtrnO88y5GGBelgY8At73KGAdbkeQ==", + "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" @@ -6720,6 +6977,19 @@ "tslib": "^2.2.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" + } + }, "@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", @@ -6736,20 +7006,20 @@ } }, "@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", "dev": true }, "@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.2", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -6759,15 +7029,15 @@ } }, "@eslint/js": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.42.0.tgz", - "integrity": "sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz", + "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==", "dev": true }, "@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", @@ -6837,50 +7107,111 @@ } }, "@microsoft/1ds-core-js": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/@microsoft/1ds-core-js/-/1ds-core-js-3.2.12.tgz", - "integrity": "sha512-cHpxZZ+pbtOyqFMFB/c1COpaOE3VPFU6phYVHVvOA9DvoeMZfI/Xrxaj7B/vfq4MmkiE7nOAPhv5ZRn+i6OogA==", + "version": "3.2.14", + "resolved": "https://registry.npmjs.org/@microsoft/1ds-core-js/-/1ds-core-js-3.2.14.tgz", + "integrity": "sha512-UW1YrUTPuvXmAarzqVSeYU1vwTzxCCZdd+ANcf/SDkxm53mCCgxSodVP9yrxtGOQdKhE9Y3rZdETRSvBBdKdXg==", "requires": { - "@microsoft/applicationinsights-core-js": "2.8.14", + "@microsoft/applicationinsights-core-js": "2.8.16", "@microsoft/applicationinsights-shims": "^2.0.2", "@microsoft/dynamicproto-js": "^1.1.7" } }, "@microsoft/1ds-post-js": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/@microsoft/1ds-post-js/-/1ds-post-js-3.2.12.tgz", - "integrity": "sha512-vhIVYg4FzBfwtM8tBqDUq3xU+cFu6SQ7biuJHtQpd5PVjDgvAovVOMRF1khsZE/k2rttRRBpmBgNEqG3Ptoysw==", + "version": "3.2.14", + "resolved": "https://registry.npmjs.org/@microsoft/1ds-post-js/-/1ds-post-js-3.2.14.tgz", + "integrity": "sha512-pXTfyW8SI6LS2r92W2Zaxl/YjJCHTEX9ej/GdabtlMAikGGgAlEsMlk5a4SJ3BI3K8sDUSGi+oTmJ1FtVes+bQ==", "requires": { - "@microsoft/1ds-core-js": "3.2.12", + "@microsoft/1ds-core-js": "3.2.14", "@microsoft/applicationinsights-shims": "^2.0.2", "@microsoft/dynamicproto-js": "^1.1.7" } }, "@microsoft/applicationinsights-channel-js": { - "version": "2.8.14", - "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-2.8.14.tgz", - "integrity": "sha512-z1AG6lqV3ACtdUXnT0Ubj48BAZ8K01sFsYdWgroSXpw2lYUlXAzdx3tK8zpaqEXSEhok8CWTZki7aunHzkZHSw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-3.0.3.tgz", + "integrity": "sha512-CWcJQCMKU3CxWLFIE8iPa3G5KB3v2RFkAvPICfY8/fwWZq4tWY7zosgvRPDZ+dIkz8Z/+CMy0+KblYzIKDdG4A==", "requires": { - "@microsoft/applicationinsights-common": "2.8.14", - "@microsoft/applicationinsights-core-js": "2.8.14", - "@microsoft/applicationinsights-shims": "2.0.2", - "@microsoft/dynamicproto-js": "^1.1.9" + "@microsoft/applicationinsights-common": "3.0.3", + "@microsoft/applicationinsights-core-js": "3.0.3", + "@microsoft/applicationinsights-shims": "3.0.1", + "@microsoft/dynamicproto-js": "^2.0.2", + "@nevware21/ts-async": ">= 0.3.0 < 2.x", + "@nevware21/ts-utils": ">= 0.10.1 < 2.x" + }, + "dependencies": { + "@microsoft/applicationinsights-core-js": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.3.tgz", + "integrity": "sha512-ymtdPHgUhCwIwQZx2ZN3Xw3cq+Z5KHzGmFV8QvURSdUzfaHbjYcHXIQkEZbgCCGOTMLtx9lZqP7J1gbBy0O8GQ==", + "requires": { + "@microsoft/applicationinsights-shims": "3.0.1", + "@microsoft/dynamicproto-js": "^2.0.2", + "@nevware21/ts-async": ">= 0.3.0 < 2.x", + "@nevware21/ts-utils": ">= 0.10.1 < 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.14", - "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-common/-/applicationinsights-common-2.8.14.tgz", - "integrity": "sha512-1xjJvyyRN7tb5ahOTkEGGsvw8zvqmS714y3+1m7ooKHFfxO0wX+eYOU/kke74BCY0nJ/pocB/6hjWZOgwvbHig==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-common/-/applicationinsights-common-3.0.3.tgz", + "integrity": "sha512-GwnerHHPexry2CMTr6gP2Rjm0e3rgVXZzFCbrxcoOQk8MqrEFDWur6Xs66FwXpGFnY3KV3Zsujkfcl0oePs4Cg==", "requires": { - "@microsoft/applicationinsights-core-js": "2.8.14", - "@microsoft/applicationinsights-shims": "2.0.2", - "@microsoft/dynamicproto-js": "^1.1.9" + "@microsoft/applicationinsights-core-js": "3.0.3", + "@microsoft/applicationinsights-shims": "3.0.1", + "@microsoft/dynamicproto-js": "^2.0.2", + "@nevware21/ts-utils": ">= 0.10.1 < 2.x" + }, + "dependencies": { + "@microsoft/applicationinsights-core-js": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.3.tgz", + "integrity": "sha512-ymtdPHgUhCwIwQZx2ZN3Xw3cq+Z5KHzGmFV8QvURSdUzfaHbjYcHXIQkEZbgCCGOTMLtx9lZqP7J1gbBy0O8GQ==", + "requires": { + "@microsoft/applicationinsights-shims": "3.0.1", + "@microsoft/dynamicproto-js": "^2.0.2", + "@nevware21/ts-async": ">= 0.3.0 < 2.x", + "@nevware21/ts-utils": ">= 0.10.1 < 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.14", - "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-2.8.14.tgz", - "integrity": "sha512-XacWUHdjSHMUwdngMZBp0oiCBifD56CQK2Egu2PiBiF4xu2AO2yNCtWSXsQX2g5OkEhVwaEjfa/aH3WbpYxB1g==", + "version": "2.8.16", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-2.8.16.tgz", + "integrity": "sha512-pO5rR6UuiPymiHFj8XxNXhQgBSTvyHWygf+gdEVDh0xpUXYFO99bZe0Ux0D0HqYqVkJrRfXzL1Ocru6+S0x53Q==", "requires": { "@microsoft/applicationinsights-shims": "2.0.2", "@microsoft/dynamicproto-js": "^1.1.9" @@ -6892,15 +7223,46 @@ "integrity": "sha512-PoHEgsnmcqruLNHZ/amACqdJ6YYQpED0KSRe6J7gIJTtpZC1FfFU9b1fmDKDKtFoUSrPzEh1qzO3kmRZP0betg==" }, "@microsoft/applicationinsights-web-basic": { - "version": "2.8.14", - "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-2.8.14.tgz", - "integrity": "sha512-R2mzg5NmCtLloq3lPQFmnlvjrPIqm3mWNYVy5ELJuOPZ7S6j9y7s4yHOzfXynmOziiQd+0q1j9pTth9aP9vo0g==", - "requires": { - "@microsoft/applicationinsights-channel-js": "2.8.14", - "@microsoft/applicationinsights-common": "2.8.14", - "@microsoft/applicationinsights-core-js": "2.8.14", - "@microsoft/applicationinsights-shims": "2.0.2", - "@microsoft/dynamicproto-js": "^1.1.9" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-3.0.3.tgz", + "integrity": "sha512-PCKfbCTJUbcyZnRzasxlYgV3L1ORVxpggRB1Uohx0rNyEyKPwk7lcCcFos11NEA+pn/XqZrZY5FYSdaLT45wNA==", + "requires": { + "@microsoft/applicationinsights-channel-js": "3.0.3", + "@microsoft/applicationinsights-common": "3.0.3", + "@microsoft/applicationinsights-core-js": "3.0.3", + "@microsoft/applicationinsights-shims": "3.0.1", + "@microsoft/dynamicproto-js": "^2.0.2", + "@nevware21/ts-async": ">= 0.3.0 < 2.x", + "@nevware21/ts-utils": ">= 0.10.1 < 2.x" + }, + "dependencies": { + "@microsoft/applicationinsights-core-js": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.3.tgz", + "integrity": "sha512-ymtdPHgUhCwIwQZx2ZN3Xw3cq+Z5KHzGmFV8QvURSdUzfaHbjYcHXIQkEZbgCCGOTMLtx9lZqP7J1gbBy0O8GQ==", + "requires": { + "@microsoft/applicationinsights-shims": "3.0.1", + "@microsoft/dynamicproto-js": "^2.0.2", + "@nevware21/ts-async": ">= 0.3.0 < 2.x", + "@nevware21/ts-utils": ">= 0.10.1 < 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": { @@ -6913,6 +7275,19 @@ "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==" + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -6940,41 +7315,53 @@ } }, "@opentelemetry/api": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.1.tgz", - "integrity": "sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA==" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.6.0.tgz", + "integrity": "sha512-OWlrQAnWn9577PhVgqjUvMr1pg57Bc4jv0iL4w0PRuOSRvq67rvHW9Ie/dZVMvCzhSCB+UxhcY/PmCmFj33Q+g==" }, "@opentelemetry/core": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.14.0.tgz", - "integrity": "sha512-MnMZ+sxsnlzloeuXL2nm5QcNczt/iO82UOeQQDHhV83F2fP3sgntW2evvtoxJki0MBLxEsh5ADD7PR/Hn5uzjw==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.17.0.tgz", + "integrity": "sha512-tfnl3h+UefCgx1aeN2xtrmr6BmdWGKXypk0pflQR0urFS40aE88trnkOMc2HTJZbMrqEEl4HsaBeFhwLVXsrJg==", + "requires": { + "@opentelemetry/semantic-conventions": "1.17.0" + } + }, + "@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.14.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.14.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.14.0.tgz", - "integrity": "sha512-qRfWIgBxxl3z47E036Aey0Lj2ZjlFb27Q7Xnj1y1z/P293RXJZGLtcfn/w8JF7v1Q2hs3SDGxz7Wb9Dko1YUQA==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.17.0.tgz", + "integrity": "sha512-+u0ciVnj8lhuL/qGRBPeVYvk7fL+H/vOddfvmOeJaA1KC+5/3UED1c9KoZQlRsNT5Kw1FaK8LkY2NVLYfOVZQw==", "requires": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0" + "@opentelemetry/core": "1.17.0", + "@opentelemetry/semantic-conventions": "1.17.0" } }, "@opentelemetry/sdk-trace-base": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.14.0.tgz", - "integrity": "sha512-NzRGt3PS+HPKfQYMb6Iy8YYc5OKA73qDwci/6ujOIvyW9vcqBJSWbjZ8FeLEAmuatUB5WrRhEKu9b0sIiIYTrQ==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.17.0.tgz", + "integrity": "sha512-2T5HA1/1iE36Q9eg6D4zYlC4Y4GcycI1J6NsHPKZY9oWfAxWsoYnRlkPfUqyY5XVtocCo/xHpnJvGNHwzT70oQ==", "requires": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/resources": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0" + "@opentelemetry/core": "1.17.0", + "@opentelemetry/resources": "1.17.0", + "@opentelemetry/semantic-conventions": "1.17.0" } }, "@opentelemetry/semantic-conventions": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.14.0.tgz", - "integrity": "sha512-rJfCY8rCWz3cb4KI6pEofnytvMPuj3YLQwoscCCYZ5DkdiPjo15IQ0US7+mjcWy9H3fcZIzf2pbJZ7ck/h4tug==" + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.17.0.tgz", + "integrity": "sha512-+fguCd2d8d2qruk0H0DsCEy2CTK3t0Tugg7MhZ/UQMvmewbZLNnJ6heSYyzIZWG5IPfAXzoj4f4F/qpM7l4VBA==" }, "@sinonjs/commons": { "version": "3.0.0", @@ -7123,9 +7510,9 @@ "dev": true }, "@types/node": { - "version": "16.18.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.35.tgz", - "integrity": "sha512-yqU2Rf94HFZqgHf6Tuyc/IqVD0l3U91KjvypSr1GtJKyrnl6L/kfnxVqN4QOwcF5Zx9tO/HKK+fozGr5AtqA+g==", + "version": "18.18.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.3.tgz", + "integrity": "sha512-0OVfGupTl3NBFr8+iXpfZ8NR7jfFO+P1Q+IO/q0wbo02wYkP5gy36phojeYWpLQ6WAMjl+VfmqUk2YbUfp0irA==", "dev": true }, "@types/semver": { @@ -7134,6 +7521,11 @@ "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", "dev": true }, + "@types/shimmer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.0.3.tgz", + "integrity": "sha512-F/IjUGnV6pIN7R4ZV4npHJVoNtaLZWvb+2/9gctxjb99wkpI7Ozg8VPogwDiTRyjLwZXAYxjvdg1KS8LTHKdDA==" + }, "@types/sinon": { "version": "10.0.15", "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.15.tgz", @@ -7174,15 +7566,58 @@ } }, "@typescript-eslint/parser": { - "version": "5.59.11", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.11.tgz", - "integrity": "sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.59.11", - "@typescript-eslint/types": "5.59.11", - "@typescript-eslint/typescript-estree": "5.59.11", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", "debug": "^4.3.4" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + } + }, + "@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + } + } } }, "@typescript-eslint/scope-manager": { @@ -7255,14 +7690,14 @@ } }, "@vscode/extension-telemetry": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/@vscode/extension-telemetry/-/extension-telemetry-0.7.7.tgz", - "integrity": "sha512-uW508BPjkWDBOKvvvSym3ZmGb7kHIiWaAfB/1PHzLz2x9TrC33CfjmFEI+CywIL/jBv4bqZxxjN4tfefB61F+g==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@vscode/extension-telemetry/-/extension-telemetry-0.8.5.tgz", + "integrity": "sha512-YFKANBT2F3qdWQstjcr40XX8BLsdKlKM7a7YPi/jNuMjuiPhb1Jn7YsDR3WZaVEzAqeqGy4gzXsFCBbuZ+L1Tg==", "requires": { - "@microsoft/1ds-core-js": "^3.2.9", - "@microsoft/1ds-post-js": "^3.2.9", - "@microsoft/applicationinsights-web-basic": "^2.8.11", - "applicationinsights": "2.5.0" + "@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/test-electron": { @@ -7321,9 +7756,9 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -7508,16 +7943,14 @@ "dev": true }, "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 + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" }, "acorn-import-assertions": { "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==", - "dev": true, "requires": {} }, "acorn-jsx": { @@ -7586,21 +8019,23 @@ } }, "applicationinsights": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-2.5.0.tgz", - "integrity": "sha512-6kIFmpANRok+6FhCOmO7ZZ/mh7fdNKn17BaT13cg/RV5roLPJlA6q8srWexayHd3MPcwMb9072e8Zp0P47s/pw==", - "requires": { - "@azure/core-auth": "^1.4.0", - "@azure/core-rest-pipeline": "^1.10.0", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-2.8.0.tgz", + "integrity": "sha512-pxVOdCPwXTal1A904yGmzOOUJrIeQ89xQir0ifr7fLl+e0BlGrZ1P4StcIDuEXk93gV9CGxGm5Mol8ksPk2mcg==", + "requires": { + "@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" } }, "argparse": { @@ -7686,9 +8121,9 @@ }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" } } }, @@ -8150,6 +8585,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==" + }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -8183,9 +8623,9 @@ }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" } } }, @@ -8432,24 +8872,17 @@ "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" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } + "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": { @@ -8641,27 +9074,27 @@ "dev": true }, "eslint": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.42.0.tgz", - "integrity": "sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz", + "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.42.0", - "@humanwhocodes/config-array": "^0.11.10", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.50.0", + "@humanwhocodes/config-array": "^0.11.11", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -8671,7 +9104,6 @@ "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", @@ -8681,9 +9113,8 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "dependencies": { @@ -8728,9 +9159,9 @@ "dev": true }, "eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -8771,18 +9202,18 @@ } }, "eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true }, "espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "requires": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" } @@ -9061,8 +9492,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "get-caller-file": { "version": "2.0.5", @@ -9071,9 +9501,9 @@ "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": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "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": { @@ -9144,9 +9574,9 @@ "dev": true }, "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.22.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", + "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -9187,7 +9617,6 @@ "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" } @@ -9350,6 +9779,17 @@ "resolve-from": "^4.0.0" } }, + "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", @@ -9413,7 +9853,6 @@ "version": "2.12.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", - "dev": true, "requires": { "has": "^1.0.3" } @@ -10021,6 +10460,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==" + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -10178,17 +10622,17 @@ } }, "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "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", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" } }, "os-browserify": { @@ -10259,9 +10703,9 @@ }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -10312,8 +10756,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-to-regexp": { "version": "1.8.0", @@ -10457,9 +10900,9 @@ "dev": true }, "prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", "dev": true }, "process": { @@ -10634,11 +11077,20 @@ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "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" + } + }, "resolve": { "version": "1.22.2", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, "requires": { "is-core-module": "^2.11.0", "path-parse": "^1.0.7", @@ -10988,8 +11440,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==" }, "tapable": { "version": "2.2.1", @@ -11200,9 +11651,9 @@ } }, "tslib": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "tsutils": { "version": "3.21.0", @@ -11287,9 +11738,9 @@ } }, "typescript": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", - "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "dev": true }, "uc.micro": { @@ -11393,6 +11844,11 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, "vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", @@ -11589,12 +12045,6 @@ "wipe-node-cache": "^2.1.0" } }, - "word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true - }, "workerpool": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", diff --git a/package.json b/package.json index 78ef9fac..96db16d6 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,12 @@ { "name": "debugpy", - "displayName": "Debugpy", + "displayName": "Python Debugger", "description": "Python Debugger extension using `debugpy`.", "version": "2023.1.0-dev", "publisher": "ms-python", + "enabledApiProposals": [ + "portsAttributes" + ], "license": "MIT", "homepage": "https://github.com/Microsoft/vscode-python-debugger", "repository": { @@ -36,18 +39,18 @@ "contributes": { "commands": [ { - "category": "Debugpy", + "category": "Python Debugger", "command": "debugpy.debugInTerminal", "icon": "$(debug-alt)", "title": "%debugpy.command.debugInTerminal.title%" }, { - "category": "Debugpy", + "category": "Python Debugger", "command": "debugpy.clearCacheAndReload", "title": "%debugpy.command.clearCacheAndReload.title%" }, { - "category": "Debugpy", + "category": "Python Debugger", "command": "debugpy.viewOutput", "icon": { "dark": "resources/dark/repl.svg", @@ -59,23 +62,35 @@ "menus": { "commandPalette": [ { - "category": "Debugpy", + "category": "Python Debugger", "command": "debugpy.clearCacheAndReload", "title": "%debugpy.command.clearCacheAndReload.title%" }, { - "category": "Debugpy", + "category": "Python Debugger", "command": "debugpy.debugInTerminal", "icon": "$(debug-alt)", "title": "%debugpy.command.debugInTerminal.title%" }, { - "category": "Debugpy", + "category": "Python Debugger", "command": "debugpy.viewOutput", "title": "%debugpy.command.viewOutput.title%" } ] }, + "configuration": { + "properties": { + "debugpy.debugJustMyCode": { + "default": true, + "description": "%debugpy.debugJustMyCode%", + "scope": "resource", + "type": "boolean" + } + }, + "title": "Python Debugger", + "type": "object" + }, "debuggers": [ { "configurationAttributes": { @@ -419,7 +434,7 @@ } }, "configurationSnippets": [], - "label": "Debugpy", + "label": "Python Debugger", "languages": [ "python" ], @@ -453,33 +468,33 @@ "@types/glob": "^7.2.0", "@types/lodash": "^4.14.191", "@types/mocha": "^10.0.1", - "@types/node": "16.x", + "@types/node": "18.x", "@types/semver": "^7.3.13", "@types/sinon": "^10.0.13", "@types/vscode": "^1.78.0", "@typescript-eslint/eslint-plugin": "^5.31.0", - "@typescript-eslint/parser": "^5.31.0", + "@typescript-eslint/parser": "^5.62.0", "@vscode/test-electron": "^2.1.5", "@vscode/vsce": "^2.19.0", "chai": "^4.3.7", "chai-as-promised": "^7.1.1", - "eslint": "^8.20.0", + "eslint": "^8.50.0", "glob": "^8.0.3", "mocha": "^10.0.0", - "prettier": "^2.7.1", + "prettier": "^3.0.3", "rewiremock": "^3.13.0", "semver": "^7.5.4", "sinon": "^15.0.2", "ts-loader": "^9.3.1", "ts-mockito": "^2.6.1", "typemoq": "^2.1.0", - "typescript": "^5.1.3", + "typescript": "^5.2.2", "vscode-test": "^1.6.1", "webpack": "^5.87.0", "webpack-cli": "^5.1.4" }, "dependencies": { - "@vscode/extension-telemetry": "^0.7.7", + "@vscode/extension-telemetry": "^0.8.5", "fs-extra": "^11.1.0", "iconv-lite": "^0.6.3", "inversify": "^6.0.1", diff --git a/package.nls.json b/package.nls.json index 6e2822cd..0e861715 100644 --- a/package.nls.json +++ b/package.nls.json @@ -1,5 +1,6 @@ { "debugpy.command.debugInTerminal.title": "Debug Python File", "debugpy.command.clearCacheAndReload.title": "Clear Cache and Reload Window", - "debugpy.command.viewOutput.title": "Show Output" + "debugpy.command.viewOutput.title": "Show Output", + "debugpy.debugJustMyCode": "When debugging only step through user-written code. Disable this to allow stepping into library code." } diff --git a/src/extension/common/utils/localize.ts b/src/extension/common/utils/localize.ts index 36346e9f..06b6fbdb 100644 --- a/src/extension/common/utils/localize.ts +++ b/src/extension/common/utils/localize.ts @@ -19,12 +19,12 @@ export namespace DebugConfigStrings { placeholder: l10n.t('Debug Configuration'), }; export const launchJsonCompletions = { - label: l10n.t('Debugpy'), - description: l10n.t('Select a Debugpy debug configuration'), + label: l10n.t('Python Debugger'), + description: l10n.t('Select a Python Debugger debug configuration'), }; export namespace file { export const snippet = { - name: l10n.t('Debugpy: Current File'), + name: l10n.t('Python Debugger: Current File'), }; export const selectConfiguration = { label: l10n.t('Python File'), @@ -33,7 +33,7 @@ export namespace DebugConfigStrings { } export namespace fileWithArgs { export const snippet = { - name: l10n.t('Debugpy: Current File with Arguments'), + name: l10n.t('Python Debugger: Current File with Arguments'), }; export const selectConfiguration = { label: l10n.t('Python File with Arguments'), @@ -42,7 +42,7 @@ export namespace DebugConfigStrings { } export namespace module { export const snippet = { - name: l10n.t('Debugpy: Module'), + name: l10n.t('Python Debugger: Module'), default: l10n.t('enter-your-module-name'), }; export const selectConfiguration = { @@ -58,7 +58,7 @@ export namespace DebugConfigStrings { } export namespace attach { export const snippet = { - name: l10n.t('Debugpy: Remote Attach'), + name: l10n.t('Python Debugger: Remote Attach'), }; export const selectConfiguration = { label: l10n.t('Remote Attach'), @@ -77,7 +77,7 @@ export namespace DebugConfigStrings { } export namespace attachPid { export const snippet = { - name: l10n.t('Debugpy: Attach using Process Id'), + name: l10n.t('Python Debugger: Attach using Process Id'), }; export const selectConfiguration = { label: l10n.t('Attach using Process ID'), @@ -86,7 +86,7 @@ export namespace DebugConfigStrings { } export namespace django { export const snippet = { - name: l10n.t('Debugpy: Django'), + name: l10n.t('Python Debugger: Django'), }; export const selectConfiguration = { label: l10n.t('Django'), @@ -102,7 +102,7 @@ export namespace DebugConfigStrings { } export namespace fastapi { export const snippet = { - name: l10n.t('Debugpy: FastAPI'), + name: l10n.t('Python Debugger: FastAPI'), }; export const selectConfiguration = { label: l10n.t('FastAPI'), @@ -116,7 +116,7 @@ export namespace DebugConfigStrings { } export namespace flask { export const snippet = { - name: l10n.t('Debugpy: Flask'), + name: l10n.t('Python Debugger: Flask'), }; export const selectConfiguration = { label: l10n.t('Flask'), @@ -124,13 +124,13 @@ export namespace DebugConfigStrings { }; export const enterAppPathOrNamePath = { title: l10n.t('Debug Flask'), - prompt: l10n.t('Debugpy: Flask'), + prompt: l10n.t('Python Debugger: Flask'), invalid: l10n.t('Enter a valid name'), }; } export namespace pyramid { export const snippet = { - name: l10n.t('Debugpy: Pyramid Application'), + name: l10n.t('Python Debugger: Pyramid Application'), }; export const selectConfiguration = { label: l10n.t('Pyramid'), diff --git a/src/extension/debugger/adapter/outdatedDebuggerPrompt.ts b/src/extension/debugger/adapter/outdatedDebuggerPrompt.ts index 587783c9..29aac508 100644 --- a/src/extension/debugger/adapter/outdatedDebuggerPrompt.ts +++ b/src/extension/debugger/adapter/outdatedDebuggerPrompt.ts @@ -30,7 +30,7 @@ class OutdatedDebuggerPrompt implements DebugAdapterTracker { if (eventMessage.event === 'output') { const outputMessage = eventMessage as DebugProtocol.OutputEvent; if (outputMessage.body.category === 'telemetry') { - // debugpy sends telemetry as both ptvsd and debugpy. This was done to help with + // Python Debugger sends telemetry as both ptvsd and debugpy. This was done to help with // transition from ptvsd to debugpy while analyzing usage telemetry. if ( outputMessage.body.output === 'ptvsd' && diff --git a/src/extension/debugger/adapter/remoteLaunchers.ts b/src/extension/debugger/adapter/remoteLaunchers.ts index ccaf137f..2757b092 100644 --- a/src/extension/debugger/adapter/remoteLaunchers.ts +++ b/src/extension/debugger/adapter/remoteLaunchers.ts @@ -8,7 +8,7 @@ import '../../common/promiseUtils'; import { EXTENSION_ROOT_DIR } from '../../common/constants'; import { fileToCommandArgumentForPythonExt } from '../../common/stringUtils'; -const pathToPythonLibDir = path.join(EXTENSION_ROOT_DIR, 'pythonFiles', 'lib', 'python'); +const pathToPythonLibDir = path.join(EXTENSION_ROOT_DIR, 'bundled', 'libs'); const pathToDebugger = path.join(pathToPythonLibDir, 'debugpy'); type RemoteDebugOptions = { diff --git a/src/extension/debugger/configuration/dynamicdebugConfigurationService.ts b/src/extension/debugger/configuration/dynamicdebugConfigurationService.ts index c0a92b42..3296f4c7 100644 --- a/src/extension/debugger/configuration/dynamicdebugConfigurationService.ts +++ b/src/extension/debugger/configuration/dynamicdebugConfigurationService.ts @@ -23,30 +23,28 @@ export class DynamicPythonDebugConfigurationService implements IDynamicDebugConf const providers = []; providers.push({ - name: 'Debugpy: Python File', + name: 'Python Debugger: Python File', type: DebuggerTypeName, request: 'launch', program: '${file}', - justMyCode: true, }); const djangoManagePath = await DynamicPythonDebugConfigurationService.getDjangoPath(folder); if (djangoManagePath) { providers.push({ - name: 'Debugpy: Django', + name: 'Python Debugger: Django', type: DebuggerTypeName, request: 'launch', program: `${workspaceFolderToken}${path.sep}${djangoManagePath}`, args: ['runserver'], django: true, - justMyCode: true, }); } const flaskPath = await DynamicPythonDebugConfigurationService.getFlaskPath(folder); if (flaskPath) { providers.push({ - name: 'Debugpy: Flask', + name: 'Python Debugger: Flask', type: DebuggerTypeName, request: 'launch', module: 'flask', @@ -56,7 +54,6 @@ export class DynamicPythonDebugConfigurationService implements IDynamicDebugConf }, args: ['run', '--no-debugger', '--no-reload'], jinja: true, - justMyCode: true, }); } @@ -64,13 +61,12 @@ export class DynamicPythonDebugConfigurationService implements IDynamicDebugConf if (fastApiPath) { fastApiPath = replaceAll(path.relative(folder.uri.fsPath, fastApiPath), path.sep, '.').replace('.py', ''); providers.push({ - name: 'Debugpy: FastAPI', + name: 'Python Debugger: FastAPI', type: DebuggerTypeName, request: 'launch', module: 'uvicorn', args: [`${fastApiPath}:app`, '--reload'], jinja: true, - justMyCode: true, }); } diff --git a/src/extension/debugger/configuration/providers/djangoLaunch.ts b/src/extension/debugger/configuration/providers/djangoLaunch.ts index 0ac89eca..23526e04 100644 --- a/src/extension/debugger/configuration/providers/djangoLaunch.ts +++ b/src/extension/debugger/configuration/providers/djangoLaunch.ts @@ -31,7 +31,6 @@ export async function buildDjangoLaunchDebugConfiguration( program: program || defaultProgram, args: ['runserver'], django: true, - justMyCode: true, }; if (!program) { const selectedProgram = await input.showInputBox({ diff --git a/src/extension/debugger/configuration/providers/fastapiLaunch.ts b/src/extension/debugger/configuration/providers/fastapiLaunch.ts index d45930c3..fe09c044 100644 --- a/src/extension/debugger/configuration/providers/fastapiLaunch.ts +++ b/src/extension/debugger/configuration/providers/fastapiLaunch.ts @@ -27,7 +27,6 @@ export async function buildFastAPILaunchDebugConfiguration( module: 'uvicorn', args: ['main:app', '--reload'], jinja: true, - justMyCode: true, }; if (!application) { diff --git a/src/extension/debugger/configuration/providers/fileLaunch.ts b/src/extension/debugger/configuration/providers/fileLaunch.ts index 9f2f7a0c..07eb9310 100644 --- a/src/extension/debugger/configuration/providers/fileLaunch.ts +++ b/src/extension/debugger/configuration/providers/fileLaunch.ts @@ -21,7 +21,6 @@ export async function buildFileLaunchDebugConfiguration( request: 'launch', program: '${file}', console: 'integratedTerminal', - justMyCode: true, }; sendTelemetryEvent(EventName.DEBUGGER_CONFIGURATION_PROMPTS, undefined, { configurationType: DebugConfigurationType.launchFastAPI, diff --git a/src/extension/debugger/configuration/providers/fileLaunchWithArgs.ts b/src/extension/debugger/configuration/providers/fileLaunchWithArgs.ts index a09c8e9a..52b83d3c 100644 --- a/src/extension/debugger/configuration/providers/fileLaunchWithArgs.ts +++ b/src/extension/debugger/configuration/providers/fileLaunchWithArgs.ts @@ -22,7 +22,6 @@ export async function buildFileWithArgsLaunchDebugConfiguration( program: '${file}', console: 'integratedTerminal', args: '${command:pickArgs}', - justMyCode: true, }; sendTelemetryEvent(EventName.DEBUGGER_CONFIGURATION_PROMPTS, undefined, { configurationType: DebugConfigurationType.launchFileWithArgs, diff --git a/src/extension/debugger/configuration/providers/flaskLaunch.ts b/src/extension/debugger/configuration/providers/flaskLaunch.ts index b1336fc2..85363d13 100644 --- a/src/extension/debugger/configuration/providers/flaskLaunch.ts +++ b/src/extension/debugger/configuration/providers/flaskLaunch.ts @@ -32,7 +32,6 @@ export async function buildFlaskLaunchDebugConfiguration( }, args: ['run', '--no-debugger', '--no-reload'], jinja: true, - justMyCode: true, }; if (!application) { diff --git a/src/extension/debugger/configuration/providers/moduleLaunch.ts b/src/extension/debugger/configuration/providers/moduleLaunch.ts index 5ebd803a..447ea7b4 100644 --- a/src/extension/debugger/configuration/providers/moduleLaunch.ts +++ b/src/extension/debugger/configuration/providers/moduleLaunch.ts @@ -21,7 +21,6 @@ export async function buildModuleLaunchConfiguration( type: DebuggerTypeName, request: 'launch', module: DebugConfigStrings.module.snippet.default, - justMyCode: true, }; const selectedModule = await input.showInputBox({ title: DebugConfigStrings.module.enterModule.title, diff --git a/src/extension/debugger/configuration/providers/pidAttach.ts b/src/extension/debugger/configuration/providers/pidAttach.ts index 67e4c44c..0b7ecc84 100644 --- a/src/extension/debugger/configuration/providers/pidAttach.ts +++ b/src/extension/debugger/configuration/providers/pidAttach.ts @@ -20,7 +20,6 @@ export async function buildPidAttachConfiguration( type: DebuggerTypeName, request: 'attach', processId: '${command:pickProcess}', - justMyCode: true, }; sendTelemetryEvent(EventName.DEBUGGER_CONFIGURATION_PROMPTS, undefined, { configurationType: DebugConfigurationType.pidAttach, diff --git a/src/extension/debugger/configuration/providers/pyramidLaunch.ts b/src/extension/debugger/configuration/providers/pyramidLaunch.ts index f3edc3a9..22e420ca 100644 --- a/src/extension/debugger/configuration/providers/pyramidLaunch.ts +++ b/src/extension/debugger/configuration/providers/pyramidLaunch.ts @@ -33,7 +33,6 @@ export async function buildPyramidLaunchConfiguration( args: [iniPath || defaultIni], pyramid: true, jinja: true, - justMyCode: true, }; if (!iniPath) { diff --git a/src/extension/debugger/configuration/providers/remoteAttach.ts b/src/extension/debugger/configuration/providers/remoteAttach.ts index 1681d5cc..2c142309 100644 --- a/src/extension/debugger/configuration/providers/remoteAttach.ts +++ b/src/extension/debugger/configuration/providers/remoteAttach.ts @@ -33,7 +33,6 @@ export async function buildRemoteAttachConfiguration( remoteRoot: '.', }, ], - justMyCode: true, }; const connect = config.connect!; diff --git a/src/extension/debugger/configuration/resolvers/attach.ts b/src/extension/debugger/configuration/resolvers/attach.ts index f22aa77d..12fffe8f 100644 --- a/src/extension/debugger/configuration/resolvers/attach.ts +++ b/src/extension/debugger/configuration/resolvers/attach.ts @@ -7,6 +7,7 @@ import { CancellationToken, Uri, WorkspaceFolder } from 'vscode'; import { getOSType, OSType } from '../../../common/platform'; import { AttachRequestArguments, DebugOptions, PathMapping } from '../../../types'; import { BaseConfigurationResolver } from './base'; +import { getConfiguration } from '../../../common/vscodeapi'; export class AttachConfigurationResolver extends BaseConfigurationResolver { public async resolveDebugConfigurationWithSubstitutedVariables( @@ -42,16 +43,15 @@ export class AttachConfigurationResolver extends BaseConfigurationResolver( + 'debugJustMyCode', + true, + ); } debugConfiguration.showReturnValue = debugConfiguration.showReturnValue !== false; // Pass workspace folder so we can get this when we get debug events firing. debugConfiguration.workspaceFolder = workspaceFolder ? workspaceFolder.fsPath : undefined; const debugOptions = debugConfiguration.debugOptions!; - if (!debugConfiguration.justMyCode) { - AttachConfigurationResolver.debugOption(debugOptions, DebugOptions.DebugStdLib); - } if (debugConfiguration.django) { AttachConfigurationResolver.debugOption(debugOptions, DebugOptions.Django); } diff --git a/src/extension/debugger/configuration/resolvers/launch.ts b/src/extension/debugger/configuration/resolvers/launch.ts index d42aa878..5230637b 100644 --- a/src/extension/debugger/configuration/resolvers/launch.ts +++ b/src/extension/debugger/configuration/resolvers/launch.ts @@ -11,6 +11,7 @@ import { DebugOptions, DebugPurpose, LaunchRequestArguments } from '../../../typ import { resolveVariables } from '../utils/common'; import { BaseConfigurationResolver } from './base'; import { getDebugEnvironmentVariables, getProgram } from './helper'; +import { getConfiguration } from '../../../common/vscodeapi'; export class LaunchConfigurationResolver extends BaseConfigurationResolver { public async resolveDebugConfiguration( @@ -102,15 +103,14 @@ export class LaunchConfigurationResolver extends BaseConfigurationResolver( + 'debugJustMyCode', + true, + ); } // Pass workspace folder so we can get this when we get debug events firing. debugConfiguration.workspaceFolder = workspaceFolder ? workspaceFolder.fsPath : undefined; const debugOptions = debugConfiguration.debugOptions!; - if (!debugConfiguration.justMyCode) { - LaunchConfigurationResolver.debugOption(debugOptions, DebugOptions.DebugStdLib); - } if (debugConfiguration.stopOnEntry) { LaunchConfigurationResolver.debugOption(debugOptions, DebugOptions.StopOnEntry); } diff --git a/src/extension/debugger/debugPort/portAttributesProvider.ts b/src/extension/debugger/debugPort/portAttributesProvider.ts new file mode 100644 index 00000000..13fea1b5 --- /dev/null +++ b/src/extension/debugger/debugPort/portAttributesProvider.ts @@ -0,0 +1,14 @@ +/*--------------------------------------------------------- + * Copyright (C) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------*/ + +import { CancellationToken, PortAttributes, PortAttributesProvider, ProviderResult } from 'vscode'; + +export class DebugPortAttributesProvider implements PortAttributesProvider { + public providePortAttributes( + _attributes: { port: number; pid?: number; commandLine?: string }, + _token: CancellationToken, + ): ProviderResult { + return undefined; + } +} diff --git a/src/extension/extension.ts b/src/extension/extension.ts index e4b4fb55..1829bc61 100644 --- a/src/extension/extension.ts +++ b/src/extension/extension.ts @@ -20,11 +20,11 @@ import { EventName } from './telemetry/constants'; // your extension is activated the very first time the command is executed export async function activate(context: IExtensionContext): Promise { // Setup logging - const outputChannel = createOutputChannel('Debugpy'); + const outputChannel = createOutputChannel('Python Debugger'); context.subscriptions.push(outputChannel, registerLogger(outputChannel)); context.subscriptions.push(registerCommand(Commands.ViewOutput, () => outputChannel.show())); - traceLog(`Name: Debugpy`); + traceLog(`Name: Python Debugger`); traceLog(`Module: debugpy`); try { diff --git a/src/extension/extensionInit.ts b/src/extension/extensionInit.ts index 668be227..c0e75cce 100644 --- a/src/extension/extensionInit.ts +++ b/src/extension/extensionInit.ts @@ -3,7 +3,7 @@ 'use strict'; -import { debug, DebugConfigurationProviderTriggerKind, languages, Uri, window } from 'vscode'; +import { debug, DebugConfigurationProviderTriggerKind, languages, Uri, window, workspace } from 'vscode'; import { executeCommand, getConfiguration, registerCommand, startDebugging } from './common/vscodeapi'; import { DebuggerTypeName } from './constants'; import { DynamicPythonDebugConfigurationService } from './debugger/configuration/dynamicdebugConfigurationService'; @@ -31,6 +31,7 @@ import { JsonLanguages, LaunchJsonCompletionProvider } from './debugger/configur import { LaunchJsonUpdaterServiceHelper } from './debugger/configuration/launch.json/updaterServiceHelper'; import { ignoreErrors } from './common/promiseUtils'; import { pickArgsInput } from './common/utils/localize'; +import { DebugPortAttributesProvider } from './debugger/debugPort/portAttributesProvider'; export async function registerDebugger(context: IExtensionContext): Promise { const childProcessAttachService = new ChildProcessAttachService(); @@ -125,4 +126,12 @@ export async function registerDebugger(context: IExtensionContext): Promise { assert.deepStrictEqual(descriptor, debugExecutable); }); - test.only('Display a message if no python interpreter is set', async () => { + test('Display a message if no python interpreter is set', async () => { getActiveEnvironmentPathStub.resolves(undefined); const session = createSession({}); const promise = factory.createDebugAdapterDescriptor(session, nodeExecutable); diff --git a/src/test/unittest/adapter/remoteLaunchers.unit.test.ts b/src/test/unittest/adapter/remoteLaunchers.unit.test.ts index 8faf5770..f681ee08 100644 --- a/src/test/unittest/adapter/remoteLaunchers.unit.test.ts +++ b/src/test/unittest/adapter/remoteLaunchers.unit.test.ts @@ -52,7 +52,7 @@ suite('External debugpy Debugger Launcher', () => { }); suite('Path To Debugger Package', () => { - const pathToPythonLibDir = path.join(EXTENSION_ROOT_DIR, 'pythonFiles', 'lib', 'python'); + const pathToPythonLibDir = path.join(EXTENSION_ROOT_DIR, 'bundled', 'libs'); test('Path to debugpy debugger package', () => { const actual = launchers.getDebugpyPackagePath(); const expected = path.join(pathToPythonLibDir, 'debugpy'); diff --git a/src/test/unittest/configuration/launch.json/updaterServerHelper.unit.test.ts b/src/test/unittest/configuration/launch.json/updaterServerHelper.unit.test.ts index 1681717d..551be79a 100644 --- a/src/test/unittest/configuration/launch.json/updaterServerHelper.unit.test.ts +++ b/src/test/unittest/configuration/launch.json/updaterServerHelper.unit.test.ts @@ -396,7 +396,7 @@ suite('Debugging - launch.json Updater Service', () => { const position = new Position(1, 0); document .setup((doc) => doc.lineAt(1)) - .returns(() => ({ range: new Range(1, 0, 1, 1) } as TextLine)) + .returns(() => ({ range: new Range(1, 0, 1, 1) }) as TextLine) .verifiable(typemoq.Times.atLeastOnce()); document .setup((doc) => doc.getText(typemoq.It.isAny())) @@ -414,7 +414,7 @@ suite('Debugging - launch.json Updater Service', () => { const position = new Position(2, 2); document .setup((doc) => doc.lineAt(2)) - .returns(() => ({ range: new Range(2, 0, 1, 5) } as TextLine)) + .returns(() => ({ range: new Range(2, 0, 1, 5) }) as TextLine) .verifiable(typemoq.Times.atLeastOnce()); document .setup((doc) => doc.getText(typemoq.It.isAny())) @@ -432,7 +432,7 @@ suite('Debugging - launch.json Updater Service', () => { const position = new Position(2, 2); document .setup((doc) => doc.lineAt(2)) - .returns(() => ({ range: new Range(2, 0, 2, 3) } as TextLine)) + .returns(() => ({ range: new Range(2, 0, 2, 3) }) as TextLine) .verifiable(typemoq.Times.atLeastOnce()); document .setup((doc) => doc.getText(typemoq.It.isAny())) @@ -450,11 +450,11 @@ suite('Debugging - launch.json Updater Service', () => { const position = new Position(2, 2); document .setup((doc) => doc.lineAt(1)) - .returns(() => ({ range: new Range(1, 0, 1, 3), text: '}, ' } as TextLine)) + .returns(() => ({ range: new Range(1, 0, 1, 3), text: '}, ' }) as TextLine) .verifiable(typemoq.Times.atLeastOnce()); document .setup((doc) => doc.lineAt(2)) - .returns(() => ({ range: new Range(2, 0, 2, 3), text: ' ' } as TextLine)) + .returns(() => ({ range: new Range(2, 0, 2, 3), text: ' ' }) as TextLine) .verifiable(typemoq.Times.atLeastOnce()); document .setup((doc) => doc.getText(typemoq.It.isAny())) @@ -472,11 +472,11 @@ suite('Debugging - launch.json Updater Service', () => { const position = new Position(2, 2); document .setup((doc) => doc.lineAt(1)) - .returns(() => ({ range: new Range(1, 0, 1, 3), text: '} ' } as TextLine)) + .returns(() => ({ range: new Range(1, 0, 1, 3), text: '} ' }) as TextLine) .verifiable(typemoq.Times.atLeastOnce()); document .setup((doc) => doc.lineAt(2)) - .returns(() => ({ range: new Range(2, 0, 2, 3), text: ' ' } as TextLine)) + .returns(() => ({ range: new Range(2, 0, 2, 3), text: ' ' }) as TextLine) .verifiable(typemoq.Times.atLeastOnce()); document .setup((doc) => doc.getText(typemoq.It.isAny())) diff --git a/src/test/unittest/configuration/providers/djangoLaunch.unit.test.ts b/src/test/unittest/configuration/providers/djangoLaunch.unit.test.ts index 9d09d08f..17df9f5d 100644 --- a/src/test/unittest/configuration/providers/djangoLaunch.unit.test.ts +++ b/src/test/unittest/configuration/providers/djangoLaunch.unit.test.ts @@ -109,7 +109,6 @@ suite('Debugging - Configuration Provider Django', () => { program: 'hello', args: ['runserver'], django: true, - justMyCode: true, }; expect(state.config).to.be.deep.equal(config); @@ -130,7 +129,6 @@ suite('Debugging - Configuration Provider Django', () => { program: defaultProgram, args: ['runserver'], django: true, - justMyCode: true, }; expect(state.config).to.be.deep.equal(config); diff --git a/src/test/unittest/configuration/providers/fastapiLaunch.unit.test.ts b/src/test/unittest/configuration/providers/fastapiLaunch.unit.test.ts index 771da783..0667345a 100644 --- a/src/test/unittest/configuration/providers/fastapiLaunch.unit.test.ts +++ b/src/test/unittest/configuration/providers/fastapiLaunch.unit.test.ts @@ -55,7 +55,6 @@ suite('Debugging - Configuration Provider FastAPI', () => { module: 'uvicorn', args: ['main:app', '--reload'], jinja: true, - justMyCode: true, }; expect(state.config).to.be.deep.equal(config); @@ -75,7 +74,6 @@ suite('Debugging - Configuration Provider FastAPI', () => { module: 'uvicorn', args: ['main:app', '--reload'], jinja: true, - justMyCode: true, }; expect(state.config).to.be.deep.equal(config); diff --git a/src/test/unittest/configuration/providers/fileLaunch.unit.test.ts b/src/test/unittest/configuration/providers/fileLaunch.unit.test.ts index eb8f4e93..a585f281 100644 --- a/src/test/unittest/configuration/providers/fileLaunch.unit.test.ts +++ b/src/test/unittest/configuration/providers/fileLaunch.unit.test.ts @@ -25,7 +25,6 @@ suite('Debugging - Configuration Provider File', () => { request: 'launch', program: '${file}', console: 'integratedTerminal', - justMyCode: true, }; expect(state.config).to.be.deep.equal(config); diff --git a/src/test/unittest/configuration/providers/fileLaunchWithArgs.unit.test b/src/test/unittest/configuration/providers/fileLaunchWithArgs.unit.test.ts similarity index 88% rename from src/test/unittest/configuration/providers/fileLaunchWithArgs.unit.test rename to src/test/unittest/configuration/providers/fileLaunchWithArgs.unit.test.ts index ff7ab6f9..30e0b590 100644 --- a/src/test/unittest/configuration/providers/fileLaunchWithArgs.unit.test +++ b/src/test/unittest/configuration/providers/fileLaunchWithArgs.unit.test.ts @@ -17,7 +17,10 @@ suite('Debugging - Configuration Provider File with Arguments', () => { const folder = { uri: Uri.parse(path.join('one', 'two')), name: '1', index: 0 }; const state = { config: {}, folder }; - await buildFileWithArgsLaunchDebugConfiguration(undefined as unknown as MultiStepInput, state); + await buildFileWithArgsLaunchDebugConfiguration( + undefined as unknown as MultiStepInput, + state, + ); const config = { name: DebugConfigStrings.fileWithArgs.snippet.name, @@ -26,7 +29,6 @@ suite('Debugging - Configuration Provider File with Arguments', () => { program: '${file}', console: 'integratedTerminal', args: '${command:pickArgs}', - justMyCode: true, }; expect(state.config).to.be.deep.equal(config); diff --git a/src/test/unittest/configuration/providers/flaskLaunch.unit.test.ts b/src/test/unittest/configuration/providers/flaskLaunch.unit.test.ts index 3ffcb819..1bb28ade 100644 --- a/src/test/unittest/configuration/providers/flaskLaunch.unit.test.ts +++ b/src/test/unittest/configuration/providers/flaskLaunch.unit.test.ts @@ -58,7 +58,6 @@ suite('Debugging - Configuration Provider Flask', () => { }, args: ['run', '--no-debugger', '--no-reload'], jinja: true, - justMyCode: true, }; expect(state.config).to.be.deep.equal(config); @@ -82,7 +81,6 @@ suite('Debugging - Configuration Provider Flask', () => { }, args: ['run', '--no-debugger', '--no-reload'], jinja: true, - justMyCode: true, }; expect(state.config).to.be.deep.equal(config); @@ -105,7 +103,6 @@ suite('Debugging - Configuration Provider Flask', () => { }, args: ['run', '--no-debugger', '--no-reload'], jinja: true, - justMyCode: true, }; expect(state.config).to.be.deep.equal(config); diff --git a/src/test/unittest/configuration/providers/moduleLaunch.unit.test.ts b/src/test/unittest/configuration/providers/moduleLaunch.unit.test.ts index 2e68f6de..d1db6c72 100644 --- a/src/test/unittest/configuration/providers/moduleLaunch.unit.test.ts +++ b/src/test/unittest/configuration/providers/moduleLaunch.unit.test.ts @@ -28,7 +28,6 @@ suite('Debugging - Configuration Provider Module', () => { type: DebuggerTypeName, request: 'launch', module: DebugConfigStrings.module.snippet.default, - justMyCode: true, }; expect(state.config).to.be.deep.equal(config); @@ -47,7 +46,6 @@ suite('Debugging - Configuration Provider Module', () => { type: DebuggerTypeName, request: 'launch', module: 'hello', - justMyCode: true, }; expect(state.config).to.be.deep.equal(config); diff --git a/src/test/unittest/configuration/providers/pidAttach.unit.test.ts b/src/test/unittest/configuration/providers/pidAttach.unit.test.ts index 382a0b29..6c51f8a7 100644 --- a/src/test/unittest/configuration/providers/pidAttach.unit.test.ts +++ b/src/test/unittest/configuration/providers/pidAttach.unit.test.ts @@ -24,7 +24,6 @@ suite('Debugging - Configuration Provider File', () => { type: DebuggerTypeName, request: 'attach', processId: '${command:pickProcess}', - justMyCode: true, }; expect(state.config).to.be.deep.equal(config); diff --git a/src/test/unittest/configuration/providers/pyramidLaunch.unit.test.ts b/src/test/unittest/configuration/providers/pyramidLaunch.unit.test.ts index aa229ddb..5489b624 100644 --- a/src/test/unittest/configuration/providers/pyramidLaunch.unit.test.ts +++ b/src/test/unittest/configuration/providers/pyramidLaunch.unit.test.ts @@ -110,7 +110,6 @@ suite('Debugging - Configuration Provider Pyramid', () => { args: ['${workspaceFolder}-development.ini'], pyramid: true, jinja: true, - justMyCode: true, }; expect(state.config).to.be.deep.equal(config); @@ -131,7 +130,6 @@ suite('Debugging - Configuration Provider Pyramid', () => { args: ['hello'], pyramid: true, jinja: true, - justMyCode: true, }; expect(state.config).to.be.deep.equal(config); @@ -155,7 +153,6 @@ suite('Debugging - Configuration Provider Pyramid', () => { args: [defaultIni], pyramid: true, jinja: true, - justMyCode: true, }; expect(state.config).to.be.deep.equal(config); diff --git a/src/test/unittest/configuration/providers/remoteAttach.unit.test.ts b/src/test/unittest/configuration/providers/remoteAttach.unit.test.ts index d7b80009..85fd7408 100644 --- a/src/test/unittest/configuration/providers/remoteAttach.unit.test.ts +++ b/src/test/unittest/configuration/providers/remoteAttach.unit.test.ts @@ -87,7 +87,6 @@ suite('Debugging - Configuration Provider Remote Attach', () => { remoteRoot: '.', }, ], - justMyCode: true, }; expect(state.config).to.be.deep.equal(config); @@ -121,7 +120,6 @@ suite('Debugging - Configuration Provider Remote Attach', () => { remoteRoot: '.', }, ], - justMyCode: true, }; expect(state.config).to.be.deep.equal(config); diff --git a/src/test/unittest/configuration/resolvers/attach.unit.test.ts b/src/test/unittest/configuration/resolvers/attach.unit.test.ts index 502d6970..9fe63d2f 100644 --- a/src/test/unittest/configuration/resolvers/attach.unit.test.ts +++ b/src/test/unittest/configuration/resolvers/attach.unit.test.ts @@ -6,13 +6,22 @@ import { expect } from 'chai'; import * as TypeMoq from 'typemoq'; import * as sinon from 'sinon'; -import { DebugConfiguration, DebugConfigurationProvider, TextDocument, TextEditor, Uri, WorkspaceFolder } from 'vscode'; +import { + DebugConfiguration, + DebugConfigurationProvider, + TextDocument, + TextEditor, + Uri, + WorkspaceConfiguration, + WorkspaceFolder, +} from 'vscode'; import { PYTHON_LANGUAGE } from '../../../../extension/common/constants'; import { getInfoPerOS } from './common'; import { AttachRequestArguments, DebugOptions } from '../../../../extension/types'; import { AttachConfigurationResolver } from '../../../../extension/debugger/configuration/resolvers/attach'; import * as vscodeapi from '../../../../extension/common/vscodeapi'; import * as platform from '../../../../extension/common/platform'; +import { debuggerTypeName } from '../../../common'; getInfoPerOS().forEach(([osName, osType, path]) => { if (osType === platform.OSType.Unknown) { @@ -34,6 +43,7 @@ getInfoPerOS().forEach(([osName, osType, path]) => { let getActiveTextEditorStub: sinon.SinonStub; let getWorkspaceFoldersStub: sinon.SinonStub; let getOSTypeStub: sinon.SinonStub; + let getConfigurationStub: sinon.SinonStub; const debugOptionsAvailable = getAvailableOptions(); setup(() => { @@ -42,6 +52,8 @@ getInfoPerOS().forEach(([osName, osType, path]) => { getOSTypeStub = sinon.stub(platform, 'getOSType'); getWorkspaceFoldersStub = sinon.stub(vscodeapi, 'getWorkspaceFolders'); getOSTypeStub.returns(osType); + getConfigurationStub = sinon.stub(vscodeapi, 'getConfiguration'); + getConfigurationStub.withArgs('debugpy', sinon.match.any).returns(createMoqConfiguration(true)); }); teardown(() => { @@ -54,6 +66,14 @@ getInfoPerOS().forEach(([osName, osType, path]) => { return folder.object; } + function createMoqConfiguration(justMyCode: boolean) { + const debugpySettings = TypeMoq.Mock.ofType(); + debugpySettings + .setup((p) => p.get('debugJustMyCode', TypeMoq.It.isAny())) + .returns(() => justMyCode); + return debugpySettings.object; + } + function setupActiveEditor(fileName: string | undefined, languageId: string) { if (fileName) { const textEditor = TypeMoq.Mock.ofType(); @@ -78,7 +98,7 @@ getInfoPerOS().forEach(([osName, osType, path]) => { const attach: Partial = { name: 'Python attach', - type: 'debugpy', + type: debuggerTypeName, request: 'attach', }; @@ -493,67 +513,54 @@ getInfoPerOS().forEach(([osName, osType, path]) => { const testsForJustMyCode = [ { justMyCode: false, - debugStdLib: true, + justMyCodeSetting: true, expectedResult: false, }, { justMyCode: false, - debugStdLib: false, + justMyCodeSetting: false, expectedResult: false, }, - { - justMyCode: false, - debugStdLib: undefined, - expectedResult: false, - }, - { - justMyCode: true, - debugStdLib: false, - expectedResult: true, - }, { justMyCode: true, - debugStdLib: true, + justMyCodeSetting: false, expectedResult: true, }, { justMyCode: true, - debugStdLib: undefined, - expectedResult: true, - }, - { - justMyCode: undefined, - debugStdLib: false, + justMyCodeSetting: true, expectedResult: true, }, { justMyCode: undefined, - debugStdLib: true, + justMyCodeSetting: false, expectedResult: false, }, { justMyCode: undefined, - debugStdLib: undefined, + justMyCodeSetting: true, expectedResult: true, }, ]; - test('Ensure justMyCode property is correctly derived from debugStdLib', async () => { - const activeFile = 'xyz.py'; - const workspaceFolder = createMoqWorkspaceFolder(__dirname); - setupActiveEditor(activeFile, PYTHON_LANGUAGE); - const defaultWorkspace = path.join('usr', 'desktop'); - setupWorkspaces([defaultWorkspace]); + testsForJustMyCode.forEach(async (testParams) => { + test('Ensure justMyCode property is correctly derived from global settings', async () => { + const activeFile = 'xyz.py'; + const workspaceFolder = createMoqWorkspaceFolder(__dirname); + setupActiveEditor(activeFile, PYTHON_LANGUAGE); + const defaultWorkspace = path.join('usr', 'desktop'); + setupWorkspaces([defaultWorkspace]); - const debugOptions = debugOptionsAvailable - .slice() - .concat(DebugOptions.Jinja, DebugOptions.Sudo) as DebugOptions[]; + const debugOptions = debugOptionsAvailable + .slice() + .concat(DebugOptions.Jinja, DebugOptions.Sudo) as DebugOptions[]; - testsForJustMyCode.forEach(async (testParams) => { + getConfigurationStub + .withArgs('debugpy', sinon.match.any) + .returns(createMoqConfiguration(testParams.justMyCodeSetting)); const debugConfig = await resolveDebugConfiguration(workspaceFolder, { ...attach, debugOptions, justMyCode: testParams.justMyCode, - debugStdLib: testParams.debugStdLib, }); expect(debugConfig).to.have.property('justMyCode', testParams.expectedResult); }); diff --git a/src/test/unittest/configuration/resolvers/launch.unit.test.ts b/src/test/unittest/configuration/resolvers/launch.unit.test.ts index 6da329c6..b2dd2e1a 100644 --- a/src/test/unittest/configuration/resolvers/launch.unit.test.ts +++ b/src/test/unittest/configuration/resolvers/launch.unit.test.ts @@ -6,7 +6,15 @@ import { expect } from 'chai'; import * as TypeMoq from 'typemoq'; import * as sinon from 'sinon'; -import { DebugConfiguration, DebugConfigurationProvider, TextDocument, TextEditor, Uri, WorkspaceFolder } from 'vscode'; +import { + DebugConfiguration, + DebugConfigurationProvider, + TextDocument, + TextEditor, + Uri, + WorkspaceConfiguration, + WorkspaceFolder, +} from 'vscode'; import { PYTHON_LANGUAGE } from '../../../../extension/common/constants'; import { LaunchConfigurationResolver } from '../../../../extension/debugger/configuration/resolvers/launch'; import { getInfoPerOS } from './common'; @@ -17,6 +25,7 @@ import { DebuggerTypeName } from '../../../../extension/constants'; import * as pythonApi from '../../../../extension/common/python'; import * as settings from '../../../../extension/common/settings'; import * as helper from '../../../../extension/debugger/configuration/resolvers/helper'; +import { debuggerTypeName } from '../../../common'; getInfoPerOS().forEach(([osName, osType, path]) => { if (osType === platform.OSType.Unknown) { @@ -31,6 +40,7 @@ getInfoPerOS().forEach(([osName, osType, path]) => { let getInterpreterDetailsStub: sinon.SinonStub; let getEnvFileStub: sinon.SinonStub; let getDebugEnvironmentVariablesStub: sinon.SinonStub; + let getConfigurationStub: sinon.SinonStub; setup(() => { getActiveTextEditorStub = sinon.stub(vscodeapi, 'getActiveTextEditor'); @@ -40,6 +50,8 @@ getInfoPerOS().forEach(([osName, osType, path]) => { getInterpreterDetailsStub = sinon.stub(pythonApi, 'getInterpreterDetails'); getEnvFileStub = sinon.stub(settings, 'getEnvFile'); getDebugEnvironmentVariablesStub = sinon.stub(helper, 'getDebugEnvironmentVariables'); + getConfigurationStub = sinon.stub(vscodeapi, 'getConfiguration'); + getConfigurationStub.withArgs('debugpy', sinon.match.any).returns(createMoqConfiguration(true)); }); teardown(() => { @@ -52,6 +64,14 @@ getInfoPerOS().forEach(([osName, osType, path]) => { return folder.object; } + function createMoqConfiguration(justMyCode: boolean) { + const debugpySettings = TypeMoq.Mock.ofType(); + debugpySettings + .setup((p) => p.get('debugJustMyCode', TypeMoq.It.isAny())) + .returns(() => justMyCode); + return debugpySettings.object; + } + function getClientOS() { return osType === platform.OSType.Windows ? 'windows' : 'unix'; } @@ -88,7 +108,7 @@ getInfoPerOS().forEach(([osName, osType, path]) => { const launch: LaunchRequestArguments = { name: 'Python launch', - type: 'debugpy', + type: debuggerTypeName, request: 'launch', }; @@ -134,7 +154,7 @@ getInfoPerOS().forEach(([osName, osType, path]) => { const debugConfig = await resolveDebugConfiguration(workspaceFolder, {}); expect(Object.keys(debugConfig!)).to.have.lengthOf.above(3); - expect(debugConfig).to.have.property('type', 'debugpy'); + expect(debugConfig).to.have.property('type', debuggerTypeName); expect(debugConfig).to.have.property('request', 'launch'); expect(debugConfig).to.have.property('clientOS', getClientOS()); expect(debugConfig).to.not.have.property('pythonPath'); @@ -163,7 +183,7 @@ getInfoPerOS().forEach(([osName, osType, path]) => { }); expect(Object.keys(debugConfig!)).to.have.lengthOf.above(3); - expect(debugConfig).to.have.property('type', 'debugpy'); + expect(debugConfig).to.have.property('type', debuggerTypeName); expect(debugConfig).to.have.property('request', 'launch'); expect(debugConfig).to.have.property('clientOS', getClientOS()); expect(debugConfig).to.not.have.property('pythonPath'); @@ -191,7 +211,7 @@ getInfoPerOS().forEach(([osName, osType, path]) => { const filePath = Uri.file(path.dirname('')).fsPath; expect(Object.keys(debugConfig!)).to.have.lengthOf.above(3); - expect(debugConfig).to.have.property('type', 'debugpy'); + expect(debugConfig).to.have.property('type', debuggerTypeName); expect(debugConfig).to.have.property('request', 'launch'); expect(debugConfig).to.have.property('clientOS', getClientOS()); expect(debugConfig).to.not.have.property('pythonPath'); @@ -217,7 +237,7 @@ getInfoPerOS().forEach(([osName, osType, path]) => { const debugConfig = await resolveDebugConfiguration(undefined, {}); expect(Object.keys(debugConfig!)).to.have.lengthOf.above(3); - expect(debugConfig).to.have.property('type', 'debugpy'); + expect(debugConfig).to.have.property('type', debuggerTypeName); expect(debugConfig).to.have.property('clientOS', getClientOS()); expect(debugConfig).to.not.have.property('pythonPath'); expect(debugConfig).to.have.property('python', pythonPath); @@ -242,7 +262,7 @@ getInfoPerOS().forEach(([osName, osType, path]) => { const debugConfig = await resolveDebugConfiguration(undefined, {}); expect(Object.keys(debugConfig!)).to.have.lengthOf.above(3); - expect(debugConfig).to.have.property('type', 'debugpy'); + expect(debugConfig).to.have.property('type', debuggerTypeName); expect(debugConfig).to.have.property('request', 'launch'); expect(debugConfig).to.have.property('clientOS', getClientOS()); expect(debugConfig).to.not.have.property('pythonPath'); @@ -269,7 +289,7 @@ getInfoPerOS().forEach(([osName, osType, path]) => { const filePath = Uri.file(defaultWorkspace).fsPath; expect(Object.keys(debugConfig!)).to.have.lengthOf.above(3); - expect(debugConfig).to.have.property('type', 'debugpy'); + expect(debugConfig).to.have.property('type', debuggerTypeName); expect(debugConfig).to.have.property('request', 'launch'); expect(debugConfig).to.have.property('clientOS', getClientOS()); expect(debugConfig).to.not.have.property('pythonPath'); @@ -686,7 +706,7 @@ getInfoPerOS().forEach(([osName, osType, path]) => { }); test('Test defaults of python debugger', async () => { - if (DebuggerTypeName === 'debugpy') { + if (DebuggerTypeName === debuggerTypeName) { return; } const pythonPath = `PythonPath_${new Date().toString()}`; @@ -726,11 +746,7 @@ getInfoPerOS().forEach(([osName, osType, path]) => { expect(debugConfig).to.have.property('redirectOutput', true); expect(debugConfig).to.have.property('justMyCode', false); expect(debugConfig).to.have.property('debugOptions'); - const expectedOptions = [ - DebugOptions.DebugStdLib, - DebugOptions.ShowReturnValue, - DebugOptions.RedirectOutput, - ]; + const expectedOptions = [DebugOptions.ShowReturnValue, DebugOptions.RedirectOutput]; if (osType === platform.OSType.Windows) { expectedOptions.push(DebugOptions.FixFilePathCase); } @@ -740,60 +756,47 @@ getInfoPerOS().forEach(([osName, osType, path]) => { const testsForJustMyCode = [ { justMyCode: false, - debugStdLib: true, - expectedResult: false, - }, - { - justMyCode: false, - debugStdLib: false, + justMyCodeSetting: true, expectedResult: false, }, { justMyCode: false, - debugStdLib: undefined, + justMyCodeSetting: false, expectedResult: false, }, { justMyCode: true, - debugStdLib: false, - expectedResult: true, - }, - { - justMyCode: true, - debugStdLib: true, + justMyCodeSetting: false, expectedResult: true, }, { justMyCode: true, - debugStdLib: undefined, + justMyCodeSetting: true, expectedResult: true, }, { justMyCode: undefined, - debugStdLib: false, - expectedResult: true, - }, - { - justMyCode: undefined, - debugStdLib: true, + justMyCodeSetting: false, expectedResult: false, }, { justMyCode: undefined, - debugStdLib: undefined, + justMyCodeSetting: true, expectedResult: true, }, ]; - test('Ensure justMyCode property is correctly derived from debugStdLib', async () => { - const pythonPath = `PythonPath_${new Date().toString()}`; - const workspaceFolder = createMoqWorkspaceFolder(__dirname); - const pythonFile = 'xyz.py'; - setupIoc(pythonPath); - setupActiveEditor(pythonFile, PYTHON_LANGUAGE); - testsForJustMyCode.forEach(async (testParams) => { + testsForJustMyCode.forEach(async (testParams) => { + test('Ensure justMyCode property is correctly derived from global settings', async () => { + const pythonPath = `PythonPath_${new Date().toString()}`; + const workspaceFolder = createMoqWorkspaceFolder(__dirname); + const pythonFile = 'xyz.py'; + setupIoc(pythonPath); + setupActiveEditor(pythonFile, PYTHON_LANGUAGE); + getConfigurationStub + .withArgs('debugpy', sinon.match.any) + .returns(createMoqConfiguration(testParams.justMyCodeSetting)); const debugConfig = await resolveDebugConfiguration(workspaceFolder, { ...launch, - debugStdLib: testParams.debugStdLib, justMyCode: testParams.justMyCode, }); expect(debugConfig).to.have.property('justMyCode', testParams.expectedResult); @@ -930,6 +933,7 @@ getInfoPerOS().forEach(([osName, osType, path]) => { request: requestType, type: 'python', name: '', + justMyCode: false, ...settings, }; const workspaceFolder = createMoqWorkspaceFolder(__dirname); diff --git a/src/test/unittest/extensionInit.unit.test.ts b/src/test/unittest/extensionInit.unit.test.ts index a4bfa823..243e5588 100644 --- a/src/test/unittest/extensionInit.unit.test.ts +++ b/src/test/unittest/extensionInit.unit.test.ts @@ -21,6 +21,7 @@ import { DebugAdapterDescriptorFactory } from '../../extension/debugger/adapter/ import { expect } from 'chai'; import { DebugSessionTelemetry } from '../../extension/common/application/debugSessionTelemetry'; import { LaunchJsonCompletionProvider } from '../../extension/debugger/configuration/launch.json/completionProvider'; +import { debuggerTypeName } from '../common'; suite('Debugging - register Debugging', () => { let context: typemoq.IMock; @@ -68,13 +69,18 @@ suite('Debugging - register Debugging', () => { sinon.assert.calledWithExactly(registerCommandStub, Commands.ClearStorage, sinon.match.any); expect(registerCommandStub.callCount).to.be.equal(5); }); + test('Activation will register the Debug adapter factories', async () => { registerDebugger(context.object); - sinon.assert.calledWithExactly(registerDebugAdapterTrackerFactoryStub, 'debugpy', loggingFactory); - sinon.assert.calledWithExactly(registerDebugAdapterTrackerFactoryStub, 'debugpy', debuggerPromptFactory); - sinon.assert.calledWithExactly(registerDebugAdapterTrackerFactoryStub, 'debugpy', debugSessionTelemetry); - sinon.assert.calledOnceWithMatch(registerDebugAdapterDescriptorFactoryStub, 'debugpy', descriptorFactory); + sinon.assert.calledWithExactly(registerDebugAdapterTrackerFactoryStub, debuggerTypeName, loggingFactory); + sinon.assert.calledWithExactly(registerDebugAdapterTrackerFactoryStub, debuggerTypeName, debuggerPromptFactory); + sinon.assert.calledWithExactly(registerDebugAdapterTrackerFactoryStub, debuggerTypeName, debugSessionTelemetry); + sinon.assert.calledOnceWithMatch( + registerDebugAdapterDescriptorFactoryStub, + debuggerTypeName, + descriptorFactory, + ); expect(registerDebugAdapterTrackerFactoryStub.callCount).to.be.equal(3); }); diff --git a/src/test/unittest/hooks/childProcessAttachHandler.unit.test.ts b/src/test/unittest/hooks/childProcessAttachHandler.unit.test.ts index f2901dee..11d406d0 100644 --- a/src/test/unittest/hooks/childProcessAttachHandler.unit.test.ts +++ b/src/test/unittest/hooks/childProcessAttachHandler.unit.test.ts @@ -10,6 +10,7 @@ import { ChildProcessAttachService } from '../../../extension/debugger/hooks/chi import { DebuggerEvents } from '../../../extension/debugger/hooks/constants'; import { AttachRequestArguments } from '../../../extension/types'; import { DebuggerTypeName } from '../../../extension/constants'; +import { debuggerTypeName } from '../../common'; suite('Debug - Child Process', () => { test('Do not attach if the event is undefined', async () => { @@ -47,7 +48,7 @@ suite('Debug - Child Process', () => { const handler = new ChildProcessAttachEventHandler(instance(attachService)); const body: AttachRequestArguments = { name: 'Attach', - type: 'debugpy', + type: debuggerTypeName, request: 'attach', port: 1234, subProcessId: 2, diff --git a/src/test/unittest/hooks/childProcessAttachService.unit.test.ts b/src/test/unittest/hooks/childProcessAttachService.unit.test.ts index 1291057d..b01bb51c 100644 --- a/src/test/unittest/hooks/childProcessAttachService.unit.test.ts +++ b/src/test/unittest/hooks/childProcessAttachService.unit.test.ts @@ -9,6 +9,7 @@ import { Uri, WorkspaceFolder, debug } from 'vscode'; import { ChildProcessAttachService } from '../../../extension/debugger/hooks/childProcessAttachService'; import { AttachRequestArguments, LaunchRequestArguments } from '../../../extension/types'; import * as vscodeapi from '../../../extension/common/vscodeapi'; +import { debuggerTypeName } from '../../common'; suite('Debug - Attach to Child Process', () => { let attachService: ChildProcessAttachService; @@ -29,7 +30,7 @@ suite('Debug - Attach to Child Process', () => { test('Message is not displayed if debugger is launched', async () => { const data: AttachRequestArguments = { name: 'Attach', - type: 'debugpy', + type: debuggerTypeName, request: 'attach', port: 1234, subProcessId: 2, @@ -48,7 +49,7 @@ suite('Debug - Attach to Child Process', () => { test('Message is displayed if debugger is not launched', async () => { const data: AttachRequestArguments = { name: 'Attach', - type: 'debugpy', + type: debuggerTypeName, request: 'attach', port: 1234, subProcessId: 2, @@ -72,7 +73,7 @@ suite('Debug - Attach to Child Process', () => { const data: AttachRequestArguments = { name: 'Attach', - type: 'debugpy', + type: debuggerTypeName, request: 'attach', port: 1234, subProcessId: 2, @@ -96,7 +97,7 @@ suite('Debug - Attach to Child Process', () => { const data: AttachRequestArguments = { name: 'Attach', - type: 'debugpy', + type: debuggerTypeName, request: 'attach', port: 1234, subProcessId: 2, @@ -116,7 +117,7 @@ suite('Debug - Attach to Child Process', () => { test('Validate debug config is passed with the correct params', async () => { const data: LaunchRequestArguments | AttachRequestArguments = { request: 'attach', - type: 'debugpy', + type: debuggerTypeName, name: 'Attach', port: 1234, subProcessId: 2, @@ -141,7 +142,7 @@ suite('Debug - Attach to Child Process', () => { }); test('Pass data as is if data is attach debug configuration', async () => { const data: AttachRequestArguments = { - type: 'debugpy', + type: debuggerTypeName, request: 'attach', name: '', }; @@ -163,7 +164,7 @@ suite('Debug - Attach to Child Process', () => { test('Validate debug config when parent/root parent was attached', async () => { const data: AttachRequestArguments = { request: 'attach', - type: 'debugpy', + type: debuggerTypeName, name: 'Attach', host: '123.123.123.123', port: 1234, diff --git a/vscode.proposed.portsAttributes.d.ts b/vscode.proposed.portsAttributes.d.ts new file mode 100644 index 00000000..e3cb4b61 --- /dev/null +++ b/vscode.proposed.portsAttributes.d.ts @@ -0,0 +1,100 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +declare module 'vscode' { + + // https://github.com/microsoft/vscode/issues/115616 @alexr00 + + /** + * The action that should be taken when a port is discovered through automatic port forwarding discovery. + */ + export enum PortAutoForwardAction { + /** + * Notify the user that the port is being forwarded. This is the default action. + */ + Notify = 1, + /** + * Once the port is forwarded, open the user's web browser to the forwarded port. + */ + OpenBrowser = 2, + /** + * Once the port is forwarded, open the preview browser to the forwarded port. + */ + OpenPreview = 3, + /** + * Forward the port silently. + */ + Silent = 4, + /** + * Do not forward the port. + */ + Ignore = 5 + } + + /** + * The attributes that a forwarded port can have. + */ + export class PortAttributes { + /** + * The action to be taken when this port is detected for auto forwarding. + */ + autoForwardAction: PortAutoForwardAction; + + /** + * Creates a new PortAttributes object + * @param port the port number + * @param autoForwardAction the action to take when this port is detected + */ + constructor(autoForwardAction: PortAutoForwardAction); + } + + /** + * A provider of port attributes. Port attributes are used to determine what action should be taken when a port is discovered. + */ + export interface PortAttributesProvider { + /** + * Provides attributes for the given port. For ports that your extension doesn't know about, simply + * return undefined. For example, if `providePortAttributes` is called with ports 3000 but your + * extension doesn't know anything about 3000 you should return undefined. + * @param port The port number of the port that attributes are being requested for. + * @param pid The pid of the process that is listening on the port. If the pid is unknown, undefined will be passed. + * @param commandLine The command line of the process that is listening on the port. If the command line is unknown, undefined will be passed. + * @param token A cancellation token that indicates the result is no longer needed. + */ + providePortAttributes(attributes: { port: number; pid?: number; commandLine?: string }, token: CancellationToken): ProviderResult; + } + + /** + * A selector that will be used to filter which {@link PortAttributesProvider} should be called for each port. + */ + export interface PortAttributesSelector { + /** + * Specifying a port range will cause your provider to only be called for ports within the range. + * The start is inclusive and the end is exclusive. + */ + portRange?: [number, number] | number; + + /** + * Specifying a command pattern will cause your provider to only be called for processes whose command line matches the pattern. + */ + commandPattern?: RegExp; + } + + export namespace workspace { + /** + * If your extension listens on ports, consider registering a PortAttributesProvider to provide information + * about the ports. For example, a debug extension may know about debug ports in it's debuggee. By providing + * this information with a PortAttributesProvider the extension can tell the editor that these ports should be + * ignored, since they don't need to be user facing. + * + * The results of the PortAttributesProvider are merged with the user setting `remote.portsAttributes`. If the values conflict, the user setting takes precedence. + * + * @param portSelector It is best practice to specify a port selector to avoid unnecessary calls to your provider. + * If you don't specify a port selector your provider will be called for every port, which will result in slower port forwarding for the user. + * @param provider The {@link PortAttributesProvider PortAttributesProvider}. + */ + export function registerPortAttributesProvider(portSelector: PortAttributesSelector, provider: PortAttributesProvider): Disposable; + } +}