From bc3db5471a0713f857c0a76c2c2243b91c916403 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Tue, 12 Sep 2023 16:17:37 -0400 Subject: [PATCH 001/100] initial jupyterlab extension from https://github.com/jupyterlab/extension-template --- .../connect_jupyterlab/.copier-answers.yml | 19 ++ .../.github/workflows/build.yml | 155 +++++++++++++ .../.github/workflows/check-release.yml | 26 +++ .../.github/workflows/enforce-label.yml | 13 ++ .../.github/workflows/prep-release.yml | 41 ++++ .../.github/workflows/publish-release.yml | 57 +++++ .../workflows/update-integration-tests.yml | 47 ++++ .../jupyterlab/connect_jupyterlab/.gitignore | 125 +++++++++++ .../connect_jupyterlab/.prettierignore | 6 + .../jupyterlab/connect_jupyterlab/.yarnrc.yml | 1 + .../connect_jupyterlab/CHANGELOG.md | 5 + .../jupyterlab/connect_jupyterlab/LICENSE | 29 +++ .../jupyterlab/connect_jupyterlab/README.md | 138 ++++++++++++ .../jupyterlab/connect_jupyterlab/RELEASE.md | 111 ++++++++++ .../connect_jupyterlab/babel.config.js | 1 + .../jupyterlab/connect_jupyterlab/conftest.py | 8 + .../connect_jupyterlab/__init__.py | 36 +++ .../connect_jupyterlab/handlers.py | 24 ++ .../connect_jupyterlab/tests/__init__.py | 1 + .../connect_jupyterlab/tests/test_handlers.py | 13 ++ .../connect_jupyterlab/install.json | 5 + .../connect_jupyterlab/jest.config.js | 28 +++ .../server-config/connect_jupyterlab.json | 7 + .../connect_jupyterlab/package.json | 208 ++++++++++++++++++ .../connect_jupyterlab/pyproject.toml | 87 ++++++++ .../jupyterlab/connect_jupyterlab/setup.py | 1 + .../src/__tests__/connect_jupyterlab.spec.ts | 9 + .../connect_jupyterlab/src/handler.ts | 46 ++++ .../connect_jupyterlab/src/index.ts | 30 +++ .../connect_jupyterlab/style/base.css | 5 + .../connect_jupyterlab/style/index.css | 1 + .../connect_jupyterlab/style/index.js | 1 + .../connect_jupyterlab/tsconfig.json | 23 ++ .../connect_jupyterlab/tsconfig.test.json | 6 + .../connect_jupyterlab/ui-tests/README.md | 167 ++++++++++++++ .../ui-tests/jupyter_server_test_config.py | 12 + .../connect_jupyterlab/ui-tests/package.json | 15 ++ .../ui-tests/playwright.config.js | 14 ++ .../ui-tests/tests/connect_jupyterlab.spec.ts | 21 ++ .../connect_jupyterlab/ui-tests/yarn.lock | 0 40 files changed, 1542 insertions(+) create mode 100644 extensions/jupyterlab/connect_jupyterlab/.copier-answers.yml create mode 100644 extensions/jupyterlab/connect_jupyterlab/.github/workflows/build.yml create mode 100644 extensions/jupyterlab/connect_jupyterlab/.github/workflows/check-release.yml create mode 100644 extensions/jupyterlab/connect_jupyterlab/.github/workflows/enforce-label.yml create mode 100644 extensions/jupyterlab/connect_jupyterlab/.github/workflows/prep-release.yml create mode 100644 extensions/jupyterlab/connect_jupyterlab/.github/workflows/publish-release.yml create mode 100644 extensions/jupyterlab/connect_jupyterlab/.github/workflows/update-integration-tests.yml create mode 100644 extensions/jupyterlab/connect_jupyterlab/.gitignore create mode 100644 extensions/jupyterlab/connect_jupyterlab/.prettierignore create mode 100644 extensions/jupyterlab/connect_jupyterlab/.yarnrc.yml create mode 100644 extensions/jupyterlab/connect_jupyterlab/CHANGELOG.md create mode 100644 extensions/jupyterlab/connect_jupyterlab/LICENSE create mode 100644 extensions/jupyterlab/connect_jupyterlab/README.md create mode 100644 extensions/jupyterlab/connect_jupyterlab/RELEASE.md create mode 100644 extensions/jupyterlab/connect_jupyterlab/babel.config.js create mode 100644 extensions/jupyterlab/connect_jupyterlab/conftest.py create mode 100644 extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/__init__.py create mode 100644 extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py create mode 100644 extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/__init__.py create mode 100644 extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py create mode 100644 extensions/jupyterlab/connect_jupyterlab/install.json create mode 100644 extensions/jupyterlab/connect_jupyterlab/jest.config.js create mode 100644 extensions/jupyterlab/connect_jupyterlab/jupyter-config/server-config/connect_jupyterlab.json create mode 100644 extensions/jupyterlab/connect_jupyterlab/package.json create mode 100644 extensions/jupyterlab/connect_jupyterlab/pyproject.toml create mode 100644 extensions/jupyterlab/connect_jupyterlab/setup.py create mode 100644 extensions/jupyterlab/connect_jupyterlab/src/__tests__/connect_jupyterlab.spec.ts create mode 100644 extensions/jupyterlab/connect_jupyterlab/src/handler.ts create mode 100644 extensions/jupyterlab/connect_jupyterlab/src/index.ts create mode 100644 extensions/jupyterlab/connect_jupyterlab/style/base.css create mode 100644 extensions/jupyterlab/connect_jupyterlab/style/index.css create mode 100644 extensions/jupyterlab/connect_jupyterlab/style/index.js create mode 100644 extensions/jupyterlab/connect_jupyterlab/tsconfig.json create mode 100644 extensions/jupyterlab/connect_jupyterlab/tsconfig.test.json create mode 100644 extensions/jupyterlab/connect_jupyterlab/ui-tests/README.md create mode 100644 extensions/jupyterlab/connect_jupyterlab/ui-tests/jupyter_server_test_config.py create mode 100644 extensions/jupyterlab/connect_jupyterlab/ui-tests/package.json create mode 100644 extensions/jupyterlab/connect_jupyterlab/ui-tests/playwright.config.js create mode 100644 extensions/jupyterlab/connect_jupyterlab/ui-tests/tests/connect_jupyterlab.spec.ts create mode 100644 extensions/jupyterlab/connect_jupyterlab/ui-tests/yarn.lock diff --git a/extensions/jupyterlab/connect_jupyterlab/.copier-answers.yml b/extensions/jupyterlab/connect_jupyterlab/.copier-answers.yml new file mode 100644 index 000000000..30ff6c9b1 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/.copier-answers.yml @@ -0,0 +1,19 @@ +# Changes here will be overwritten by Copier; NEVER EDIT MANUALLY +_commit: v4.2.0 +_src_path: https://github.com/jupyterlab/extension-template +author_email: mike@posit.co +author_name: Michael Marchetti +data_format: string +file_extension: '' +has_binder: false +has_settings: false +kind: server +labextension_name: connect_jupyterlab +mimetype: '' +mimetype_name: '' +project_short_description: A JupyterLab extension for publishing to Posit Connect. +python_name: connect_jupyterlab +repository: https://github.com/rstudio/publishing-client +test: true +viewer_name: '' + diff --git a/extensions/jupyterlab/connect_jupyterlab/.github/workflows/build.yml b/extensions/jupyterlab/connect_jupyterlab/.github/workflows/build.yml new file mode 100644 index 000000000..c05ff42f5 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/.github/workflows/build.yml @@ -0,0 +1,155 @@ +name: Build + +on: + push: + branches: main + pull_request: + branches: '*' + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Base Setup + uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + + - name: Install dependencies + run: python -m pip install -U "jupyterlab>=4.0.0,<5" + + - name: Lint the extension + run: | + set -eux + jlpm + jlpm run lint:check + + - name: Test the extension + run: | + set -eux + jlpm run test + + - name: Build the extension + run: | + set -eux + python -m pip install .[test] + + pytest -vv -r ap --cov connect_jupyterlab + jupyter server extension list + jupyter server extension list 2>&1 | grep -ie "connect_jupyterlab.*OK" + + jupyter labextension list + jupyter labextension list 2>&1 | grep -ie "connect_jupyterlab.*OK" + python -m jupyterlab.browser_check + + - name: Package the extension + run: | + set -eux + + pip install build + python -m build + pip uninstall -y "connect_jupyterlab" jupyterlab + + - name: Upload extension packages + uses: actions/upload-artifact@v3 + with: + name: extension-artifacts + path: dist/connect_jupyterlab* + if-no-files-found: error + + test_isolated: + needs: build + runs-on: ubuntu-latest + + steps: + - name: Install Python + uses: actions/setup-python@v4 + with: + python-version: '3.9' + architecture: 'x64' + - uses: actions/download-artifact@v3 + with: + name: extension-artifacts + - name: Install and Test + run: | + set -eux + # Remove NodeJS, twice to take care of system and locally installed node versions. + sudo rm -rf $(which node) + sudo rm -rf $(which node) + + pip install "jupyterlab>=4.0.0,<5" connect_jupyterlab*.whl + + + jupyter server extension list + jupyter server extension list 2>&1 | grep -ie "connect_jupyterlab.*OK" + + jupyter labextension list + jupyter labextension list 2>&1 | grep -ie "connect_jupyterlab.*OK" + python -m jupyterlab.browser_check --no-browser-test + + integration-tests: + name: Integration tests + needs: build + runs-on: ubuntu-latest + + env: + PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/pw-browsers + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Base Setup + uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + + - name: Download extension package + uses: actions/download-artifact@v3 + with: + name: extension-artifacts + + - name: Install the extension + run: | + set -eux + python -m pip install "jupyterlab>=4.0.0,<5" connect_jupyterlab*.whl + + - name: Install dependencies + working-directory: ui-tests + env: + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + run: jlpm install + + - name: Set up browser cache + uses: actions/cache@v3 + with: + path: | + ${{ github.workspace }}/pw-browsers + key: ${{ runner.os }}-${{ hashFiles('ui-tests/yarn.lock') }} + + - name: Install browser + run: jlpm playwright install chromium + working-directory: ui-tests + + - name: Execute integration tests + working-directory: ui-tests + run: | + jlpm playwright test + + - name: Upload Playwright Test report + if: always() + uses: actions/upload-artifact@v3 + with: + name: connect_jupyterlab-playwright-tests + path: | + ui-tests/test-results + ui-tests/playwright-report + + check_links: + name: Check Links + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - uses: actions/checkout@v3 + - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + - uses: jupyterlab/maintainer-tools/.github/actions/check-links@v1 diff --git a/extensions/jupyterlab/connect_jupyterlab/.github/workflows/check-release.yml b/extensions/jupyterlab/connect_jupyterlab/.github/workflows/check-release.yml new file mode 100644 index 000000000..da7913489 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/.github/workflows/check-release.yml @@ -0,0 +1,26 @@ +name: Check Release +on: + push: + branches: ["main"] + pull_request: + branches: ["*"] + +jobs: + check_release: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Base Setup + uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + - name: Check Release + uses: jupyter-server/jupyter_releaser/.github/actions/check-release@v2 + with: + + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Upload Distributions + uses: actions/upload-artifact@v3 + with: + name: connect_jupyterlab-releaser-dist-${{ github.run_number }} + path: .jupyter_releaser_checkout/dist diff --git a/extensions/jupyterlab/connect_jupyterlab/.github/workflows/enforce-label.yml b/extensions/jupyterlab/connect_jupyterlab/.github/workflows/enforce-label.yml new file mode 100644 index 000000000..725feab5c --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/.github/workflows/enforce-label.yml @@ -0,0 +1,13 @@ +name: Enforce PR label + +on: + pull_request: + types: [labeled, unlabeled, opened, edited, synchronize] +jobs: + enforce-label: + runs-on: ubuntu-latest + permissions: + pull-requests: write + steps: + - name: enforce-triage-label + uses: jupyterlab/maintainer-tools/.github/actions/enforce-label@v1 diff --git a/extensions/jupyterlab/connect_jupyterlab/.github/workflows/prep-release.yml b/extensions/jupyterlab/connect_jupyterlab/.github/workflows/prep-release.yml new file mode 100644 index 000000000..6f0928106 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/.github/workflows/prep-release.yml @@ -0,0 +1,41 @@ +name: "Step 1: Prep Release" +on: + workflow_dispatch: + inputs: + version_spec: + description: "New Version Specifier" + default: "next" + required: false + branch: + description: "The branch to target" + required: false + post_version_spec: + description: "Post Version Specifier" + required: false + since: + description: "Use PRs with activity since this date or git reference" + required: false + since_last_stable: + description: "Use PRs with activity since the last stable git tag" + required: false + type: boolean +jobs: + prep_release: + runs-on: ubuntu-latest + steps: + - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + + - name: Prep Release + id: prep-release + uses: jupyter-server/jupyter_releaser/.github/actions/prep-release@v2 + with: + token: ${{ secrets.ADMIN_GITHUB_TOKEN }} + version_spec: ${{ github.event.inputs.version_spec }} + post_version_spec: ${{ github.event.inputs.post_version_spec }} + branch: ${{ github.event.inputs.branch }} + since: ${{ github.event.inputs.since }} + since_last_stable: ${{ github.event.inputs.since_last_stable }} + + - name: "** Next Step **" + run: | + echo "Optional): Review Draft Release: ${{ steps.prep-release.outputs.release_url }}" diff --git a/extensions/jupyterlab/connect_jupyterlab/.github/workflows/publish-release.yml b/extensions/jupyterlab/connect_jupyterlab/.github/workflows/publish-release.yml new file mode 100644 index 000000000..1ddf2e2e5 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/.github/workflows/publish-release.yml @@ -0,0 +1,57 @@ +name: "Step 2: Publish Release" +on: + workflow_dispatch: + inputs: + branch: + description: "The target branch" + required: false + release_url: + description: "The URL of the draft GitHub release" + required: false + steps_to_skip: + description: "Comma separated list of steps to skip" + required: false + +jobs: + publish_release: + runs-on: ubuntu-latest + permissions: + # This is useful if you want to use PyPI trusted publisher + # and NPM provenance + id-token: write + steps: + - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + + - name: Populate Release + id: populate-release + uses: jupyter-server/jupyter_releaser/.github/actions/populate-release@v2 + with: + token: ${{ secrets.ADMIN_GITHUB_TOKEN }} + branch: ${{ github.event.inputs.branch }} + release_url: ${{ github.event.inputs.release_url }} + steps_to_skip: ${{ github.event.inputs.steps_to_skip }} + + - name: Finalize Release + id: finalize-release + env: + # The following are needed if you use legacy PyPI set up + # PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} + # PYPI_TOKEN_MAP: ${{ secrets.PYPI_TOKEN_MAP }} + # TWINE_USERNAME: __token__ + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + uses: jupyter-server/jupyter-releaser/.github/actions/finalize-release@v2 + with: + token: ${{ secrets.ADMIN_GITHUB_TOKEN }} + release_url: ${{ steps.populate-release.outputs.release_url }} + + - name: "** Next Step **" + if: ${{ success() }} + run: | + echo "Verify the final release" + echo ${{ steps.finalize-release.outputs.release_url }} + + - name: "** Failure Message **" + if: ${{ failure() }} + run: | + echo "Failed to Publish the Draft Release Url:" + echo ${{ steps.populate-release.outputs.release_url }} diff --git a/extensions/jupyterlab/connect_jupyterlab/.github/workflows/update-integration-tests.yml b/extensions/jupyterlab/connect_jupyterlab/.github/workflows/update-integration-tests.yml new file mode 100644 index 000000000..4426dcad6 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/.github/workflows/update-integration-tests.yml @@ -0,0 +1,47 @@ +name: Update Playwright Snapshots + +on: + issue_comment: + types: [created, edited] + +permissions: + contents: write + pull-requests: write + +jobs: + update-snapshots: + if: ${{ github.event.issue.pull_request && contains(github.event.comment.body, 'please update playwright snapshots') }} + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Configure git to use https + run: git config --global hub.protocol https + + - name: Checkout the branch from the PR that triggered the job + run: hub pr checkout ${{ github.event.issue.number }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Base Setup + uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + + - name: Install dependencies + run: python -m pip install -U "jupyterlab>=4.0.0,<5" + + - name: Install extension + run: | + set -eux + jlpm + python -m pip install . + + - uses: jupyterlab/maintainer-tools/.github/actions/update-snapshots@v1 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + # Playwright knows how to start JupyterLab server + start_server_script: 'null' + test_folder: ui-tests diff --git a/extensions/jupyterlab/connect_jupyterlab/.gitignore b/extensions/jupyterlab/connect_jupyterlab/.gitignore new file mode 100644 index 000000000..b26602e92 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/.gitignore @@ -0,0 +1,125 @@ +*.bundle.* +lib/ +node_modules/ +*.log +.eslintcache +.stylelintcache +*.egg-info/ +.ipynb_checkpoints +*.tsbuildinfo +connect_jupyterlab/labextension +# Version file is handled by hatchling +connect_jupyterlab/_version.py + +# Integration tests +ui-tests/test-results/ +ui-tests/playwright-report/ + +# Created by https://www.gitignore.io/api/python +# Edit at https://www.gitignore.io/?templates=python + +### Python ### +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage/ +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# Mr Developer +.mr.developer.cfg +.project +.pydevproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# End of https://www.gitignore.io/api/python + +# OSX files +.DS_Store + +# Yarn cache +.yarn/ diff --git a/extensions/jupyterlab/connect_jupyterlab/.prettierignore b/extensions/jupyterlab/connect_jupyterlab/.prettierignore new file mode 100644 index 000000000..6322dc9f1 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/.prettierignore @@ -0,0 +1,6 @@ +node_modules +**/node_modules +**/lib +**/package.json +!/package.json +connect_jupyterlab diff --git a/extensions/jupyterlab/connect_jupyterlab/.yarnrc.yml b/extensions/jupyterlab/connect_jupyterlab/.yarnrc.yml new file mode 100644 index 000000000..3186f3f07 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/.yarnrc.yml @@ -0,0 +1 @@ +nodeLinker: node-modules diff --git a/extensions/jupyterlab/connect_jupyterlab/CHANGELOG.md b/extensions/jupyterlab/connect_jupyterlab/CHANGELOG.md new file mode 100644 index 000000000..2d352af42 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/CHANGELOG.md @@ -0,0 +1,5 @@ +# Changelog + + + + diff --git a/extensions/jupyterlab/connect_jupyterlab/LICENSE b/extensions/jupyterlab/connect_jupyterlab/LICENSE new file mode 100644 index 000000000..9a2e6e9ce --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/LICENSE @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2023, Posit PBC +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/extensions/jupyterlab/connect_jupyterlab/README.md b/extensions/jupyterlab/connect_jupyterlab/README.md new file mode 100644 index 000000000..d57253db8 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/README.md @@ -0,0 +1,138 @@ +# connect_jupyterlab + +[![Github Actions Status](https://github.com/rstudio/publishing-client/workflows/Build/badge.svg)](https://github.com/rstudio/publishing-client/actions/workflows/build.yml) +A JupyterLab extension for publishing to Posit Connect. + +This extension is composed of a Python package named `connect_jupyterlab` +for the server extension and a NPM package named `connect_jupyterlab` +for the frontend extension. + +## Requirements + +- JupyterLab >= 4.0.0 + +## Install + +To install the extension, execute: + +```bash +pip install connect_jupyterlab +``` + +## Uninstall + +To remove the extension, execute: + +```bash +pip uninstall connect_jupyterlab +``` + +## Troubleshoot + +If you are seeing the frontend extension, but it is not working, check +that the server extension is enabled: + +```bash +jupyter server extension list +``` + +If the server extension is installed and enabled, but you are not seeing +the frontend extension, check the frontend extension is installed: + +```bash +jupyter labextension list +``` + +## Contributing + +### Development install + +Note: You will need NodeJS to build the extension package. + +The `jlpm` command is JupyterLab's pinned version of +[yarn](https://yarnpkg.com/) that is installed with JupyterLab. You may use +`yarn` or `npm` in lieu of `jlpm` below. + +```bash +# Clone the repo to your local environment +# Change directory to the connect_jupyterlab directory +# Install package in development mode +pip install -e ".[test]" +# Link your development version of the extension with JupyterLab +jupyter labextension develop . --overwrite +# Server extension must be manually installed in develop mode +jupyter server extension enable connect_jupyterlab +# Rebuild extension Typescript source after making changes +jlpm build +``` + +You can watch the source directory and run JupyterLab at the same time in different terminals to watch for changes in the extension's source and automatically rebuild the extension. + +```bash +# Watch the source directory in one terminal, automatically rebuilding when needed +jlpm watch +# Run JupyterLab in another terminal +jupyter lab +``` + +With the watch command running, every saved change will immediately be built locally and available in your running JupyterLab. Refresh JupyterLab to load the change in your browser (you may need to wait several seconds for the extension to be rebuilt). + +By default, the `jlpm build` command generates the source maps for this extension to make it easier to debug using the browser dev tools. To also generate source maps for the JupyterLab core extensions, you can run the following command: + +```bash +jupyter lab build --minimize=False +``` + +### Development uninstall + +```bash +# Server extension must be manually disabled in develop mode +jupyter server extension disable connect_jupyterlab +pip uninstall connect_jupyterlab +``` + +In development mode, you will also need to remove the symlink created by `jupyter labextension develop` +command. To find its location, you can run `jupyter labextension list` to figure out where the `labextensions` +folder is located. Then you can remove the symlink named `connect_jupyterlab` within that folder. + +### Testing the extension + +#### Server tests + +This extension is using [Pytest](https://docs.pytest.org/) for Python code testing. + +Install test dependencies (needed only once): + +```sh +pip install -e ".[test]" +# Each time you install the Python package, you need to restore the front-end extension link +jupyter labextension develop . --overwrite +``` + +To execute them, run: + +```sh +pytest -vv -r ap --cov connect_jupyterlab +``` + +#### Frontend tests + +This extension is using [Jest](https://jestjs.io/) for JavaScript code testing. + +To execute them, execute: + +```sh +jlpm +jlpm test +``` + +#### Integration tests + +This extension uses [Playwright](https://playwright.dev/docs/intro) for the integration tests (aka user level tests). +More precisely, the JupyterLab helper [Galata](https://github.com/jupyterlab/jupyterlab/tree/master/galata) is used to handle testing the extension in JupyterLab. + +More information are provided within the [ui-tests](./ui-tests/README.md) README. + +### Packaging the extension + +See [RELEASE](RELEASE.md) diff --git a/extensions/jupyterlab/connect_jupyterlab/RELEASE.md b/extensions/jupyterlab/connect_jupyterlab/RELEASE.md new file mode 100644 index 000000000..9e4bd1607 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/RELEASE.md @@ -0,0 +1,111 @@ +# Making a new release of connect_jupyterlab + +The extension can be published to `PyPI` and `npm` manually or using the [Jupyter Releaser](https://github.com/jupyter-server/jupyter_releaser). + +## Manual release + +### Python package + +This extension can be distributed as Python packages. All of the Python +packaging instructions are in the `pyproject.toml` file to wrap your extension in a +Python package. Before generating a package, you first need to install some tools: + +```bash +pip install build twine hatch +``` + +Bump the version using `hatch`. By default this will create a tag. +See the docs on [hatch-nodejs-version](https://github.com/agoose77/hatch-nodejs-version#semver) for details. + +```bash +hatch version +``` + +Make sure to clean up all the development files before building the package: + +```bash +jlpm clean:all +``` + +You could also clean up the local git repository: + +```bash +git clean -dfX +``` + +To create a Python source package (`.tar.gz`) and the binary package (`.whl`) in the `dist/` directory, do: + +```bash +python -m build +``` + +> `python setup.py sdist bdist_wheel` is deprecated and will not work for this package. + +Then to upload the package to PyPI, do: + +```bash +twine upload dist/* +``` + +### NPM package + +To publish the frontend part of the extension as a NPM package, do: + +```bash +npm login +npm publish --access public +``` + +## Automated releases with the Jupyter Releaser + +The extension repository should already be compatible with the Jupyter Releaser. + +Check out the [workflow documentation](https://jupyter-releaser.readthedocs.io/en/latest/get_started/making_release_from_repo.html) for more information. + +Here is a summary of the steps to cut a new release: + +- Add tokens to the [Github Secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets) in the repository: + - `ADMIN_GITHUB_TOKEN` (with "public_repo" and "repo:status" permissions); see the [documentation](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) + - `NPM_TOKEN` (with "automation" permission); see the [documentation](https://docs.npmjs.com/creating-and-viewing-access-tokens) +- Set up PyPI + +
Using PyPI trusted publisher (modern way) + +- Set up your PyPI project by [adding a trusted publisher](https://docs.pypi.org/trusted-publishers/adding-a-publisher/) + - The _workflow name_ is `publish-release.yml` and the _environment_ should be left blank. +- Ensure the publish release job as `permissions`: `id-token : write` (see the [documentation](https://docs.pypi.org/trusted-publishers/using-a-publisher/)) + +
+ +
Using PyPI token (legacy way) + +- If the repo generates PyPI release(s), create a scoped PyPI [token](https://packaging.python.org/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/#saving-credentials-on-github). We recommend using a scoped token for security reasons. + +- You can store the token as `PYPI_TOKEN` in your fork's `Secrets`. + + - Advanced usage: if you are releasing multiple repos, you can create a secret named `PYPI_TOKEN_MAP` instead of `PYPI_TOKEN` that is formatted as follows: + + ```text + owner1/repo1,token1 + owner2/repo2,token2 + ``` + + If you have multiple Python packages in the same repository, you can point to them as follows: + + ```text + owner1/repo1/path/to/package1,token1 + owner1/repo1/path/to/package2,token2 + ``` + +
+ +- Go to the Actions panel +- Run the "Step 1: Prep Release" workflow +- Check the draft changelog +- Run the "Step 2: Publish Release" workflow + +## Publishing to `conda-forge` + +If the package is not on conda forge yet, check the documentation to learn how to add it: https://conda-forge.org/docs/maintainer/adding_pkgs.html + +Otherwise a bot should pick up the new version publish to PyPI, and open a new PR on the feedstock repository automatically. diff --git a/extensions/jupyterlab/connect_jupyterlab/babel.config.js b/extensions/jupyterlab/connect_jupyterlab/babel.config.js new file mode 100644 index 000000000..8b5c76420 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/babel.config.js @@ -0,0 +1 @@ +module.exports = require('@jupyterlab/testutils/lib/babel.config'); diff --git a/extensions/jupyterlab/connect_jupyterlab/conftest.py b/extensions/jupyterlab/connect_jupyterlab/conftest.py new file mode 100644 index 000000000..61d5492e5 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/conftest.py @@ -0,0 +1,8 @@ +import pytest + +pytest_plugins = ("pytest_jupyter.jupyter_server", ) + + +@pytest.fixture +def jp_server_config(jp_server_config): + return {"ServerApp": {"jpserver_extensions": {"connect_jupyterlab": True}}} diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/__init__.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/__init__.py new file mode 100644 index 000000000..58409d60b --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/__init__.py @@ -0,0 +1,36 @@ +try: + from ._version import __version__ +except ImportError: + # Fallback when using the package in dev mode without installing + # in editable mode with pip. It is highly recommended to install + # the package from a stable release or in editable mode: https://pip.pypa.io/en/stable/topics/local-project-installs/#editable-installs + import warnings + warnings.warn("Importing 'connect_jupyterlab' outside a proper installation.") + __version__ = "dev" +from .handlers import setup_handlers + + +def _jupyter_labextension_paths(): + return [{ + "src": "labextension", + "dest": "connect_jupyterlab" + }] + + +def _jupyter_server_extension_points(): + return [{ + "module": "connect_jupyterlab" + }] + + +def _load_jupyter_server_extension(server_app): + """Registers the API handler to receive HTTP requests from the frontend extension. + + Parameters + ---------- + server_app: jupyterlab.labapp.LabApp + JupyterLab application instance + """ + setup_handlers(server_app.web_app) + name = "connect_jupyterlab" + server_app.log.info(f"Registered {name} server extension") diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py new file mode 100644 index 000000000..368c89441 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py @@ -0,0 +1,24 @@ +import json + +from jupyter_server.base.handlers import APIHandler +from jupyter_server.utils import url_path_join +import tornado + +class RouteHandler(APIHandler): + # The following decorator should be present on all verb methods (head, get, post, + # patch, put, delete, options) to ensure only authorized user can request the + # Jupyter server + @tornado.web.authenticated + def get(self): + self.finish(json.dumps({ + "data": "This is /connect-jupyterlab/get-example endpoint!" + })) + + +def setup_handlers(web_app): + host_pattern = ".*$" + + base_url = web_app.settings["base_url"] + route_pattern = url_path_join(base_url, "connect-jupyterlab", "get-example") + handlers = [(route_pattern, RouteHandler)] + web_app.add_handlers(host_pattern, handlers) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/__init__.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/__init__.py new file mode 100644 index 000000000..bd2830a37 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/__init__.py @@ -0,0 +1 @@ +"""Python unit tests for connect_jupyterlab.""" diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py new file mode 100644 index 000000000..0b9150855 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py @@ -0,0 +1,13 @@ +import json + + +async def test_get_example(jp_fetch): + # When + response = await jp_fetch("connect-jupyterlab", "get-example") + + # Then + assert response.code == 200 + payload = json.loads(response.body) + assert payload == { + "data": "This is /connect-jupyterlab/get-example endpoint!" + } \ No newline at end of file diff --git a/extensions/jupyterlab/connect_jupyterlab/install.json b/extensions/jupyterlab/connect_jupyterlab/install.json new file mode 100644 index 000000000..520c2a5c4 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/install.json @@ -0,0 +1,5 @@ +{ + "packageManager": "python", + "packageName": "connect_jupyterlab", + "uninstallInstructions": "Use your Python package manager (pip, conda, etc.) to uninstall the package connect_jupyterlab" +} diff --git a/extensions/jupyterlab/connect_jupyterlab/jest.config.js b/extensions/jupyterlab/connect_jupyterlab/jest.config.js new file mode 100644 index 000000000..b0471e662 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/jest.config.js @@ -0,0 +1,28 @@ +const jestJupyterLab = require('@jupyterlab/testutils/lib/jest-config'); + +const esModules = [ + '@codemirror', + '@jupyter/ydoc', + '@jupyterlab/', + 'lib0', + 'nanoid', + 'vscode-ws-jsonrpc', + 'y-protocols', + 'y-websocket', + 'yjs' +].join('|'); + +const baseConfig = jestJupyterLab(__dirname); + +module.exports = { + ...baseConfig, + automock: false, + collectCoverageFrom: [ + 'src/**/*.{ts,tsx}', + '!src/**/*.d.ts', + '!src/**/.ipynb_checkpoints/*' + ], + coverageReporters: ['lcov', 'text'], + testRegex: 'src/.*/.*.spec.ts[x]?$', + transformIgnorePatterns: [`/node_modules/(?!${esModules}).+`] +}; diff --git a/extensions/jupyterlab/connect_jupyterlab/jupyter-config/server-config/connect_jupyterlab.json b/extensions/jupyterlab/connect_jupyterlab/jupyter-config/server-config/connect_jupyterlab.json new file mode 100644 index 000000000..559faf16d --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/jupyter-config/server-config/connect_jupyterlab.json @@ -0,0 +1,7 @@ +{ + "ServerApp": { + "jpserver_extensions": { + "connect_jupyterlab": true + } + } +} diff --git a/extensions/jupyterlab/connect_jupyterlab/package.json b/extensions/jupyterlab/connect_jupyterlab/package.json new file mode 100644 index 000000000..59fa9a17d --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/package.json @@ -0,0 +1,208 @@ +{ + "name": "connect_jupyterlab", + "version": "0.1.0", + "description": "A JupyterLab extension for publishing to Posit Connect.", + "keywords": [ + "jupyter", + "jupyterlab", + "jupyterlab-extension" + ], + "homepage": "https://github.com/rstudio/publishing-client", + "bugs": { + "url": "https://github.com/rstudio/publishing-client/issues" + }, + "license": "BSD-3-Clause", + "author": { + "name": "Michael Marchetti", + "email": "mike@posit.co" + }, + "files": [ + "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}", + "style/**/*.{css,js,eot,gif,html,jpg,json,png,svg,woff2,ttf}" + ], + "main": "lib/index.js", + "types": "lib/index.d.ts", + "style": "style/index.css", + "repository": { + "type": "git", + "url": "https://github.com/rstudio/publishing-client.git" + }, + "workspaces": [ + "ui-tests" + ], + "scripts": { + "build": "jlpm build:lib && jlpm build:labextension:dev", + "build:prod": "jlpm clean && jlpm build:lib:prod && jlpm build:labextension", + "build:labextension": "jupyter labextension build .", + "build:labextension:dev": "jupyter labextension build --development True .", + "build:lib": "tsc --sourceMap", + "build:lib:prod": "tsc", + "clean": "jlpm clean:lib", + "clean:lib": "rimraf lib tsconfig.tsbuildinfo", + "clean:lintcache": "rimraf .eslintcache .stylelintcache", + "clean:labextension": "rimraf connect_jupyterlab/labextension connect_jupyterlab/_version.py", + "clean:all": "jlpm clean:lib && jlpm clean:labextension && jlpm clean:lintcache", + "eslint": "jlpm eslint:check --fix", + "eslint:check": "eslint . --cache --ext .ts,.tsx", + "install:extension": "jlpm build", + "lint": "jlpm stylelint && jlpm prettier && jlpm eslint", + "lint:check": "jlpm stylelint:check && jlpm prettier:check && jlpm eslint:check", + "prettier": "jlpm prettier:base --write --list-different", + "prettier:base": "prettier \"**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}\"", + "prettier:check": "jlpm prettier:base --check", + "stylelint": "jlpm stylelint:check --fix", + "stylelint:check": "stylelint --cache \"style/**/*.css\"", + "test": "jest --coverage", + "watch": "run-p watch:src watch:labextension", + "watch:src": "tsc -w --sourceMap", + "watch:labextension": "jupyter labextension watch ." + }, + "dependencies": { + "@jupyterlab/application": "^4.0.0", + "@jupyterlab/coreutils": "^6.0.0", + "@jupyterlab/services": "^7.0.0" + }, + "devDependencies": { + "@jupyterlab/builder": "^4.0.0", + "@jupyterlab/testutils": "^4.0.0", + "@types/jest": "^29.2.0", + "@types/json-schema": "^7.0.11", + "@types/react": "^18.0.26", + "@types/react-addons-linked-state-mixin": "^0.14.22", + "@typescript-eslint/eslint-plugin": "^6.1.0", + "@typescript-eslint/parser": "^6.1.0", + "css-loader": "^6.7.1", + "eslint": "^8.36.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-prettier": "^5.0.0", + "jest": "^29.2.0", + "mkdirp": "^1.0.3", + "npm-run-all": "^4.1.5", + "prettier": "^3.0.0", + "rimraf": "^5.0.1", + "source-map-loader": "^1.0.2", + "style-loader": "^3.3.1", + "stylelint": "^15.10.1", + "stylelint-config-recommended": "^13.0.0", + "stylelint-config-standard": "^34.0.0", + "stylelint-csstree-validator": "^3.0.0", + "stylelint-prettier": "^4.0.0", + "typescript": "~5.0.2", + "yjs": "^13.5.0" + }, + "sideEffects": [ + "style/*.css", + "style/index.js" + ], + "styleModule": "style/index.js", + "publishConfig": { + "access": "public" + }, + "jupyterlab": { + "discovery": { + "server": { + "managers": [ + "pip" + ], + "base": { + "name": "connect_jupyterlab" + } + } + }, + "extension": true, + "outputDir": "connect_jupyterlab/labextension" + }, + "eslintIgnore": [ + "node_modules", + "dist", + "coverage", + "**/*.d.ts", + "tests", + "**/__tests__", + "ui-tests" + ], + "eslintConfig": { + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/eslint-recommended", + "plugin:@typescript-eslint/recommended", + "plugin:prettier/recommended" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "project": "tsconfig.json", + "sourceType": "module" + }, + "plugins": [ + "@typescript-eslint" + ], + "rules": { + "@typescript-eslint/naming-convention": [ + "error", + { + "selector": "interface", + "format": [ + "PascalCase" + ], + "custom": { + "regex": "^I[A-Z]", + "match": true + } + } + ], + "@typescript-eslint/no-unused-vars": [ + "warn", + { + "args": "none" + } + ], + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-namespace": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/quotes": [ + "error", + "single", + { + "avoidEscape": true, + "allowTemplateLiterals": false + } + ], + "curly": [ + "error", + "all" + ], + "eqeqeq": "error", + "prefer-arrow-callback": "error" + } + }, + "prettier": { + "singleQuote": true, + "trailingComma": "none", + "arrowParens": "avoid", + "endOfLine": "auto", + "overrides": [ + { + "files": "package.json", + "options": { + "tabWidth": 4 + } + } + ] + }, + "stylelint": { + "extends": [ + "stylelint-config-recommended", + "stylelint-config-standard", + "stylelint-prettier/recommended" + ], + "plugins": [ + "stylelint-csstree-validator" + ], + "rules": { + "csstree/validator": true, + "property-no-vendor-prefix": null, + "selector-no-vendor-prefix": null, + "value-no-vendor-prefix": null + } + } +} diff --git a/extensions/jupyterlab/connect_jupyterlab/pyproject.toml b/extensions/jupyterlab/connect_jupyterlab/pyproject.toml new file mode 100644 index 000000000..24c1a7040 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/pyproject.toml @@ -0,0 +1,87 @@ +[build-system] +requires = ["hatchling>=1.5.0", "jupyterlab>=4.0.0,<5", "hatch-nodejs-version"] +build-backend = "hatchling.build" + +[project] +name = "connect_jupyterlab" +readme = "README.md" +license = { file = "LICENSE" } +requires-python = ">=3.8" +classifiers = [ + "Framework :: Jupyter", + "Framework :: Jupyter :: JupyterLab", + "Framework :: Jupyter :: JupyterLab :: 4", + "Framework :: Jupyter :: JupyterLab :: Extensions", + "Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt", + "License :: OSI Approved :: BSD License", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", +] +dependencies = [ + "jupyter_server>=2.0.1,<3" +] +dynamic = ["version", "description", "authors", "urls", "keywords"] + +[project.optional-dependencies] +test = [ + "coverage", + "pytest", + "pytest-asyncio", + "pytest-cov", + "pytest-jupyter[server]>=0.6.0" +] + +[tool.hatch.version] +source = "nodejs" + +[tool.hatch.metadata.hooks.nodejs] +fields = ["description", "authors", "urls"] + +[tool.hatch.build.targets.sdist] +artifacts = ["connect_jupyterlab/labextension"] +exclude = [".github", "binder"] + +[tool.hatch.build.targets.wheel.shared-data] +"connect_jupyterlab/labextension" = "share/jupyter/labextensions/connect_jupyterlab" +"install.json" = "share/jupyter/labextensions/connect_jupyterlab/install.json" +"jupyter-config/server-config" = "etc/jupyter/jupyter_server_config.d" + +[tool.hatch.build.hooks.version] +path = "connect_jupyterlab/_version.py" + +[tool.hatch.build.hooks.jupyter-builder] +dependencies = ["hatch-jupyter-builder>=0.5"] +build-function = "hatch_jupyter_builder.npm_builder" +ensured-targets = [ + "connect_jupyterlab/labextension/static/style.js", + "connect_jupyterlab/labextension/package.json", +] +skip-if-exists = ["connect_jupyterlab/labextension/static/style.js"] + +[tool.hatch.build.hooks.jupyter-builder.build-kwargs] +build_cmd = "build:prod" +npm = ["jlpm"] + +[tool.hatch.build.hooks.jupyter-builder.editable-build-kwargs] +build_cmd = "install:extension" +npm = ["jlpm"] +source_dir = "src" +build_dir = "connect_jupyterlab/labextension" + +[tool.jupyter-releaser.options] +version_cmd = "hatch version" + +[tool.jupyter-releaser.hooks] +before-build-npm = [ + "python -m pip install 'jupyterlab>=4.0.0,<5'", + "jlpm", + "jlpm build:prod" +] +before-build-python = ["jlpm clean:all"] + +[tool.check-wheel-contents] +ignore = ["W002"] diff --git a/extensions/jupyterlab/connect_jupyterlab/setup.py b/extensions/jupyterlab/connect_jupyterlab/setup.py new file mode 100644 index 000000000..aefdf20db --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/setup.py @@ -0,0 +1 @@ +__import__("setuptools").setup() diff --git a/extensions/jupyterlab/connect_jupyterlab/src/__tests__/connect_jupyterlab.spec.ts b/extensions/jupyterlab/connect_jupyterlab/src/__tests__/connect_jupyterlab.spec.ts new file mode 100644 index 000000000..3ecd43972 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/src/__tests__/connect_jupyterlab.spec.ts @@ -0,0 +1,9 @@ +/** + * Example of [Jest](https://jestjs.io/docs/getting-started) unit tests + */ + +describe('connect_jupyterlab', () => { + it('should be tested', () => { + expect(1 + 1).toEqual(2); + }); +}); diff --git a/extensions/jupyterlab/connect_jupyterlab/src/handler.ts b/extensions/jupyterlab/connect_jupyterlab/src/handler.ts new file mode 100644 index 000000000..0c98eb0df --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/src/handler.ts @@ -0,0 +1,46 @@ +import { URLExt } from '@jupyterlab/coreutils'; + +import { ServerConnection } from '@jupyterlab/services'; + +/** + * Call the API extension + * + * @param endPoint API REST end point for the extension + * @param init Initial values for the request + * @returns The response body interpreted as JSON + */ +export async function requestAPI( + endPoint = '', + init: RequestInit = {} +): Promise { + // Make request to Jupyter API + const settings = ServerConnection.makeSettings(); + const requestUrl = URLExt.join( + settings.baseUrl, + 'connect-jupyterlab', // API Namespace + endPoint + ); + + let response: Response; + try { + response = await ServerConnection.makeRequest(requestUrl, init, settings); + } catch (error) { + throw new ServerConnection.NetworkError(error as any); + } + + let data: any = await response.text(); + + if (data.length > 0) { + try { + data = JSON.parse(data); + } catch (error) { + console.log('Not a JSON response body.', response); + } + } + + if (!response.ok) { + throw new ServerConnection.ResponseError(response, data.message || data); + } + + return data; +} diff --git a/extensions/jupyterlab/connect_jupyterlab/src/index.ts b/extensions/jupyterlab/connect_jupyterlab/src/index.ts new file mode 100644 index 000000000..34c941d1f --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/src/index.ts @@ -0,0 +1,30 @@ +import { + JupyterFrontEnd, + JupyterFrontEndPlugin +} from '@jupyterlab/application'; + +import { requestAPI } from './handler'; + +/** + * Initialization data for the connect_jupyterlab extension. + */ +const plugin: JupyterFrontEndPlugin = { + id: 'connect_jupyterlab:plugin', + description: 'A JupyterLab extension for publishing to Posit Connect.', + autoStart: true, + activate: (app: JupyterFrontEnd) => { + console.log('JupyterLab extension connect_jupyterlab is activated!'); + + requestAPI('get-example') + .then(data => { + console.log(data); + }) + .catch(reason => { + console.error( + `The connect_jupyterlab server extension appears to be missing.\n${reason}` + ); + }); + } +}; + +export default plugin; diff --git a/extensions/jupyterlab/connect_jupyterlab/style/base.css b/extensions/jupyterlab/connect_jupyterlab/style/base.css new file mode 100644 index 000000000..e11f45777 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/style/base.css @@ -0,0 +1,5 @@ +/* + See the JupyterLab Developer Guide for useful CSS Patterns: + + https://jupyterlab.readthedocs.io/en/stable/developer/css.html +*/ diff --git a/extensions/jupyterlab/connect_jupyterlab/style/index.css b/extensions/jupyterlab/connect_jupyterlab/style/index.css new file mode 100644 index 000000000..8a7ea29e6 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/style/index.css @@ -0,0 +1 @@ +@import url('base.css'); diff --git a/extensions/jupyterlab/connect_jupyterlab/style/index.js b/extensions/jupyterlab/connect_jupyterlab/style/index.js new file mode 100644 index 000000000..a028a7640 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/style/index.js @@ -0,0 +1 @@ +import './base.css'; diff --git a/extensions/jupyterlab/connect_jupyterlab/tsconfig.json b/extensions/jupyterlab/connect_jupyterlab/tsconfig.json new file mode 100644 index 000000000..98979175c --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "composite": true, + "declaration": true, + "esModuleInterop": true, + "incremental": true, + "jsx": "react", + "module": "esnext", + "moduleResolution": "node", + "noEmitOnError": true, + "noImplicitAny": true, + "noUnusedLocals": true, + "preserveWatchOutput": true, + "resolveJsonModule": true, + "outDir": "lib", + "rootDir": "src", + "strict": true, + "strictNullChecks": true, + "target": "ES2018" + }, + "include": ["src/*"] +} diff --git a/extensions/jupyterlab/connect_jupyterlab/tsconfig.test.json b/extensions/jupyterlab/connect_jupyterlab/tsconfig.test.json new file mode 100644 index 000000000..1de37fd0d --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/tsconfig.test.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig", + "compilerOptions": { + "types": ["jest"] + } +} diff --git a/extensions/jupyterlab/connect_jupyterlab/ui-tests/README.md b/extensions/jupyterlab/connect_jupyterlab/ui-tests/README.md new file mode 100644 index 000000000..dbe6e8aa5 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/ui-tests/README.md @@ -0,0 +1,167 @@ +# Integration Testing + +This folder contains the integration tests of the extension. + +They are defined using [Playwright](https://playwright.dev/docs/intro) test runner +and [Galata](https://github.com/jupyterlab/jupyterlab/tree/master/galata) helper. + +The Playwright configuration is defined in [playwright.config.js](./playwright.config.js). + +The JupyterLab server configuration to use for the integration test is defined +in [jupyter_server_test_config.py](./jupyter_server_test_config.py). + +The default configuration will produce video for failing tests and an HTML report. + +> There is a new experimental UI mode that you may fall in love with; see [that video](https://www.youtube.com/watch?v=jF0yA-JLQW0). + +## Run the tests + +> All commands are assumed to be executed from the root directory + +To run the tests, you need to: + +1. Compile the extension: + +```sh +jlpm install +jlpm build:prod +``` + +> Check the extension is installed in JupyterLab. + +2. Install test dependencies (needed only once): + +```sh +cd ./ui-tests +jlpm install +jlpm playwright install +cd .. +``` + +3. Execute the [Playwright](https://playwright.dev/docs/intro) tests: + +```sh +cd ./ui-tests +jlpm playwright test +``` + +Test results will be shown in the terminal. In case of any test failures, the test report +will be opened in your browser at the end of the tests execution; see +[Playwright documentation](https://playwright.dev/docs/test-reporters#html-reporter) +for configuring that behavior. + +## Update the tests snapshots + +> All commands are assumed to be executed from the root directory + +If you are comparing snapshots to validate your tests, you may need to update +the reference snapshots stored in the repository. To do that, you need to: + +1. Compile the extension: + +```sh +jlpm install +jlpm build:prod +``` + +> Check the extension is installed in JupyterLab. + +2. Install test dependencies (needed only once): + +```sh +cd ./ui-tests +jlpm install +jlpm playwright install +cd .. +``` + +3. Execute the [Playwright](https://playwright.dev/docs/intro) command: + +```sh +cd ./ui-tests +jlpm playwright test -u +``` + +> Some discrepancy may occurs between the snapshots generated on your computer and +> the one generated on the CI. To ease updating the snapshots on a PR, you can +> type `please update playwright snapshots` to trigger the update by a bot on the CI. +> Once the bot has computed new snapshots, it will commit them to the PR branch. + +## Create tests + +> All commands are assumed to be executed from the root directory + +To create tests, the easiest way is to use the code generator tool of playwright: + +1. Compile the extension: + +```sh +jlpm install +jlpm build:prod +``` + +> Check the extension is installed in JupyterLab. + +2. Install test dependencies (needed only once): + +```sh +cd ./ui-tests +jlpm install +jlpm playwright install +cd .. +``` + +3. Start the server: + +```sh +cd ./ui-tests +jlpm start +``` + +4. Execute the [Playwright code generator](https://playwright.dev/docs/codegen) in **another terminal**: + +```sh +cd ./ui-tests +jlpm playwright codegen localhost:8888 +``` + +## Debug tests + +> All commands are assumed to be executed from the root directory + +To debug tests, a good way is to use the inspector tool of playwright: + +1. Compile the extension: + +```sh +jlpm install +jlpm build:prod +``` + +> Check the extension is installed in JupyterLab. + +2. Install test dependencies (needed only once): + +```sh +cd ./ui-tests +jlpm install +jlpm playwright install +cd .. +``` + +3. Execute the Playwright tests in [debug mode](https://playwright.dev/docs/debug): + +```sh +cd ./ui-tests +jlpm playwright test --debug +``` + +## Upgrade Playwright and the browsers + +To update the web browser versions, you must update the package `@playwright/test`: + +```sh +cd ./ui-tests +jlpm up "@playwright/test" +jlpm playwright install +``` diff --git a/extensions/jupyterlab/connect_jupyterlab/ui-tests/jupyter_server_test_config.py b/extensions/jupyterlab/connect_jupyterlab/ui-tests/jupyter_server_test_config.py new file mode 100644 index 000000000..f2a94782a --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/ui-tests/jupyter_server_test_config.py @@ -0,0 +1,12 @@ +"""Server configuration for integration tests. + +!! Never use this configuration in production because it +opens the server to the world and provide access to JupyterLab +JavaScript objects through the global window variable. +""" +from jupyterlab.galata import configure_jupyter_server + +configure_jupyter_server(c) + +# Uncomment to set server log level to debug level +# c.ServerApp.log_level = "DEBUG" diff --git a/extensions/jupyterlab/connect_jupyterlab/ui-tests/package.json b/extensions/jupyterlab/connect_jupyterlab/ui-tests/package.json new file mode 100644 index 000000000..da77528c9 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/ui-tests/package.json @@ -0,0 +1,15 @@ +{ + "name": "connect_jupyterlab-ui-tests", + "version": "1.0.0", + "description": "JupyterLab connect_jupyterlab Integration Tests", + "private": true, + "scripts": { + "start": "jupyter lab --config jupyter_server_test_config.py", + "test": "jlpm playwright test", + "test:update": "jlpm playwright test --update-snapshots" + }, + "devDependencies": { + "@jupyterlab/galata": "^5.0.5", + "@playwright/test": "^1.37.0" + } +} diff --git a/extensions/jupyterlab/connect_jupyterlab/ui-tests/playwright.config.js b/extensions/jupyterlab/connect_jupyterlab/ui-tests/playwright.config.js new file mode 100644 index 000000000..9ece6fa11 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/ui-tests/playwright.config.js @@ -0,0 +1,14 @@ +/** + * Configuration for Playwright using default from @jupyterlab/galata + */ +const baseConfig = require('@jupyterlab/galata/lib/playwright-config'); + +module.exports = { + ...baseConfig, + webServer: { + command: 'jlpm start', + url: 'http://localhost:8888/lab', + timeout: 120 * 1000, + reuseExistingServer: !process.env.CI + } +}; diff --git a/extensions/jupyterlab/connect_jupyterlab/ui-tests/tests/connect_jupyterlab.spec.ts b/extensions/jupyterlab/connect_jupyterlab/ui-tests/tests/connect_jupyterlab.spec.ts new file mode 100644 index 000000000..684c4619a --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/ui-tests/tests/connect_jupyterlab.spec.ts @@ -0,0 +1,21 @@ +import { expect, test } from '@jupyterlab/galata'; + +/** + * Don't load JupyterLab webpage before running the tests. + * This is required to ensure we capture all log messages. + */ +test.use({ autoGoto: false }); + +test('should emit an activation console message', async ({ page }) => { + const logs: string[] = []; + + page.on('console', message => { + logs.push(message.text()); + }); + + await page.goto(); + + expect( + logs.filter(s => s === 'JupyterLab extension connect_jupyterlab is activated!') + ).toHaveLength(1); +}); diff --git a/extensions/jupyterlab/connect_jupyterlab/ui-tests/yarn.lock b/extensions/jupyterlab/connect_jupyterlab/ui-tests/yarn.lock new file mode 100644 index 000000000..e69de29bb From 89505d854157b065da893016500e8140adbbc1d1 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Tue, 12 Sep 2023 16:32:29 -0400 Subject: [PATCH 002/100] ignore local env/ --- .../jupyterlab/connect_jupyterlab/.gitignore | 1 + .../jupyterlab/connect_jupyterlab/package.json | 14 +++++++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/.gitignore b/extensions/jupyterlab/connect_jupyterlab/.gitignore index b26602e92..6fba71e52 100644 --- a/extensions/jupyterlab/connect_jupyterlab/.gitignore +++ b/extensions/jupyterlab/connect_jupyterlab/.gitignore @@ -86,6 +86,7 @@ target/ # pyenv .python-version +env/ # celery beat schedule file celerybeat-schedule diff --git a/extensions/jupyterlab/connect_jupyterlab/package.json b/extensions/jupyterlab/connect_jupyterlab/package.json index 59fa9a17d..1d4dbe993 100644 --- a/extensions/jupyterlab/connect_jupyterlab/package.json +++ b/extensions/jupyterlab/connect_jupyterlab/package.json @@ -100,14 +100,14 @@ }, "jupyterlab": { "discovery": { - "server": { - "managers": [ - "pip" - ], - "base": { - "name": "connect_jupyterlab" + "server": { + "managers": [ + "pip" + ], + "base": { + "name": "connect_jupyterlab" + } } - } }, "extension": true, "outputDir": "connect_jupyterlab/labextension" From 1b00a911ec8d8d369205994abd53693e533d4abf Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Tue, 12 Sep 2023 16:46:25 -0400 Subject: [PATCH 003/100] update instructions --- extensions/jupyterlab/connect_jupyterlab/README.md | 4 ++++ extensions/jupyterlab/connect_jupyterlab/pyproject.toml | 1 + 2 files changed, 5 insertions(+) diff --git a/extensions/jupyterlab/connect_jupyterlab/README.md b/extensions/jupyterlab/connect_jupyterlab/README.md index d57253db8..68a7238d5 100644 --- a/extensions/jupyterlab/connect_jupyterlab/README.md +++ b/extensions/jupyterlab/connect_jupyterlab/README.md @@ -56,6 +56,10 @@ The `jlpm` command is JupyterLab's pinned version of ```bash # Clone the repo to your local environment # Change directory to the connect_jupyterlab directory +# Create environment +conda create -p ./env python=3.11 nodejs=18 +conda activate ./env + # Install package in development mode pip install -e ".[test]" # Link your development version of the extension with JupyterLab diff --git a/extensions/jupyterlab/connect_jupyterlab/pyproject.toml b/extensions/jupyterlab/connect_jupyterlab/pyproject.toml index 24c1a7040..19d66b16e 100644 --- a/extensions/jupyterlab/connect_jupyterlab/pyproject.toml +++ b/extensions/jupyterlab/connect_jupyterlab/pyproject.toml @@ -29,6 +29,7 @@ dynamic = ["version", "description", "authors", "urls", "keywords"] [project.optional-dependencies] test = [ "coverage", + "jupyterlab>=4.0.0,<5", "pytest", "pytest-asyncio", "pytest-cov", From 289efc3dedafa822f02a48fe819a41be3a06592c Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Tue, 12 Sep 2023 17:21:37 -0400 Subject: [PATCH 004/100] add yarn.lock --- .../jupyterlab/connect_jupyterlab/yarn.lock | 11901 ++++++++++++++++ 1 file changed, 11901 insertions(+) create mode 100644 extensions/jupyterlab/connect_jupyterlab/yarn.lock diff --git a/extensions/jupyterlab/connect_jupyterlab/yarn.lock b/extensions/jupyterlab/connect_jupyterlab/yarn.lock new file mode 100644 index 000000000..4f4ef0b74 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/yarn.lock @@ -0,0 +1,11901 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 6 + cacheKey: 8 + +"@aashutoshrathi/word-wrap@npm:^1.2.3": + version: 1.2.6 + resolution: "@aashutoshrathi/word-wrap@npm:1.2.6" + checksum: ada901b9e7c680d190f1d012c84217ce0063d8f5c5a7725bb91ec3c5ed99bb7572680eb2d2938a531ccbaec39a95422fcd8a6b4a13110c7d98dd75402f66a0cd + languageName: node + linkType: hard + +"@ampproject/remapping@npm:^2.2.0": + version: 2.2.1 + resolution: "@ampproject/remapping@npm:2.2.1" + dependencies: + "@jridgewell/gen-mapping": ^0.3.0 + "@jridgewell/trace-mapping": ^0.3.9 + checksum: 03c04fd526acc64a1f4df22651186f3e5ef0a9d6d6530ce4482ec9841269cf7a11dbb8af79237c282d721c5312024ff17529cd72cc4768c11e999b58e2302079 + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.22.13": + version: 7.22.13 + resolution: "@babel/code-frame@npm:7.22.13" + dependencies: + "@babel/highlight": ^7.22.13 + chalk: ^2.4.2 + checksum: 22e342c8077c8b77eeb11f554ecca2ba14153f707b85294fcf6070b6f6150aae88a7b7436dd88d8c9289970585f3fe5b9b941c5aa3aa26a6d5a8ef3f292da058 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/compat-data@npm:7.22.9" + checksum: bed77d9044ce948b4327b30dd0de0779fa9f3a7ed1f2d31638714ed00229fa71fc4d1617ae0eb1fad419338d3658d0e9a5a083297451e09e73e078d0347ff808 + languageName: node + linkType: hard + +"@babel/core@npm:^7.10.2, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3": + version: 7.22.17 + resolution: "@babel/core@npm:7.22.17" + dependencies: + "@ampproject/remapping": ^2.2.0 + "@babel/code-frame": ^7.22.13 + "@babel/generator": ^7.22.15 + "@babel/helper-compilation-targets": ^7.22.15 + "@babel/helper-module-transforms": ^7.22.17 + "@babel/helpers": ^7.22.15 + "@babel/parser": ^7.22.16 + "@babel/template": ^7.22.15 + "@babel/traverse": ^7.22.17 + "@babel/types": ^7.22.17 + convert-source-map: ^1.7.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.3 + semver: ^6.3.1 + checksum: 355216a342d1b3952d7c040dd4c99ecef6b3501ba99a713703c1fec1ae73bc92a48a0c1234562bdbb4fd334b2e452f5a6c3bb282f0e613fa89e1518c91d1aea1 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.22.15, @babel/generator@npm:^7.7.2": + version: 7.22.15 + resolution: "@babel/generator@npm:7.22.15" + dependencies: + "@babel/types": ^7.22.15 + "@jridgewell/gen-mapping": ^0.3.2 + "@jridgewell/trace-mapping": ^0.3.17 + jsesc: ^2.5.1 + checksum: 5b2a3ccdc3634f6ea86e0a442722bcd430238369432d31f15b428a4ee8013c2f4f917b5b135bf4fc1d0a3e2f87f10fd4ce5d07955ecc2d3b9400a05c2a481374 + languageName: node + linkType: hard + +"@babel/helper-annotate-as-pure@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" + dependencies: + "@babel/types": ^7.22.5 + checksum: 53da330f1835c46f26b7bf4da31f7a496dee9fd8696cca12366b94ba19d97421ce519a74a837f687749318f94d1a37f8d1abcbf35e8ed22c32d16373b2f6198d + languageName: node + linkType: hard + +"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.22.15" + dependencies: + "@babel/types": ^7.22.15 + checksum: 639c697a1c729f9fafa2dd4c9af2e18568190299b5907bd4c2d0bc818fcbd1e83ffeecc2af24327a7faa7ac4c34edd9d7940510a5e66296c19bad17001cf5c7a + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.22.15, @babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6": + version: 7.22.15 + resolution: "@babel/helper-compilation-targets@npm:7.22.15" + dependencies: + "@babel/compat-data": ^7.22.9 + "@babel/helper-validator-option": ^7.22.15 + browserslist: ^4.21.9 + lru-cache: ^5.1.1 + semver: ^6.3.1 + checksum: ce85196769e091ae54dd39e4a80c2a9df1793da8588e335c383d536d54f06baf648d0a08fc873044f226398c4ded15c4ae9120ee18e7dfd7c639a68e3cdc9980 + languageName: node + linkType: hard + +"@babel/helper-create-class-features-plugin@npm:^7.22.11, @babel/helper-create-class-features-plugin@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/helper-create-class-features-plugin@npm:7.22.15" + dependencies: + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-function-name": ^7.22.5 + "@babel/helper-member-expression-to-functions": ^7.22.15 + "@babel/helper-optimise-call-expression": ^7.22.5 + "@babel/helper-replace-supers": ^7.22.9 + "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 52c500d8d164abb3a360b1b7c4b8fff77bc4a5920d3a2b41ae6e1d30617b0dc0b972c1f5db35b1752007e04a748908b4a99bc872b73549ae837e87dcdde005a3 + languageName: node + linkType: hard + +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.15" + dependencies: + "@babel/helper-annotate-as-pure": ^7.22.5 + regexpu-core: ^5.3.1 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 0243b8d4854f1dc8861b1029a46d3f6393ad72f366a5a08e36a4648aa682044f06da4c6e87a456260e1e1b33c999f898ba591a0760842c1387bcc93fbf2151a6 + languageName: node + linkType: hard + +"@babel/helper-define-polyfill-provider@npm:^0.4.2": + version: 0.4.2 + resolution: "@babel/helper-define-polyfill-provider@npm:0.4.2" + dependencies: + "@babel/helper-compilation-targets": ^7.22.6 + "@babel/helper-plugin-utils": ^7.22.5 + debug: ^4.1.1 + lodash.debounce: ^4.0.8 + resolve: ^1.14.2 + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 1f6dec0c5d0876d278fe15b71238eccc5f74c4e2efa2c78aaafa8bc2cc96336b8e68d94cd1a78497356c96e8b91b8c1f4452179820624d1702aee2f9832e6569 + languageName: node + linkType: hard + +"@babel/helper-environment-visitor@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-environment-visitor@npm:7.22.5" + checksum: 248532077d732a34cd0844eb7b078ff917c3a8ec81a7f133593f71a860a582f05b60f818dc5049c2212e5baa12289c27889a4b81d56ef409b4863db49646c4b1 + languageName: node + linkType: hard + +"@babel/helper-function-name@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-function-name@npm:7.22.5" + dependencies: + "@babel/template": ^7.22.5 + "@babel/types": ^7.22.5 + checksum: 6b1f6ce1b1f4e513bf2c8385a557ea0dd7fa37971b9002ad19268ca4384bbe90c09681fe4c076013f33deabc63a53b341ed91e792de741b4b35e01c00238177a + languageName: node + linkType: hard + +"@babel/helper-hoist-variables@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-hoist-variables@npm:7.22.5" + dependencies: + "@babel/types": ^7.22.5 + checksum: 394ca191b4ac908a76e7c50ab52102669efe3a1c277033e49467913c7ed6f7c64d7eacbeabf3bed39ea1f41731e22993f763b1edce0f74ff8563fd1f380d92cc + languageName: node + linkType: hard + +"@babel/helper-member-expression-to-functions@npm:^7.22.15, @babel/helper-member-expression-to-functions@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/helper-member-expression-to-functions@npm:7.22.15" + dependencies: + "@babel/types": ^7.22.15 + checksum: c7c5d01c402dd8902c2ec3093f203ed0fc3bc5f669328a084d2e663c4c06dd0415480ee8220c6f96ba9b2dc49545c0078f221fc3900ab1e65de69a12fe7b361f + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.22.15, @babel/helper-module-imports@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/helper-module-imports@npm:7.22.15" + dependencies: + "@babel/types": ^7.22.15 + checksum: ecd7e457df0a46f889228f943ef9b4a47d485d82e030676767e6a2fdcbdaa63594d8124d4b55fd160b41c201025aec01fc27580352b1c87a37c9c6f33d116702 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.22.15, @babel/helper-module-transforms@npm:^7.22.17, @babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.22.9": + version: 7.22.17 + resolution: "@babel/helper-module-transforms@npm:7.22.17" + dependencies: + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-module-imports": ^7.22.15 + "@babel/helper-simple-access": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/helper-validator-identifier": ^7.22.15 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 458021c74093e66179765fcc9d1c1cb694f7bdf98656f23486901d35636495c38aab4661547fac2142e13d887987d1ea30cc9fe42968376a51a99bcd207b4989 + languageName: node + linkType: hard + +"@babel/helper-optimise-call-expression@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-optimise-call-expression@npm:7.22.5" + dependencies: + "@babel/types": ^7.22.5 + checksum: c70ef6cc6b6ed32eeeec4482127e8be5451d0e5282d5495d5d569d39eb04d7f1d66ec99b327f45d1d5842a9ad8c22d48567e93fc502003a47de78d122e355f7c + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": + version: 7.22.5 + resolution: "@babel/helper-plugin-utils@npm:7.22.5" + checksum: c0fc7227076b6041acd2f0e818145d2e8c41968cc52fb5ca70eed48e21b8fe6dd88a0a91cbddf4951e33647336eb5ae184747ca706817ca3bef5e9e905151ff5 + languageName: node + linkType: hard + +"@babel/helper-remap-async-to-generator@npm:^7.22.5, @babel/helper-remap-async-to-generator@npm:^7.22.9": + version: 7.22.17 + resolution: "@babel/helper-remap-async-to-generator@npm:7.22.17" + dependencies: + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-wrap-function": ^7.22.17 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 59307e623d00b6f5fa7f974e29081b2243e3f7bc3a89df331e8c1f8815d83f97bd092404a28b8bef5299028e3259450b5a943f34e1b32c7c55350436d218ab13 + languageName: node + linkType: hard + +"@babel/helper-replace-supers@npm:^7.22.5, @babel/helper-replace-supers@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-replace-supers@npm:7.22.9" + dependencies: + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-member-expression-to-functions": ^7.22.5 + "@babel/helper-optimise-call-expression": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: d41471f56ff2616459d35a5df1900d5f0756ae78b1027040365325ef332d66e08e3be02a9489756d870887585ff222403a228546e93dd7019e19e59c0c0fe586 + languageName: node + linkType: hard + +"@babel/helper-simple-access@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-simple-access@npm:7.22.5" + dependencies: + "@babel/types": ^7.22.5 + checksum: fe9686714caf7d70aedb46c3cce090f8b915b206e09225f1e4dbc416786c2fdbbee40b38b23c268b7ccef749dd2db35f255338fb4f2444429874d900dede5ad2 + languageName: node + linkType: hard + +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.22.5" + dependencies: + "@babel/types": ^7.22.5 + checksum: 1012ef2295eb12dc073f2b9edf3425661e9b8432a3387e62a8bc27c42963f1f216ab3124228015c748770b2257b4f1fda882ca8fa34c0bf485e929ae5bc45244 + languageName: node + linkType: hard + +"@babel/helper-split-export-declaration@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/helper-split-export-declaration@npm:7.22.6" + dependencies: + "@babel/types": ^7.22.5 + checksum: e141cace583b19d9195f9c2b8e17a3ae913b7ee9b8120246d0f9ca349ca6f03cb2c001fd5ec57488c544347c0bb584afec66c936511e447fd20a360e591ac921 + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-string-parser@npm:7.22.5" + checksum: 836851ca5ec813077bbb303acc992d75a360267aa3b5de7134d220411c852a6f17de7c0d0b8c8dcc0f567f67874c00f4528672b2a4f1bc978a3ada64c8c78467 + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.22.15, @babel/helper-validator-identifier@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/helper-validator-identifier@npm:7.22.15" + checksum: eb0bee4bda664c0959924bc1ad5611eacfce806f46612202dd164fef1df8fef1a11682a1e7615288987100e9fb304982b6e2a4ff07ffe842ab8765b95ed1118c + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helper-validator-option@npm:7.22.15" + checksum: 68da52b1e10002a543161494c4bc0f4d0398c8fdf361d5f7f4272e95c45d5b32d974896d44f6a0ea7378c9204988879d73613ca683e13bd1304e46d25ff67a8d + languageName: node + linkType: hard + +"@babel/helper-wrap-function@npm:^7.22.17": + version: 7.22.17 + resolution: "@babel/helper-wrap-function@npm:7.22.17" + dependencies: + "@babel/helper-function-name": ^7.22.5 + "@babel/template": ^7.22.15 + "@babel/types": ^7.22.17 + checksum: 95328b508049b6edd9cadd2ac89b4d4812ebdfa54a2ae77791939d795d88d561b31fd3669eea5d13558372cf2422eda05177d7f742690b5023c712bc3f0aec8e + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helpers@npm:7.22.15" + dependencies: + "@babel/template": ^7.22.15 + "@babel/traverse": ^7.22.15 + "@babel/types": ^7.22.15 + checksum: 49f61a93cbae4df3328bda67af5db743fead659ae4242571226c3596b7df78546189cdf991fed1eca33b559de8abf396a90a001f474a1bab351418f07b7ae6ef + languageName: node + linkType: hard + +"@babel/highlight@npm:^7.22.13": + version: 7.22.13 + resolution: "@babel/highlight@npm:7.22.13" + dependencies: + "@babel/helper-validator-identifier": ^7.22.5 + chalk: ^2.4.2 + js-tokens: ^4.0.0 + checksum: 7266d2bff8aa8fc78eb65b6e92a8211e12897a731126a282d2f9bb50d8fcaa4c1b02af2284f990ac7e3ab8d892d448a2cab8f5ed0ea8a90bce2c025b11ebe802 + languageName: node + linkType: hard + +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.15, @babel/parser@npm:^7.22.16": + version: 7.22.16 + resolution: "@babel/parser@npm:7.22.16" + bin: + parser: ./bin/babel-parser.js + checksum: 944c756b5bdeb07b9fec16ecef6b3c61aff9d4c4b924abadcf01afa1840a740b8e2357ae00482b5b37daad6d2bfd848c947f27ad65138d687b6fdc924bc59edd + languageName: node + linkType: hard + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.22.15" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 8910ca21a7ec7c06f7b247d4b86c97c5aa15ef321518f44f6f490c5912fdf82c605aaa02b90892e375d82ccbedeadfdeadd922c1b836c9dd4c596871bf654753 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.22.15" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 + "@babel/plugin-transform-optional-chaining": ^7.22.15 + peerDependencies: + "@babel/core": ^7.13.0 + checksum: fbefedc0da014c37f1a50a8094ce7dbbf2181ae93243f23d6ecba2499b5b20196c2124d6a4dfe3e9e0125798e80593103e456352a4beb4e5c6f7c75efb80fdac + languageName: node + linkType: hard + +"@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2": + version: 7.21.0-placeholder-for-preset-env.2 + resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d97745d098b835d55033ff3a7fb2b895b9c5295b08a5759e4f20df325aa385a3e0bc9bd5ad8f2ec554a44d4e6525acfc257b8c5848a1345cb40f26a30e277e91 + languageName: node + linkType: hard + +"@babel/plugin-syntax-async-generators@npm:^7.8.4": + version: 7.8.4 + resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7ed1c1d9b9e5b64ef028ea5e755c0be2d4e5e4e3d6cf7df757b9a8c4cfa4193d268176d0f1f7fbecdda6fe722885c7fda681f480f3741d8a2d26854736f05367 + languageName: node + linkType: hard + +"@babel/plugin-syntax-bigint@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3a10849d83e47aec50f367a9e56a6b22d662ddce643334b087f9828f4c3dd73bdc5909aaeabe123fed78515767f9ca43498a0e621c438d1cd2802d7fae3c9648 + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-properties@npm:^7.12.13, @babel/plugin-syntax-class-properties@npm:^7.8.3": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 24f34b196d6342f28d4bad303612d7ff566ab0a013ce89e775d98d6f832969462e7235f3e7eaf17678a533d4be0ba45d3ae34ab4e5a9dcbda5d98d49e5efa2fc + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-static-block@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3e80814b5b6d4fe17826093918680a351c2d34398a914ce6e55d8083d72a9bdde4fbaf6a2dcea0e23a03de26dc2917ae3efd603d27099e2b98380345703bf948 + languageName: node + linkType: hard + +"@babel/plugin-syntax-dynamic-import@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ce307af83cf433d4ec42932329fad25fa73138ab39c7436882ea28742e1c0066626d224e0ad2988724c82644e41601cef607b36194f695cb78a1fcdc959637bd + languageName: node + linkType: hard + +"@babel/plugin-syntax-export-namespace-from@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-export-namespace-from@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 85740478be5b0de185228e7814451d74ab8ce0a26fcca7613955262a26e99e8e15e9da58f60c754b84515d4c679b590dbd3f2148f0f58025f4ae706f1c5a5d4a + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-assertions@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2b8b5572db04a7bef1e6cd20debf447e4eef7cb012616f5eceb8fa3e23ce469b8f76ee74fd6d1e158ba17a8f58b0aec579d092fb67c5a30e83ccfbc5754916c1 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-attributes@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 197b3c5ea2a9649347f033342cb222ab47f4645633695205c0250c6bf2af29e643753b8bb24a2db39948bef08e7c540babfd365591eb57fc110cb30b425ffc47 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-meta@npm:^7.10.4, @babel/plugin-syntax-import-meta@npm:^7.8.3": + version: 7.10.4 + resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 166ac1125d10b9c0c430e4156249a13858c0366d38844883d75d27389621ebe651115cb2ceb6dc011534d5055719fa1727b59f39e1ab3ca97820eef3dcab5b9b + languageName: node + linkType: hard + +"@babel/plugin-syntax-json-strings@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bf5aea1f3188c9a507e16efe030efb996853ca3cadd6512c51db7233cc58f3ac89ff8c6bdfb01d30843b161cfe7d321e1bf28da82f7ab8d7e6bc5464666f354a + languageName: node + linkType: hard + +"@babel/plugin-syntax-jsx@npm:^7.7.2": + version: 7.22.5 + resolution: "@babel/plugin-syntax-jsx@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8829d30c2617ab31393d99cec2978e41f014f4ac6f01a1cecf4c4dd8320c3ec12fdc3ce121126b2d8d32f6887e99ca1a0bad53dedb1e6ad165640b92b24980ce + languageName: node + linkType: hard + +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4, @babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": + version: 7.10.4 + resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 + languageName: node + linkType: hard + +"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 + languageName: node + linkType: hard + +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4, @babel/plugin-syntax-numeric-separator@npm:^7.8.3": + version: 7.10.4 + resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 + languageName: node + linkType: hard + +"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 + languageName: node + linkType: hard + +"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b317174783e6e96029b743ccff2a67d63d38756876e7e5d0ba53a322e38d9ca452c13354a57de1ad476b4c066dbae699e0ca157441da611117a47af88985ecda + languageName: node + linkType: hard + +"@babel/plugin-syntax-top-level-await@npm:^7.14.5, @babel/plugin-syntax-top-level-await@npm:^7.8.3": + version: 7.14.5 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.22.5 + resolution: "@babel/plugin-syntax-typescript@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8ab7718fbb026d64da93681a57797d60326097fd7cb930380c8bffd9eb101689e90142c760a14b51e8e69c88a73ba3da956cb4520a3b0c65743aee5c71ef360a + languageName: node + linkType: hard + +"@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: a651d700fe63ff0ddfd7186f4ebc24447ca734f114433139e3c027bc94a900d013cf1ef2e2db8430425ba542e39ae160c3b05f06b59fd4656273a3df97679e9c + languageName: node + linkType: hard + +"@babel/plugin-transform-arrow-functions@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 35abb6c57062802c7ce8bd96b2ef2883e3124370c688bbd67609f7d2453802fb73944df8808f893b6c67de978eb2bcf87bbfe325e46d6f39b5fcb09ece11d01a + languageName: node + linkType: hard + +"@babel/plugin-transform-async-generator-functions@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.22.15" + dependencies: + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-remap-async-to-generator": ^7.22.9 + "@babel/plugin-syntax-async-generators": ^7.8.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fad98786b446ce63bde0d14a221e2617eef5a7bbca62b49d96f16ab5e1694521234cfba6145b830fbf9af16d60a8a3dbf148e8694830bd91796fe333b0599e73 + languageName: node + linkType: hard + +"@babel/plugin-transform-async-to-generator@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.22.5" + dependencies: + "@babel/helper-module-imports": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-remap-async-to-generator": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b95f23f99dcb379a9f0a1c2a3bbea3f8dc0e1b16dc1ac8b484fe378370169290a7a63d520959a9ba1232837cf74a80e23f6facbe14fd42a3cda6d3c2d7168e62 + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoped-functions@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 416b1341858e8ca4e524dee66044735956ced5f478b2c3b9bc11ec2285b0c25d7dbb96d79887169eb938084c95d0a89338c8b2fe70d473bd9dc92e5d9db1732c + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoping@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-transform-block-scoping@npm:7.22.15" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c7091dc000b854ce0c471588ca0704ef1ce78cff954584a9f21c1668fd0669e7c8d5396fb72fe49a2216d9b96a400d435f424f27e41a097ef6c855f9c57df195 + languageName: node + linkType: hard + +"@babel/plugin-transform-class-properties@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-class-properties@npm:7.22.5" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b830152dfc2ff2f647f0abe76e6251babdfbef54d18c4b2c73a6bf76b1a00050a5d998dac80dc901a48514e95604324943a9dd39317073fe0928b559e0e0c579 + languageName: node + linkType: hard + +"@babel/plugin-transform-class-static-block@npm:^7.22.11": + version: 7.22.11 + resolution: "@babel/plugin-transform-class-static-block@npm:7.22.11" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.22.11 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-class-static-block": ^7.14.5 + peerDependencies: + "@babel/core": ^7.12.0 + checksum: 69f040506fad66f1c6918d288d0e0edbc5c8a07c8b4462c1184ad2f9f08995d68b057126c213871c0853ae0c72afc60ec87492049dfacb20902e32346a448bcb + languageName: node + linkType: hard + +"@babel/plugin-transform-classes@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-transform-classes@npm:7.22.15" + dependencies: + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-compilation-targets": ^7.22.15 + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-function-name": ^7.22.5 + "@babel/helper-optimise-call-expression": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-replace-supers": ^7.22.9 + "@babel/helper-split-export-declaration": ^7.22.6 + globals: ^11.1.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d3f4d0c107dd8a3557ea3575cc777fab27efa92958b41e4a9822f7499725c1f554beae58855de16ddec0a7b694e45f59a26cea8fbde4275563f72f09c6e039a0 + languageName: node + linkType: hard + +"@babel/plugin-transform-computed-properties@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-computed-properties@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/template": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c2a77a0f94ec71efbc569109ec14ea2aa925b333289272ced8b33c6108bdbb02caf01830ffc7e49486b62dec51911924d13f3a76f1149f40daace1898009e131 + languageName: node + linkType: hard + +"@babel/plugin-transform-destructuring@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-transform-destructuring@npm:7.22.15" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4bccb4765e5287f1d36119d930afb9941ea8f4f001bddb8febff716bac0e09dc58576624f3ec59470630513044dd342075fe11af16d8c1b234cb7406cffca9f0 + languageName: node + linkType: hard + +"@babel/plugin-transform-dotall-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 409b658d11e3082c8f69e9cdef2d96e4d6d11256f005772425fb230cc48fd05945edbfbcb709dab293a1a2f01f9c8a5bb7b4131e632b23264039d9f95864b453 + languageName: node + linkType: hard + +"@babel/plugin-transform-duplicate-keys@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bb1280fbabaab6fab2ede585df34900712698210a3bd413f4df5bae6d8c24be36b496c92722ae676a7a67d060a4624f4d6c23b923485f906bfba8773c69f55b4 + languageName: node + linkType: hard + +"@babel/plugin-transform-dynamic-import@npm:^7.22.11": + version: 7.22.11 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.22.11" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 78fc9c532210bf9e8f231747f542318568ac360ee6c27e80853962c984283c73da3f8f8aebe83c2096090a435b356b092ed85de617a156cbe0729d847632be45 + languageName: node + linkType: hard + +"@babel/plugin-transform-exponentiation-operator@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.22.5" + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f2d660c1b1d51ad5fec1cd5ad426a52187204068c4158f8c4aa977b31535c61b66898d532603eef21c15756827be8277f724c869b888d560f26d7fe848bb5eae + languageName: node + linkType: hard + +"@babel/plugin-transform-export-namespace-from@npm:^7.22.11": + version: 7.22.11 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.22.11" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-export-namespace-from": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 73af5883a321ed56a4bfd43c8a7de0164faebe619287706896fc6ee2f7a4e69042adaa1338c0b8b4bdb9f7e5fdceb016fb1d40694cb43ca3b8827429e8aac4bf + languageName: node + linkType: hard + +"@babel/plugin-transform-for-of@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-transform-for-of@npm:7.22.15" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f395ae7bce31e14961460f56cf751b5d6e37dd27d7df5b1f4e49fec1c11b6f9cf71991c7ffbe6549878591e87df0d66af798cf26edfa4bfa6b4c3dba1fb2f73a + languageName: node + linkType: hard + +"@babel/plugin-transform-function-name@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-function-name@npm:7.22.5" + dependencies: + "@babel/helper-compilation-targets": ^7.22.5 + "@babel/helper-function-name": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: cff3b876357999cb8ae30e439c3ec6b0491a53b0aa6f722920a4675a6dd5b53af97a833051df4b34791fe5b3dd326ccf769d5c8e45b322aa50ee11a660b17845 + languageName: node + linkType: hard + +"@babel/plugin-transform-json-strings@npm:^7.22.11": + version: 7.22.11 + resolution: "@babel/plugin-transform-json-strings@npm:7.22.11" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-json-strings": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 50665e5979e66358c50e90a26db53c55917f78175127ac2fa05c7888d156d418ffb930ec0a109353db0a7c5f57c756ce01bfc9825d24cbfd2b3ec453f2ed8cba + languageName: node + linkType: hard + +"@babel/plugin-transform-literals@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-literals@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ec37cc2ffb32667af935ab32fe28f00920ec8a1eb999aa6dc6602f2bebd8ba205a558aeedcdccdebf334381d5c57106c61f52332045730393e73410892a9735b + languageName: node + linkType: hard + +"@babel/plugin-transform-logical-assignment-operators@npm:^7.22.11": + version: 7.22.11 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.22.11" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c664e9798e85afa7f92f07b867682dee7392046181d82f5d21bae6f2ca26dfe9c8375cdc52b7483c3fc09a983c1989f60eff9fbc4f373b0c0a74090553d05739 + languageName: node + linkType: hard + +"@babel/plugin-transform-member-expression-literals@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ec4b0e07915ddd4fda0142fd104ee61015c208608a84cfa13643a95d18760b1dc1ceb6c6e0548898b8c49e5959a994e46367260176dbabc4467f729b21868504 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-amd@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-modules-amd@npm:7.22.5" + dependencies: + "@babel/helper-module-transforms": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7da4c4ebbbcf7d182abb59b2046b22d86eee340caf8a22a39ef6a727da2d8acfec1f714fcdcd5054110b280e4934f735e80a6848d192b6834c5d4459a014f04d + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-commonjs@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.22.15" + dependencies: + "@babel/helper-module-transforms": ^7.22.15 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-simple-access": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f8fc85fefa6be8626a378ca38fb84c7359043e7c692c854e9ee250a05121553b7f4a58e127099efe12662ec6bebbfd304ce638a0b4563d7cbd5982f3d877321c + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-systemjs@npm:^7.22.11": + version: 7.22.11 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.22.11" + dependencies: + "@babel/helper-hoist-variables": ^7.22.5 + "@babel/helper-module-transforms": ^7.22.9 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d0991e4bdc3352b6a9f4d12b6662e3645d892cd5c3c005ba5f14e65f1e218c6a8f7f4497e64a51d82a046e507aaa7db3143b800b0270dca1824cbd214ff3363d + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-umd@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-modules-umd@npm:7.22.5" + dependencies: + "@babel/helper-module-transforms": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 46622834c54c551b231963b867adbc80854881b3e516ff29984a8da989bd81665bd70e8cba6710345248e97166689310f544aee1a5773e262845a8f1b3e5b8b4 + languageName: node + linkType: hard + +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 3ee564ddee620c035b928fdc942c5d17e9c4b98329b76f9cefac65c111135d925eb94ed324064cd7556d4f5123beec79abea1d4b97d1c8a2a5c748887a2eb623 + languageName: node + linkType: hard + +"@babel/plugin-transform-new-target@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-new-target@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 6b72112773487a881a1d6ffa680afde08bad699252020e86122180ee7a88854d5da3f15d9bca3331cf2e025df045604494a8208a2e63b486266b07c14e2ffbf3 + languageName: node + linkType: hard + +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.11": + version: 7.22.11 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.22.11" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 167babecc8b8fe70796a7b7d34af667ebbf43da166c21689502e5e8cc93180b7a85979c77c9f64b7cce431b36718bd0a6df9e5e0ffea4ae22afb22cfef886372 + languageName: node + linkType: hard + +"@babel/plugin-transform-numeric-separator@npm:^7.22.11": + version: 7.22.11 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.22.11" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: af064d06a4a041767ec396a5f258103f64785df290e038bba9f0ef454e6c914f2ac45d862bbdad8fac2c7ad47fa4e95356f29053c60c100a0160b02a995fe2a3 + languageName: node + linkType: hard + +"@babel/plugin-transform-object-rest-spread@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.22.15" + dependencies: + "@babel/compat-data": ^7.22.9 + "@babel/helper-compilation-targets": ^7.22.15 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-transform-parameters": ^7.22.15 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 62197a6f12289c1c1bd57f3bed9f0f765ca32390bfe91e0b5561dd94dd9770f4480c4162dec98da094bc0ba99d2c2ebba68de47c019454041b0b7a68ba2ec66d + languageName: node + linkType: hard + +"@babel/plugin-transform-object-super@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-object-super@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-replace-supers": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b71887877d74cb64dbccb5c0324fa67e31171e6a5311991f626650e44a4083e5436a1eaa89da78c0474fb095d4ec322d63ee778b202d33aa2e4194e1ed8e62d7 + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-catch-binding@npm:^7.22.11": + version: 7.22.11 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.22.11" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f17abd90e1de67c84d63afea29c8021c74abb2794d3a6eeafb0bbe7372d3db32aefca386e392116ec63884537a4a2815d090d26264d259bacc08f6e3ed05294c + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-chaining@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.22.15" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 6b97abe0e50ca2dd8684fcef2c8d12607637e707aa9d513b7035f5e812efbde9305736b438d422103a7844e04124cad5efa4ff0e6226a57afa1210a1c7485c8e + languageName: node + linkType: hard + +"@babel/plugin-transform-parameters@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-transform-parameters@npm:7.22.15" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 541188bb7d1876cad87687b5c7daf90f63d8208ae83df24acb1e2b05020ad1c78786b2723ca4054a83fcb74fb6509f30c4cacc5b538ee684224261ad5fb047c1 + languageName: node + linkType: hard + +"@babel/plugin-transform-private-methods@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-private-methods@npm:7.22.5" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 321479b4fcb6d3b3ef622ab22fd24001e43d46e680e8e41324c033d5810c84646e470f81b44cbcbef5c22e99030784f7cac92f1829974da7a47a60a7139082c3 + languageName: node + linkType: hard + +"@babel/plugin-transform-private-property-in-object@npm:^7.22.11": + version: 7.22.11 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.22.11" + dependencies: + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-create-class-features-plugin": ^7.22.11 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4d029d84901e53c46dead7a46e2990a7bc62470f4e4ca58a0d063394f86652fd58fe4eea1eb941da3669cd536b559b9d058b342b59300026346b7a2a51badac8 + languageName: node + linkType: hard + +"@babel/plugin-transform-property-literals@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-property-literals@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 796176a3176106f77fcb8cd04eb34a8475ce82d6d03a88db089531b8f0453a2fb8b0c6ec9a52c27948bc0ea478becec449893741fc546dfc3930ab927e3f9f2e + languageName: node + linkType: hard + +"@babel/plugin-transform-regenerator@npm:^7.22.10": + version: 7.22.10 + resolution: "@babel/plugin-transform-regenerator@npm:7.22.10" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + regenerator-transform: ^0.15.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: e13678d62d6fa96f11cb8b863f00e8693491e7adc88bfca3f2820f80cbac8336e7dec3a596eee6a1c4663b7ececc3564f2cd7fb44ed6d4ce84ac2bb7f39ecc6e + languageName: node + linkType: hard + +"@babel/plugin-transform-reserved-words@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-reserved-words@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3ffd7dbc425fe8132bfec118b9817572799cab1473113a635d25ab606c1f5a2341a636c04cf6b22df3813320365ed5a965b5eeb3192320a10e4cc2c137bd8bfc + languageName: node + linkType: hard + +"@babel/plugin-transform-shorthand-properties@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: a5ac902c56ea8effa99f681340ee61bac21094588f7aef0bc01dff98246651702e677552fa6d10e548c4ac22a3ffad047dd2f8c8f0540b68316c2c203e56818b + languageName: node + linkType: hard + +"@babel/plugin-transform-spread@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-spread@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 5587f0deb60b3dfc9b274e269031cc45ec75facccf1933ea2ea71ced9fd3ce98ed91bb36d6cd26817c14474b90ed998c5078415f0eab531caf301496ce24c95c + languageName: node + linkType: hard + +"@babel/plugin-transform-sticky-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 63b2c575e3e7f96c32d52ed45ee098fb7d354b35c2223b8c8e76840b32cc529ee0c0ceb5742fd082e56e91e3d82842a367ce177e82b05039af3d602c9627a729 + languageName: node + linkType: hard + +"@babel/plugin-transform-template-literals@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-template-literals@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 27e9bb030654cb425381c69754be4abe6a7c75b45cd7f962cd8d604b841b2f0fb7b024f2efc1c25cc53f5b16d79d5e8cfc47cacbdaa983895b3aeefa3e7e24ff + languageName: node + linkType: hard + +"@babel/plugin-transform-typeof-symbol@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 82a53a63ffc3010b689ca9a54e5f53b2718b9f4b4a9818f36f9b7dba234f38a01876680553d2716a645a61920b5e6e4aaf8d4a0064add379b27ca0b403049512 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-escapes@npm:^7.22.10": + version: 7.22.10 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.22.10" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 807f40ed1324c8cb107c45358f1903384ca3f0ef1d01c5a3c5c9b271c8d8eec66936a3dcc8d75ddfceea9421420368c2e77ae3adef0a50557e778dfe296bf382 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-property-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2495e5f663cb388e3d888b4ba3df419ac436a5012144ac170b622ddfc221f9ea9bdba839fa2bc0185cb776b578030666406452ec7791cbf0e7a3d4c88ae9574c + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 6b5d1404c8c623b0ec9bd436c00d885a17d6a34f3f2597996343ddb9d94f6379705b21582dfd4cec2c47fd34068872e74ab6b9580116c0566b3f9447e2a7fa06 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-sets-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: c042070f980b139547f8b0179efbc049ac5930abec7fc26ed7a41d89a048d8ab17d362200e204b6f71c3c20d6991a0e74415e1a412a49adc8131c2a40c04822e + languageName: node + linkType: hard + +"@babel/preset-env@npm:^7.10.2": + version: 7.22.15 + resolution: "@babel/preset-env@npm:7.22.15" + dependencies: + "@babel/compat-data": ^7.22.9 + "@babel/helper-compilation-targets": ^7.22.15 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-validator-option": ^7.22.15 + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.22.15 + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.22.15 + "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2 + "@babel/plugin-syntax-async-generators": ^7.8.4 + "@babel/plugin-syntax-class-properties": ^7.12.13 + "@babel/plugin-syntax-class-static-block": ^7.14.5 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 + "@babel/plugin-syntax-export-namespace-from": ^7.8.3 + "@babel/plugin-syntax-import-assertions": ^7.22.5 + "@babel/plugin-syntax-import-attributes": ^7.22.5 + "@babel/plugin-syntax-import-meta": ^7.10.4 + "@babel/plugin-syntax-json-strings": ^7.8.3 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + "@babel/plugin-syntax-top-level-await": ^7.14.5 + "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 + "@babel/plugin-transform-arrow-functions": ^7.22.5 + "@babel/plugin-transform-async-generator-functions": ^7.22.15 + "@babel/plugin-transform-async-to-generator": ^7.22.5 + "@babel/plugin-transform-block-scoped-functions": ^7.22.5 + "@babel/plugin-transform-block-scoping": ^7.22.15 + "@babel/plugin-transform-class-properties": ^7.22.5 + "@babel/plugin-transform-class-static-block": ^7.22.11 + "@babel/plugin-transform-classes": ^7.22.15 + "@babel/plugin-transform-computed-properties": ^7.22.5 + "@babel/plugin-transform-destructuring": ^7.22.15 + "@babel/plugin-transform-dotall-regex": ^7.22.5 + "@babel/plugin-transform-duplicate-keys": ^7.22.5 + "@babel/plugin-transform-dynamic-import": ^7.22.11 + "@babel/plugin-transform-exponentiation-operator": ^7.22.5 + "@babel/plugin-transform-export-namespace-from": ^7.22.11 + "@babel/plugin-transform-for-of": ^7.22.15 + "@babel/plugin-transform-function-name": ^7.22.5 + "@babel/plugin-transform-json-strings": ^7.22.11 + "@babel/plugin-transform-literals": ^7.22.5 + "@babel/plugin-transform-logical-assignment-operators": ^7.22.11 + "@babel/plugin-transform-member-expression-literals": ^7.22.5 + "@babel/plugin-transform-modules-amd": ^7.22.5 + "@babel/plugin-transform-modules-commonjs": ^7.22.15 + "@babel/plugin-transform-modules-systemjs": ^7.22.11 + "@babel/plugin-transform-modules-umd": ^7.22.5 + "@babel/plugin-transform-named-capturing-groups-regex": ^7.22.5 + "@babel/plugin-transform-new-target": ^7.22.5 + "@babel/plugin-transform-nullish-coalescing-operator": ^7.22.11 + "@babel/plugin-transform-numeric-separator": ^7.22.11 + "@babel/plugin-transform-object-rest-spread": ^7.22.15 + "@babel/plugin-transform-object-super": ^7.22.5 + "@babel/plugin-transform-optional-catch-binding": ^7.22.11 + "@babel/plugin-transform-optional-chaining": ^7.22.15 + "@babel/plugin-transform-parameters": ^7.22.15 + "@babel/plugin-transform-private-methods": ^7.22.5 + "@babel/plugin-transform-private-property-in-object": ^7.22.11 + "@babel/plugin-transform-property-literals": ^7.22.5 + "@babel/plugin-transform-regenerator": ^7.22.10 + "@babel/plugin-transform-reserved-words": ^7.22.5 + "@babel/plugin-transform-shorthand-properties": ^7.22.5 + "@babel/plugin-transform-spread": ^7.22.5 + "@babel/plugin-transform-sticky-regex": ^7.22.5 + "@babel/plugin-transform-template-literals": ^7.22.5 + "@babel/plugin-transform-typeof-symbol": ^7.22.5 + "@babel/plugin-transform-unicode-escapes": ^7.22.10 + "@babel/plugin-transform-unicode-property-regex": ^7.22.5 + "@babel/plugin-transform-unicode-regex": ^7.22.5 + "@babel/plugin-transform-unicode-sets-regex": ^7.22.5 + "@babel/preset-modules": 0.1.6-no-external-plugins + "@babel/types": ^7.22.15 + babel-plugin-polyfill-corejs2: ^0.4.5 + babel-plugin-polyfill-corejs3: ^0.8.3 + babel-plugin-polyfill-regenerator: ^0.5.2 + core-js-compat: ^3.31.0 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c3cf0223cab006cbf0c563a49a5076caa0b62e3b61b4f10ba857347fcd4f85dbb662a78e6f289e4f29f72c36974696737ae86c23da114617f5b00ab2c1c66126 + languageName: node + linkType: hard + +"@babel/preset-modules@npm:0.1.6-no-external-plugins": + version: 0.1.6-no-external-plugins + resolution: "@babel/preset-modules@npm:0.1.6-no-external-plugins" + dependencies: + "@babel/helper-plugin-utils": ^7.0.0 + "@babel/types": ^7.4.4 + esutils: ^2.0.2 + peerDependencies: + "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 + checksum: 4855e799bc50f2449fb5210f78ea9e8fd46cf4f242243f1e2ed838e2bd702e25e73e822e7f8447722a5f4baa5e67a8f7a0e403f3e7ce04540ff743a9c411c375 + languageName: node + linkType: hard + +"@babel/regjsgen@npm:^0.8.0": + version: 0.8.0 + resolution: "@babel/regjsgen@npm:0.8.0" + checksum: 89c338fee774770e5a487382170711014d49a68eb281e74f2b5eac88f38300a4ad545516a7786a8dd5702e9cf009c94c2f582d200f077ac5decd74c56b973730 + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.8.4": + version: 7.22.15 + resolution: "@babel/runtime@npm:7.22.15" + dependencies: + regenerator-runtime: ^0.14.0 + checksum: 793296df1e41599a935a3d77ec01eb6088410d3fd4dbe4e92f06c6b7bb2f8355024e6d78621a3a35f44e0e23b0b59107f23d585384df4f3123256a1e1492040e + languageName: node + linkType: hard + +"@babel/template@npm:^7.22.15, @babel/template@npm:^7.22.5, @babel/template@npm:^7.3.3": + version: 7.22.15 + resolution: "@babel/template@npm:7.22.15" + dependencies: + "@babel/code-frame": ^7.22.13 + "@babel/parser": ^7.22.15 + "@babel/types": ^7.22.15 + checksum: 1f3e7dcd6c44f5904c184b3f7fe280394b191f2fed819919ffa1e529c259d5b197da8981b6ca491c235aee8dbad4a50b7e31304aa531271cb823a4a24a0dd8fd + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.22.15, @babel/traverse@npm:^7.22.17": + version: 7.22.17 + resolution: "@babel/traverse@npm:7.22.17" + dependencies: + "@babel/code-frame": ^7.22.13 + "@babel/generator": ^7.22.15 + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-function-name": ^7.22.5 + "@babel/helper-hoist-variables": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/parser": ^7.22.16 + "@babel/types": ^7.22.17 + debug: ^4.1.0 + globals: ^11.1.0 + checksum: 1153ca166a0a9b3fddf67f7f7c8c5b4f88aa2c2c00261ff2fc8424a63bc93250ed3fd08b04bd526ad19e797aeb6f22161120646a570cbfe5ff2a5d2f5d28af01 + languageName: node + linkType: hard + +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.17, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": + version: 7.22.17 + resolution: "@babel/types@npm:7.22.17" + dependencies: + "@babel/helper-string-parser": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.15 + to-fast-properties: ^2.0.0 + checksum: 7382220f6eb2548f2c867a98916c3aa8a6063498d5372e5d21d8d184ba354033defb72aeba5858c1b2b42177058b896a34a7dcbae5eccd47fb0104721efa909d + languageName: node + linkType: hard + +"@bcoe/v8-coverage@npm:^0.2.3": + version: 0.2.3 + resolution: "@bcoe/v8-coverage@npm:0.2.3" + checksum: 850f9305536d0f2bd13e9e0881cb5f02e4f93fad1189f7b2d4bebf694e3206924eadee1068130d43c11b750efcc9405f88a8e42ef098b6d75239c0f047de1a27 + languageName: node + linkType: hard + +"@codemirror/autocomplete@npm:^6.0.0, @codemirror/autocomplete@npm:^6.3.2, @codemirror/autocomplete@npm:^6.5.1, @codemirror/autocomplete@npm:^6.7.1": + version: 6.9.0 + resolution: "@codemirror/autocomplete@npm:6.9.0" + dependencies: + "@codemirror/language": ^6.0.0 + "@codemirror/state": ^6.0.0 + "@codemirror/view": ^6.6.0 + "@lezer/common": ^1.0.0 + peerDependencies: + "@codemirror/language": ^6.0.0 + "@codemirror/state": ^6.0.0 + "@codemirror/view": ^6.0.0 + "@lezer/common": ^1.0.0 + checksum: a5f661944c75f40b02c90a193c9a459c0fd7e335c0ac5973420c19157dfb46010f573c2b70731591fe477e7a2ad10121ff3ae394a72d450946d7b886c28b0368 + languageName: node + linkType: hard + +"@codemirror/commands@npm:^6.2.3": + version: 6.2.5 + resolution: "@codemirror/commands@npm:6.2.5" + dependencies: + "@codemirror/language": ^6.0.0 + "@codemirror/state": ^6.2.0 + "@codemirror/view": ^6.0.0 + "@lezer/common": ^1.0.0 + checksum: 6d373bcfd4337160243e1493c8703a8e367e208811742331679a6410a3645de36ae8a5664e11790fec521137b45f34d703e9292932a98c4de10139510f3f29a3 + languageName: node + linkType: hard + +"@codemirror/lang-cpp@npm:^6.0.2": + version: 6.0.2 + resolution: "@codemirror/lang-cpp@npm:6.0.2" + dependencies: + "@codemirror/language": ^6.0.0 + "@lezer/cpp": ^1.0.0 + checksum: bb9eba482cca80037ce30c7b193cf45eff19ccbb773764fddf2071756468ecc25aa53c777c943635054f89095b0247b9b50c339e107e41e68d34d12a7295f9a9 + languageName: node + linkType: hard + +"@codemirror/lang-css@npm:^6.0.0, @codemirror/lang-css@npm:^6.1.1": + version: 6.2.1 + resolution: "@codemirror/lang-css@npm:6.2.1" + dependencies: + "@codemirror/autocomplete": ^6.0.0 + "@codemirror/language": ^6.0.0 + "@codemirror/state": ^6.0.0 + "@lezer/common": ^1.0.2 + "@lezer/css": ^1.0.0 + checksum: 5a8457ee8a4310030a969f2d3128429f549c4dc9b7907ee8888b42119c80b65af99093801432efdf659b8ec36a147d2a947bc1ecbbf69a759395214e3f4834a8 + languageName: node + linkType: hard + +"@codemirror/lang-html@npm:^6.0.0, @codemirror/lang-html@npm:^6.4.3": + version: 6.4.6 + resolution: "@codemirror/lang-html@npm:6.4.6" + dependencies: + "@codemirror/autocomplete": ^6.0.0 + "@codemirror/lang-css": ^6.0.0 + "@codemirror/lang-javascript": ^6.0.0 + "@codemirror/language": ^6.4.0 + "@codemirror/state": ^6.0.0 + "@codemirror/view": ^6.17.0 + "@lezer/common": ^1.0.0 + "@lezer/css": ^1.1.0 + "@lezer/html": ^1.3.0 + checksum: 8f884f4423ffc783181ee933f7212ad4ece204695cf8af9535a593f95e901d36515a8561fc336a0fbcf5782369b9484eeb0d2cec2167622868238177c5e6eb36 + languageName: node + linkType: hard + +"@codemirror/lang-java@npm:^6.0.1": + version: 6.0.1 + resolution: "@codemirror/lang-java@npm:6.0.1" + dependencies: + "@codemirror/language": ^6.0.0 + "@lezer/java": ^1.0.0 + checksum: 4679104683cbffcd224ac04c7e5d144b787494697b26470b07017259035b7bb3fa62609d9a61bfbc566f1756d9f972f9f26d96a3c1362dd48881c1172f9a914d + languageName: node + linkType: hard + +"@codemirror/lang-javascript@npm:^6.0.0, @codemirror/lang-javascript@npm:^6.1.7": + version: 6.2.1 + resolution: "@codemirror/lang-javascript@npm:6.2.1" + dependencies: + "@codemirror/autocomplete": ^6.0.0 + "@codemirror/language": ^6.6.0 + "@codemirror/lint": ^6.0.0 + "@codemirror/state": ^6.0.0 + "@codemirror/view": ^6.17.0 + "@lezer/common": ^1.0.0 + "@lezer/javascript": ^1.0.0 + checksum: 3df38c4cced06195283a9a2a9365aaa7c8c1b157852b331bc3a118403f774bbba57d2a392de52f5e28d2b344a323bc0146bcf7c8ef8be2473f167d815e4a37cd + languageName: node + linkType: hard + +"@codemirror/lang-json@npm:^6.0.1": + version: 6.0.1 + resolution: "@codemirror/lang-json@npm:6.0.1" + dependencies: + "@codemirror/language": ^6.0.0 + "@lezer/json": ^1.0.0 + checksum: e9e87d50ff7b81bd56a6ab50740b1dd54e9a93f1be585e1d59d0642e2148842ea1528ac7b7221eb4ddc7fe84bbc28065144cc3ab86f6e06c6aeb2d4b4e62acf1 + languageName: node + linkType: hard + +"@codemirror/lang-markdown@npm:^6.1.1": + version: 6.2.0 + resolution: "@codemirror/lang-markdown@npm:6.2.0" + dependencies: + "@codemirror/autocomplete": ^6.7.1 + "@codemirror/lang-html": ^6.0.0 + "@codemirror/language": ^6.3.0 + "@codemirror/state": ^6.0.0 + "@codemirror/view": ^6.0.0 + "@lezer/common": ^1.0.0 + "@lezer/markdown": ^1.0.0 + checksum: 0b2b5334abc8bb46fdaf0723fcddb9565b89c58d245ee0cced2c62c9c5de8430ad8bd73ab92d8a6bd67130173b59006bec2922e614e0277aa2b2d62f308113cf + languageName: node + linkType: hard + +"@codemirror/lang-php@npm:^6.0.1": + version: 6.0.1 + resolution: "@codemirror/lang-php@npm:6.0.1" + dependencies: + "@codemirror/lang-html": ^6.0.0 + "@codemirror/language": ^6.0.0 + "@codemirror/state": ^6.0.0 + "@lezer/common": ^1.0.0 + "@lezer/php": ^1.0.0 + checksum: c003a29a426486453fdfddbf7302982fa2aa7f059bf6f1ce4cbf08341b0162eee5e2f50e0d71c418dcd358491631780156d846fe352754d042576172c5d86721 + languageName: node + linkType: hard + +"@codemirror/lang-python@npm:^6.1.3": + version: 6.1.3 + resolution: "@codemirror/lang-python@npm:6.1.3" + dependencies: + "@codemirror/autocomplete": ^6.3.2 + "@codemirror/language": ^6.8.0 + "@lezer/python": ^1.1.4 + checksum: 65a0276a4503e4e3b70dd28d1c93ef472632b6d2c4bf3ae92d305d14ee8cf60b0bbbf62d5ceb51294de9598d9e2d42eafcde26f317ee7b90d0a11dfa863c1d1a + languageName: node + linkType: hard + +"@codemirror/lang-rust@npm:^6.0.1": + version: 6.0.1 + resolution: "@codemirror/lang-rust@npm:6.0.1" + dependencies: + "@codemirror/language": ^6.0.0 + "@lezer/rust": ^1.0.0 + checksum: 8a439944cb22159b0b3465ca4fa4294c69843219d5d30e278ae6df8e48f30a7a9256129723c025ec9b5e694d31a3560fb004300b125ffcd81c22d13825845170 + languageName: node + linkType: hard + +"@codemirror/lang-sql@npm:^6.4.1": + version: 6.5.4 + resolution: "@codemirror/lang-sql@npm:6.5.4" + dependencies: + "@codemirror/autocomplete": ^6.0.0 + "@codemirror/language": ^6.0.0 + "@codemirror/state": ^6.0.0 + "@lezer/highlight": ^1.0.0 + "@lezer/lr": ^1.0.0 + checksum: face21b0231ac5a7981949b5bf6a99ed092d0d6f7eb83f35dcd31d56ecf07dafa19d21623e0bad36cec7a12e3149df7b45c3588aeee31eae41e9b05942c4fdd7 + languageName: node + linkType: hard + +"@codemirror/lang-wast@npm:^6.0.1": + version: 6.0.1 + resolution: "@codemirror/lang-wast@npm:6.0.1" + dependencies: + "@codemirror/language": ^6.0.0 + "@lezer/highlight": ^1.0.0 + "@lezer/lr": ^1.0.0 + checksum: 600d98d3ea6a4e99292244ed707e39a2abd9f3abf62cfeff5c819a0cc0c7e86b8c5b91e91c1b7ea21233d9ea09c41abe61d8a40b2547bb5db74239c6df857934 + languageName: node + linkType: hard + +"@codemirror/lang-xml@npm:^6.0.2": + version: 6.0.2 + resolution: "@codemirror/lang-xml@npm:6.0.2" + dependencies: + "@codemirror/autocomplete": ^6.0.0 + "@codemirror/language": ^6.4.0 + "@codemirror/state": ^6.0.0 + "@lezer/common": ^1.0.0 + "@lezer/xml": ^1.0.0 + checksum: e156ecafaa87e9b6ef4ab6812ccd00d8f3c6cb81f232837636b36336d80513b61936dfee6f4f6800574f236208b61e95a2abcb997cdcd7366585a6b796e0e13b + languageName: node + linkType: hard + +"@codemirror/language@npm:^6.0.0, @codemirror/language@npm:^6.3.0, @codemirror/language@npm:^6.4.0, @codemirror/language@npm:^6.6.0, @codemirror/language@npm:^6.8.0": + version: 6.9.0 + resolution: "@codemirror/language@npm:6.9.0" + dependencies: + "@codemirror/state": ^6.0.0 + "@codemirror/view": ^6.0.0 + "@lezer/common": ^1.0.0 + "@lezer/highlight": ^1.0.0 + "@lezer/lr": ^1.0.0 + style-mod: ^4.0.0 + checksum: 9a897fb0f569159eeafb7dce83061b425af7244bbeae2649e0e677488548b2a02eaf0c13c0c5b4d59da55e8866e6f4dc7abe3dfaa09c13749a2fa2c0dbc0c565 + languageName: node + linkType: hard + +"@codemirror/legacy-modes@npm:^6.3.2": + version: 6.3.3 + resolution: "@codemirror/legacy-modes@npm:6.3.3" + dependencies: + "@codemirror/language": ^6.0.0 + checksum: 3cd32b0f011b0a193e0948e5901b625f38aa6d9a8b24344531d6e142eb6fbb3e6cb5969429102044f3d04fbe53c4deaebd9f659c05067a0b18d17766290c9e05 + languageName: node + linkType: hard + +"@codemirror/lint@npm:^6.0.0": + version: 6.4.1 + resolution: "@codemirror/lint@npm:6.4.1" + dependencies: + "@codemirror/state": ^6.0.0 + "@codemirror/view": ^6.0.0 + crelt: ^1.0.5 + checksum: ac8120ca96b5ef57abd2705b2620c15c7449b5056bca87053480e244c6772863e1537387a863cfb784f9f2af2c8b30be78a31660d96a815672059085beb51fd5 + languageName: node + linkType: hard + +"@codemirror/search@npm:^6.3.0": + version: 6.5.2 + resolution: "@codemirror/search@npm:6.5.2" + dependencies: + "@codemirror/state": ^6.0.0 + "@codemirror/view": ^6.0.0 + crelt: ^1.0.5 + checksum: bc535151277fda0a370ac496b9b0d5751fd91bd8e3eb29dafbfe6bf3125dc450a7e361ebc302f0ebc4193ac337bdf555ab3d5ec753dbb44452225618a5630dd3 + languageName: node + linkType: hard + +"@codemirror/state@npm:^6.0.0, @codemirror/state@npm:^6.1.4, @codemirror/state@npm:^6.2.0": + version: 6.2.1 + resolution: "@codemirror/state@npm:6.2.1" + checksum: d12a321d0471b264b9d3259042bff913a8b939e8d28d408ff452004538a71ca9d5329df3f8a1d8a9183f5b42a7ef5b200737bcab1065714f5ae8e0a5ba9d59d3 + languageName: node + linkType: hard + +"@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.17.0, @codemirror/view@npm:^6.6.0, @codemirror/view@npm:^6.9.6": + version: 6.18.1 + resolution: "@codemirror/view@npm:6.18.1" + dependencies: + "@codemirror/state": ^6.1.4 + style-mod: ^4.1.0 + w3c-keyname: ^2.2.4 + checksum: 12e350169a12a3cca059712769f81306c95b59accce8ec3c5e6deb1f2fc570baac6f64768aa04f6337bca8448d66520417ec8a4c1c456d40324758695ed9fe90 + languageName: node + linkType: hard + +"@csstools/css-parser-algorithms@npm:^2.3.1": + version: 2.3.1 + resolution: "@csstools/css-parser-algorithms@npm:2.3.1" + peerDependencies: + "@csstools/css-tokenizer": ^2.2.0 + checksum: 90c6aa391ff817b0fc2ae20b9cc5e3308e3906536d83c8eeb502171ec709730a2cd0458eb7646378f74db545c9079fd026e125dbdbe26030652f9466bacc1183 + languageName: node + linkType: hard + +"@csstools/css-tokenizer@npm:^2.2.0": + version: 2.2.0 + resolution: "@csstools/css-tokenizer@npm:2.2.0" + checksum: d6b3ead496e187cbf89b5e08a55be7a8393676c2b93526f7f051418376d08146f9f533708aca5eec6a07d925ea6a7e65b0e0bb36aabeba657666e968b8d89cd0 + languageName: node + linkType: hard + +"@csstools/media-query-list-parser@npm:^2.1.4": + version: 2.1.4 + resolution: "@csstools/media-query-list-parser@npm:2.1.4" + peerDependencies: + "@csstools/css-parser-algorithms": ^2.3.1 + "@csstools/css-tokenizer": ^2.2.0 + checksum: 8fa5be6acea01af39f49e08b2f2e2f7f54c2881c2c8a7a8cc783f8668610404398e81f86092f44ae64914d0f7626a5177d721ce5d1858b1599b26c91687f311e + languageName: node + linkType: hard + +"@csstools/selector-specificity@npm:^3.0.0": + version: 3.0.0 + resolution: "@csstools/selector-specificity@npm:3.0.0" + peerDependencies: + postcss-selector-parser: ^6.0.13 + checksum: 4a2dfe69998a499155d9dab4c2a0e7ae7594d8db98bb8a487d2d5347c0c501655051eb5eacad3fe323c86b0ba8212fe092c27fc883621e6ac2a27662edfc3528 + languageName: node + linkType: hard + +"@discoveryjs/json-ext@npm:^0.5.0": + version: 0.5.7 + resolution: "@discoveryjs/json-ext@npm:0.5.7" + checksum: 2176d301cc258ea5c2324402997cf8134ebb212469c0d397591636cea8d3c02f2b3cf9fd58dcb748c7a0dade77ebdc1b10284fa63e608c033a1db52fddc69918 + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": + version: 4.4.0 + resolution: "@eslint-community/eslint-utils@npm:4.4.0" + dependencies: + eslint-visitor-keys: ^3.3.0 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: cdfe3ae42b4f572cbfb46d20edafe6f36fc5fb52bf2d90875c58aefe226892b9677fef60820e2832caf864a326fe4fc225714c46e8389ccca04d5f9288aabd22 + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": + version: 4.8.1 + resolution: "@eslint-community/regexpp@npm:4.8.1" + checksum: 82d62c845ef42b810f268cfdc84d803a2da01735fb52e902fd34bdc09f92464a094fd8e4802839874b000b2f73f67c972859e813ba705233515d3e954f234bf2 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^2.1.2": + version: 2.1.2 + resolution: "@eslint/eslintrc@npm:2.1.2" + dependencies: + ajv: ^6.12.4 + debug: ^4.3.2 + espree: ^9.6.0 + globals: ^13.19.0 + ignore: ^5.2.0 + import-fresh: ^3.2.1 + js-yaml: ^4.1.0 + minimatch: ^3.1.2 + strip-json-comments: ^3.1.1 + checksum: bc742a1e3b361f06fedb4afb6bf32cbd27171292ef7924f61c62f2aed73048367bcc7ac68f98c06d4245cd3fabc43270f844e3c1699936d4734b3ac5398814a7 + languageName: node + linkType: hard + +"@eslint/js@npm:8.49.0": + version: 8.49.0 + resolution: "@eslint/js@npm:8.49.0" + checksum: a6601807c8aeeefe866926ad92ed98007c034a735af20ff709009e39ad1337474243d47908500a3bde04e37bfba16bcf1d3452417f962e1345bc8756edd6b830 + languageName: node + linkType: hard + +"@fortawesome/fontawesome-free@npm:^5.12.0": + version: 5.15.4 + resolution: "@fortawesome/fontawesome-free@npm:5.15.4" + checksum: 32281c3df4075290d9a96dfc22f72fadb3da7055d4117e48d34046b8c98032a55fa260ae351b0af5d6f6fb57a2f5d79a4abe52af456da35195f7cb7dda27b4a2 + languageName: node + linkType: hard + +"@humanwhocodes/config-array@npm:^0.11.11": + version: 0.11.11 + resolution: "@humanwhocodes/config-array@npm:0.11.11" + dependencies: + "@humanwhocodes/object-schema": ^1.2.1 + debug: ^4.1.1 + minimatch: ^3.0.5 + checksum: db84507375ab77b8ffdd24f498a5b49ad6b64391d30dd2ac56885501d03964d29637e05b1ed5aefa09d57ac667e28028bc22d2da872bfcd619652fbdb5f4ca19 + languageName: node + linkType: hard + +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 0fd22007db8034a2cdf2c764b140d37d9020bbfce8a49d3ec5c05290e77d4b0263b1b972b752df8c89e5eaa94073408f2b7d977aed131faf6cf396ebb5d7fb61 + languageName: node + linkType: hard + +"@humanwhocodes/object-schema@npm:^1.2.1": + version: 1.2.1 + resolution: "@humanwhocodes/object-schema@npm:1.2.1" + checksum: a824a1ec31591231e4bad5787641f59e9633827d0a2eaae131a288d33c9ef0290bd16fda8da6f7c0fcb014147865d12118df10db57f27f41e20da92369fcb3f1 + languageName: node + linkType: hard + +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: ^5.1.2 + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: ^7.0.1 + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: ^8.1.0 + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 4a473b9b32a7d4d3cfb7a614226e555091ff0c5a29a1734c28c72a182c2f6699b26fc6b5c2131dfd841e86b185aea714c72201d7c98c2fba5f17709333a67aeb + languageName: node + linkType: hard + +"@istanbuljs/load-nyc-config@npm:^1.0.0": + version: 1.1.0 + resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" + dependencies: + camelcase: ^5.3.1 + find-up: ^4.1.0 + get-package-type: ^0.1.0 + js-yaml: ^3.13.1 + resolve-from: ^5.0.0 + checksum: d578da5e2e804d5c93228450a1380e1a3c691de4953acc162f387b717258512a3e07b83510a936d9fab03eac90817473917e24f5d16297af3867f59328d58568 + languageName: node + linkType: hard + +"@istanbuljs/schema@npm:^0.1.2": + version: 0.1.3 + resolution: "@istanbuljs/schema@npm:0.1.3" + checksum: 5282759d961d61350f33d9118d16bcaed914ebf8061a52f4fa474b2cb08720c9c81d165e13b82f2e5a8a212cc5af482f0c6fc1ac27b9e067e5394c9a6ed186c9 + languageName: node + linkType: hard + +"@jest/console@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/console@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + "@types/node": "*" + chalk: ^4.0.0 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 + slash: ^3.0.0 + checksum: 0e3624e32c5a8e7361e889db70b170876401b7d70f509a2538c31d5cd50deb0c1ae4b92dc63fe18a0902e0a48c590c21d53787a0df41a52b34fa7cab96c384d6 + languageName: node + linkType: hard + +"@jest/core@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/core@npm:29.7.0" + dependencies: + "@jest/console": ^29.7.0 + "@jest/reporters": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" + ansi-escapes: ^4.2.1 + chalk: ^4.0.0 + ci-info: ^3.2.0 + exit: ^0.1.2 + graceful-fs: ^4.2.9 + jest-changed-files: ^29.7.0 + jest-config: ^29.7.0 + jest-haste-map: ^29.7.0 + jest-message-util: ^29.7.0 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.7.0 + jest-resolve-dependencies: ^29.7.0 + jest-runner: ^29.7.0 + jest-runtime: ^29.7.0 + jest-snapshot: ^29.7.0 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 + jest-watcher: ^29.7.0 + micromatch: ^4.0.4 + pretty-format: ^29.7.0 + slash: ^3.0.0 + strip-ansi: ^6.0.0 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: af759c9781cfc914553320446ce4e47775ae42779e73621c438feb1e4231a5d4862f84b1d8565926f2d1aab29b3ec3dcfdc84db28608bdf5f29867124ebcfc0d + languageName: node + linkType: hard + +"@jest/environment@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/environment@npm:29.7.0" + dependencies: + "@jest/fake-timers": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" + jest-mock: ^29.7.0 + checksum: 6fb398143b2543d4b9b8d1c6dbce83fa5247f84f550330604be744e24c2bd2178bb893657d62d1b97cf2f24baf85c450223f8237cccb71192c36a38ea2272934 + languageName: node + linkType: hard + +"@jest/expect-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect-utils@npm:29.7.0" + dependencies: + jest-get-type: ^29.6.3 + checksum: 75eb177f3d00b6331bcaa057e07c0ccb0733a1d0a1943e1d8db346779039cb7f103789f16e502f888a3096fb58c2300c38d1f3748b36a7fa762eb6f6d1b160ed + languageName: node + linkType: hard + +"@jest/expect@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect@npm:29.7.0" + dependencies: + expect: ^29.7.0 + jest-snapshot: ^29.7.0 + checksum: a01cb85fd9401bab3370618f4b9013b90c93536562222d920e702a0b575d239d74cecfe98010aaec7ad464f67cf534a353d92d181646a4b792acaa7e912ae55e + languageName: node + linkType: hard + +"@jest/fake-timers@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/fake-timers@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + "@sinonjs/fake-timers": ^10.0.2 + "@types/node": "*" + jest-message-util: ^29.7.0 + jest-mock: ^29.7.0 + jest-util: ^29.7.0 + checksum: caf2bbd11f71c9241b458d1b5a66cbe95debc5a15d96442444b5d5c7ba774f523c76627c6931cca5e10e76f0d08761f6f1f01a608898f4751a0eee54fc3d8d00 + languageName: node + linkType: hard + +"@jest/globals@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/globals@npm:29.7.0" + dependencies: + "@jest/environment": ^29.7.0 + "@jest/expect": ^29.7.0 + "@jest/types": ^29.6.3 + jest-mock: ^29.7.0 + checksum: 97dbb9459135693ad3a422e65ca1c250f03d82b2a77f6207e7fa0edd2c9d2015fbe4346f3dc9ebff1678b9d8da74754d4d440b7837497f8927059c0642a22123 + languageName: node + linkType: hard + +"@jest/reporters@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/reporters@npm:29.7.0" + dependencies: + "@bcoe/v8-coverage": ^0.2.3 + "@jest/console": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 + "@jridgewell/trace-mapping": ^0.3.18 + "@types/node": "*" + chalk: ^4.0.0 + collect-v8-coverage: ^1.0.0 + exit: ^0.1.2 + glob: ^7.1.3 + graceful-fs: ^4.2.9 + istanbul-lib-coverage: ^3.0.0 + istanbul-lib-instrument: ^6.0.0 + istanbul-lib-report: ^3.0.0 + istanbul-lib-source-maps: ^4.0.0 + istanbul-reports: ^3.1.3 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 + jest-worker: ^29.7.0 + slash: ^3.0.0 + string-length: ^4.0.1 + strip-ansi: ^6.0.0 + v8-to-istanbul: ^9.0.1 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 7eadabd62cc344f629024b8a268ecc8367dba756152b761bdcb7b7e570a3864fc51b2a9810cd310d85e0a0173ef002ba4528d5ea0329fbf66ee2a3ada9c40455 + languageName: node + linkType: hard + +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" + dependencies: + "@sinclair/typebox": ^0.27.8 + checksum: 910040425f0fc93cd13e68c750b7885590b8839066dfa0cd78e7def07bbb708ad869381f725945d66f2284de5663bbecf63e8fdd856e2ae6e261ba30b1687e93 + languageName: node + linkType: hard + +"@jest/source-map@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/source-map@npm:29.6.3" + dependencies: + "@jridgewell/trace-mapping": ^0.3.18 + callsites: ^3.0.0 + graceful-fs: ^4.2.9 + checksum: bcc5a8697d471396c0003b0bfa09722c3cd879ad697eb9c431e6164e2ea7008238a01a07193dfe3cbb48b1d258eb7251f6efcea36f64e1ebc464ea3c03ae2deb + languageName: node + linkType: hard + +"@jest/test-result@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-result@npm:29.7.0" + dependencies: + "@jest/console": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/istanbul-lib-coverage": ^2.0.0 + collect-v8-coverage: ^1.0.0 + checksum: 67b6317d526e335212e5da0e768e3b8ab8a53df110361b80761353ad23b6aea4432b7c5665bdeb87658ea373b90fb1afe02ed3611ef6c858c7fba377505057fa + languageName: node + linkType: hard + +"@jest/test-sequencer@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-sequencer@npm:29.7.0" + dependencies: + "@jest/test-result": ^29.7.0 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.7.0 + slash: ^3.0.0 + checksum: 73f43599017946be85c0b6357993b038f875b796e2f0950487a82f4ebcb115fa12131932dd9904026b4ad8be131fe6e28bd8d0aa93b1563705185f9804bff8bd + languageName: node + linkType: hard + +"@jest/transform@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/transform@npm:29.7.0" + dependencies: + "@babel/core": ^7.11.6 + "@jest/types": ^29.6.3 + "@jridgewell/trace-mapping": ^0.3.18 + babel-plugin-istanbul: ^6.1.1 + chalk: ^4.0.0 + convert-source-map: ^2.0.0 + fast-json-stable-stringify: ^2.1.0 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.7.0 + jest-regex-util: ^29.6.3 + jest-util: ^29.7.0 + micromatch: ^4.0.4 + pirates: ^4.0.4 + slash: ^3.0.0 + write-file-atomic: ^4.0.2 + checksum: 0f8ac9f413903b3cb6d240102db848f2a354f63971ab885833799a9964999dd51c388162106a807f810071f864302cdd8e3f0c241c29ce02d85a36f18f3f40ab + languageName: node + linkType: hard + +"@jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" + dependencies: + "@jest/schemas": ^29.6.3 + "@types/istanbul-lib-coverage": ^2.0.0 + "@types/istanbul-reports": ^3.0.0 + "@types/node": "*" + "@types/yargs": ^17.0.8 + chalk: ^4.0.0 + checksum: a0bcf15dbb0eca6bdd8ce61a3fb055349d40268622a7670a3b2eb3c3dbafe9eb26af59938366d520b86907b9505b0f9b29b85cec11579a9e580694b87cd90fcc + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2": + version: 0.3.3 + resolution: "@jridgewell/gen-mapping@npm:0.3.3" + dependencies: + "@jridgewell/set-array": ^1.0.1 + "@jridgewell/sourcemap-codec": ^1.4.10 + "@jridgewell/trace-mapping": ^0.3.9 + checksum: 4a74944bd31f22354fc01c3da32e83c19e519e3bbadafa114f6da4522ea77dd0c2842607e923a591d60a76699d819a2fbb6f3552e277efdb9b58b081390b60ab + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.1 + resolution: "@jridgewell/resolve-uri@npm:3.1.1" + checksum: f5b441fe7900eab4f9155b3b93f9800a916257f4e8563afbcd3b5a5337b55e52bd8ae6735453b1b745457d9f6cdb16d74cd6220bbdd98cf153239e13f6cbb653 + languageName: node + linkType: hard + +"@jridgewell/set-array@npm:^1.0.1": + version: 1.1.2 + resolution: "@jridgewell/set-array@npm:1.1.2" + checksum: 69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e + languageName: node + linkType: hard + +"@jridgewell/source-map@npm:^0.3.3": + version: 0.3.5 + resolution: "@jridgewell/source-map@npm:0.3.5" + dependencies: + "@jridgewell/gen-mapping": ^0.3.0 + "@jridgewell/trace-mapping": ^0.3.9 + checksum: 1ad4dec0bdafbade57920a50acec6634f88a0eb735851e0dda906fa9894e7f0549c492678aad1a10f8e144bfe87f238307bf2a914a1bc85b7781d345417e9f6f + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": + version: 1.4.15 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" + checksum: b881c7e503db3fc7f3c1f35a1dd2655a188cc51a3612d76efc8a6eb74728bef5606e6758ee77423e564092b4a518aba569bbb21c9bac5ab7a35b0c6ae7e344c8 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.9": + version: 0.3.19 + resolution: "@jridgewell/trace-mapping@npm:0.3.19" + dependencies: + "@jridgewell/resolve-uri": ^3.1.0 + "@jridgewell/sourcemap-codec": ^1.4.14 + checksum: 956a6f0f6fec060fb48c6bf1f5ec2064e13cd38c8be3873877d4b92b4a27ba58289a34071752671262a3e3c202abcc3fa2aac64d8447b4b0fa1ba3c9047f1c20 + languageName: node + linkType: hard + +"@jupyter/ydoc@npm:^1.0.2": + version: 1.0.2 + resolution: "@jupyter/ydoc@npm:1.0.2" + dependencies: + "@jupyterlab/nbformat": ^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0 + "@lumino/coreutils": ^1.11.0 || ^2.0.0 + "@lumino/disposable": ^1.10.0 || ^2.0.0 + "@lumino/signaling": ^1.10.0 || ^2.0.0 + y-protocols: ^1.0.5 + yjs: ^13.5.40 + checksum: 739f9630940466b3cfcd7b742dd06479f81772ca13f863d057af0bbb5e318829506969066ab72977e7c721644982b5c8f88cf44e1ae81955ed1c27e87632d1f2 + languageName: node + linkType: hard + +"@jupyterlab/application@npm:^4.0.0, @jupyterlab/application@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/application@npm:4.0.5" + dependencies: + "@fortawesome/fontawesome-free": ^5.12.0 + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/docregistry": ^4.0.5 + "@jupyterlab/rendermime": ^4.0.5 + "@jupyterlab/rendermime-interfaces": ^3.8.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/statedb": ^4.0.5 + "@jupyterlab/translation": ^4.0.5 + "@jupyterlab/ui-components": ^4.0.5 + "@lumino/algorithm": ^2.0.1 + "@lumino/application": ^2.2.1 + "@lumino/commands": ^2.1.3 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/messaging": ^2.0.1 + "@lumino/polling": ^2.1.2 + "@lumino/properties": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/widgets": ^2.3.0 + checksum: 532f0090016d72fd7c2366a7d6de44033ccdc9b70f0a27a13141ce673d0ebad7804c73c0c55f18ccf3e0dec5c6f7d0190ef489753c220d649c2f42d6b0c8e61f + languageName: node + linkType: hard + +"@jupyterlab/apputils@npm:^4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/apputils@npm:4.1.5" + dependencies: + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/observables": ^5.0.5 + "@jupyterlab/rendermime-interfaces": ^3.8.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/settingregistry": ^4.0.5 + "@jupyterlab/statedb": ^4.0.5 + "@jupyterlab/statusbar": ^4.0.5 + "@jupyterlab/translation": ^4.0.5 + "@jupyterlab/ui-components": ^4.0.5 + "@lumino/algorithm": ^2.0.1 + "@lumino/commands": ^2.1.3 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/domutils": ^2.0.1 + "@lumino/messaging": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/virtualdom": ^2.0.1 + "@lumino/widgets": ^2.3.0 + "@types/react": ^18.0.26 + react: ^18.2.0 + sanitize-html: ~2.7.3 + checksum: b569303e8b38173de8612a3c04bac349f25c151bbb83b4f594311d679896aed37ba1467e9ff123e605c0d5400c89cf0d66fce697440ea07fff9dd4a408148e2f + languageName: node + linkType: hard + +"@jupyterlab/attachments@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/attachments@npm:4.0.5" + dependencies: + "@jupyterlab/nbformat": ^4.0.5 + "@jupyterlab/observables": ^5.0.5 + "@jupyterlab/rendermime": ^4.0.5 + "@jupyterlab/rendermime-interfaces": ^3.8.5 + "@lumino/disposable": ^2.1.2 + "@lumino/signaling": ^2.1.2 + checksum: bb0a5dc7e830fc42824743cc817cf59a43c43b6f3979b3d6214619baf69f77bb70606241b39a92da21788348eb1144a0914e3683f0b2b8d01a530e8aeaf6f01e + languageName: node + linkType: hard + +"@jupyterlab/builder@npm:^4.0.0": + version: 4.0.5 + resolution: "@jupyterlab/builder@npm:4.0.5" + dependencies: + "@lumino/algorithm": ^2.0.1 + "@lumino/application": ^2.2.1 + "@lumino/commands": ^2.1.3 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/domutils": ^2.0.1 + "@lumino/dragdrop": ^2.1.3 + "@lumino/messaging": ^2.0.1 + "@lumino/properties": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/virtualdom": ^2.0.1 + "@lumino/widgets": ^2.3.0 + ajv: ^8.12.0 + commander: ^9.4.1 + css-loader: ^6.7.1 + duplicate-package-checker-webpack-plugin: ^3.0.0 + fs-extra: ^10.1.0 + glob: ~7.1.6 + license-webpack-plugin: ^2.3.14 + mini-css-extract-plugin: ^2.7.0 + mini-svg-data-uri: ^1.4.4 + path-browserify: ^1.0.0 + process: ^0.11.10 + source-map-loader: ~1.0.2 + style-loader: ~3.3.1 + supports-color: ^7.2.0 + terser-webpack-plugin: ^5.3.7 + webpack: ^5.76.1 + webpack-cli: ^5.0.1 + webpack-merge: ^5.8.0 + worker-loader: ^3.0.2 + bin: + build-labextension: lib/build-labextension.js + checksum: 60b12e784881a16a3d2c794b0edfaea85e5da0b84f1a751564741df665c0bfcea8baabb91e5c061461fc431a8a5570e837cbf7692b39935b0df7fe87e1c0f213 + languageName: node + linkType: hard + +"@jupyterlab/cells@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/cells@npm:4.0.5" + dependencies: + "@codemirror/state": ^6.2.0 + "@codemirror/view": ^6.9.6 + "@jupyter/ydoc": ^1.0.2 + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/attachments": ^4.0.5 + "@jupyterlab/codeeditor": ^4.0.5 + "@jupyterlab/codemirror": ^4.0.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/documentsearch": ^4.0.5 + "@jupyterlab/filebrowser": ^4.0.5 + "@jupyterlab/nbformat": ^4.0.5 + "@jupyterlab/observables": ^5.0.5 + "@jupyterlab/outputarea": ^4.0.5 + "@jupyterlab/rendermime": ^4.0.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/toc": ^6.0.5 + "@jupyterlab/translation": ^4.0.5 + "@jupyterlab/ui-components": ^4.0.5 + "@lumino/algorithm": ^2.0.1 + "@lumino/coreutils": ^2.1.2 + "@lumino/domutils": ^2.0.1 + "@lumino/dragdrop": ^2.1.3 + "@lumino/messaging": ^2.0.1 + "@lumino/polling": ^2.1.2 + "@lumino/signaling": ^2.1.2 + "@lumino/virtualdom": ^2.0.1 + "@lumino/widgets": ^2.3.0 + react: ^18.2.0 + checksum: d674a15ddf870bea876d8b40ec598bbe9ba6d59b653223b381beec7e4e1e18c1b2c623585a9edc24e186dc666d73c63c55cee76ec83f975183f17bb5a56a8573 + languageName: node + linkType: hard + +"@jupyterlab/codeeditor@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/codeeditor@npm:4.0.5" + dependencies: + "@codemirror/state": ^6.2.0 + "@jupyter/ydoc": ^1.0.2 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/nbformat": ^4.0.5 + "@jupyterlab/observables": ^5.0.5 + "@jupyterlab/statusbar": ^4.0.5 + "@jupyterlab/translation": ^4.0.5 + "@jupyterlab/ui-components": ^4.0.5 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/dragdrop": ^2.1.3 + "@lumino/messaging": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/widgets": ^2.3.0 + react: ^18.2.0 + checksum: 4bd539cd22ccf84b982b427ad921b33f0e4dd0c02980827b59bf748b30c6e85180e03357f92c2a2b54c3e086965d2458b6a5f2043160ede85f530a14300b3f00 + languageName: node + linkType: hard + +"@jupyterlab/codemirror@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/codemirror@npm:4.0.5" + dependencies: + "@codemirror/autocomplete": ^6.5.1 + "@codemirror/commands": ^6.2.3 + "@codemirror/lang-cpp": ^6.0.2 + "@codemirror/lang-css": ^6.1.1 + "@codemirror/lang-html": ^6.4.3 + "@codemirror/lang-java": ^6.0.1 + "@codemirror/lang-javascript": ^6.1.7 + "@codemirror/lang-json": ^6.0.1 + "@codemirror/lang-markdown": ^6.1.1 + "@codemirror/lang-php": ^6.0.1 + "@codemirror/lang-python": ^6.1.3 + "@codemirror/lang-rust": ^6.0.1 + "@codemirror/lang-sql": ^6.4.1 + "@codemirror/lang-wast": ^6.0.1 + "@codemirror/lang-xml": ^6.0.2 + "@codemirror/language": ^6.6.0 + "@codemirror/legacy-modes": ^6.3.2 + "@codemirror/search": ^6.3.0 + "@codemirror/state": ^6.2.0 + "@codemirror/view": ^6.9.6 + "@jupyter/ydoc": ^1.0.2 + "@jupyterlab/codeeditor": ^4.0.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/documentsearch": ^4.0.5 + "@jupyterlab/nbformat": ^4.0.5 + "@jupyterlab/translation": ^4.0.5 + "@lezer/common": ^1.0.2 + "@lezer/generator": ^1.2.2 + "@lezer/highlight": ^1.1.4 + "@lezer/markdown": ^1.0.2 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/signaling": ^2.1.2 + yjs: ^13.5.40 + checksum: 840d9abd7c34ce7fb09446eff235e056e2d04da290f83380c020a9c3e2a1a27c0d3fc7ffcbd54a1f6de6325a57cc18d350d30c61a0f27d9810d8d2ec32aa5cf2 + languageName: node + linkType: hard + +"@jupyterlab/console@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/console@npm:4.0.5" + dependencies: + "@codemirror/state": ^6.2.0 + "@codemirror/view": ^6.9.6 + "@jupyter/ydoc": ^1.0.2 + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/cells": ^4.0.5 + "@jupyterlab/codeeditor": ^4.0.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/nbformat": ^4.0.5 + "@jupyterlab/observables": ^5.0.5 + "@jupyterlab/rendermime": ^4.0.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/translation": ^4.0.5 + "@jupyterlab/ui-components": ^4.0.5 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/dragdrop": ^2.1.3 + "@lumino/messaging": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/widgets": ^2.3.0 + checksum: 22837f4dc7445370c3b2e971a58403f6b71843e103d65766e9aaa63757d34c0ba04399fa826fcd13a5530dbcbe31227cd6c6766900ef88a56cbea4a84ade0da7 + languageName: node + linkType: hard + +"@jupyterlab/coreutils@npm:^6.0.0, @jupyterlab/coreutils@npm:^6.0.5": + version: 6.0.5 + resolution: "@jupyterlab/coreutils@npm:6.0.5" + dependencies: + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/signaling": ^2.1.2 + minimist: ~1.2.0 + path-browserify: ^1.0.0 + url-parse: ~1.5.4 + checksum: c09be7c8f389bb7f019fb868acfc528a0bc553a7b091412b7e0bfb1d0f2c71223ada8d6972d42df25fb6f70be21ecac00703e12d1df62a44dc2a512baac54dac + languageName: node + linkType: hard + +"@jupyterlab/debugger@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/debugger@npm:4.0.5" + dependencies: + "@codemirror/state": ^6.2.0 + "@codemirror/view": ^6.9.6 + "@jupyter/ydoc": ^1.0.2 + "@jupyterlab/application": ^4.0.5 + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/cells": ^4.0.5 + "@jupyterlab/codeeditor": ^4.0.5 + "@jupyterlab/codemirror": ^4.0.5 + "@jupyterlab/console": ^4.0.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/docregistry": ^4.0.5 + "@jupyterlab/fileeditor": ^4.0.5 + "@jupyterlab/notebook": ^4.0.5 + "@jupyterlab/observables": ^5.0.5 + "@jupyterlab/rendermime": ^4.0.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/translation": ^4.0.5 + "@jupyterlab/ui-components": ^4.0.5 + "@lumino/algorithm": ^2.0.1 + "@lumino/commands": ^2.1.3 + "@lumino/coreutils": ^2.1.2 + "@lumino/datagrid": ^2.2.0 + "@lumino/disposable": ^2.1.2 + "@lumino/messaging": ^2.0.1 + "@lumino/polling": ^2.1.2 + "@lumino/signaling": ^2.1.2 + "@lumino/widgets": ^2.3.0 + "@vscode/debugprotocol": ^1.51.0 + react: ^18.2.0 + checksum: edeab0e4efa20ffcd0572efa863c988c6d4f413b22fabb139dc560fb8b31c833fc774974898af94f81d62a25c41df23b25434247ac0b180276211f322228bce4 + languageName: node + linkType: hard + +"@jupyterlab/docmanager@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/docmanager@npm:4.0.5" + dependencies: + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/docregistry": ^4.0.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/statusbar": ^4.0.5 + "@jupyterlab/translation": ^4.0.5 + "@jupyterlab/ui-components": ^4.0.5 + "@lumino/algorithm": ^2.0.1 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/messaging": ^2.0.1 + "@lumino/properties": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/widgets": ^2.3.0 + react: ^18.2.0 + checksum: 16627833d9d540e9569bd27e3464c6c9a5cf9f628265b5018a4f63e05f351c4891494b8c731f83bb279da3bb42d0da23cb1d1b536c0b1b4422e4f6f250377ca5 + languageName: node + linkType: hard + +"@jupyterlab/docregistry@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/docregistry@npm:4.0.5" + dependencies: + "@jupyter/ydoc": ^1.0.2 + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/codeeditor": ^4.0.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/observables": ^5.0.5 + "@jupyterlab/rendermime": ^4.0.5 + "@jupyterlab/rendermime-interfaces": ^3.8.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/translation": ^4.0.5 + "@jupyterlab/ui-components": ^4.0.5 + "@lumino/algorithm": ^2.0.1 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/messaging": ^2.0.1 + "@lumino/properties": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/widgets": ^2.3.0 + checksum: 455286f8fbeb00f7afcc52c43830d6ab6941020338df23564591a0a59e1b2551f918a55382540983a1bf0b1bf4bdfc008b88f5acbff4a2e3c5dca6ac1dd84a6d + languageName: node + linkType: hard + +"@jupyterlab/documentsearch@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/documentsearch@npm:4.0.5" + dependencies: + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/translation": ^4.0.5 + "@jupyterlab/ui-components": ^4.0.5 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/messaging": ^2.0.1 + "@lumino/polling": ^2.1.2 + "@lumino/signaling": ^2.1.2 + "@lumino/widgets": ^2.3.0 + react: ^18.2.0 + checksum: d7fe83a57562e9f90555c8b938f77edff21f7204b52a7cdd4a0cd21f5382fd5a7906e5d7c2ec661802b5d9bada42f80fcaa5d129931aeac949e8655d290d9adf + languageName: node + linkType: hard + +"@jupyterlab/filebrowser@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/filebrowser@npm:4.0.5" + dependencies: + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/docmanager": ^4.0.5 + "@jupyterlab/docregistry": ^4.0.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/statedb": ^4.0.5 + "@jupyterlab/statusbar": ^4.0.5 + "@jupyterlab/translation": ^4.0.5 + "@jupyterlab/ui-components": ^4.0.5 + "@lumino/algorithm": ^2.0.1 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/domutils": ^2.0.1 + "@lumino/dragdrop": ^2.1.3 + "@lumino/messaging": ^2.0.1 + "@lumino/polling": ^2.1.2 + "@lumino/signaling": ^2.1.2 + "@lumino/virtualdom": ^2.0.1 + "@lumino/widgets": ^2.3.0 + react: ^18.2.0 + checksum: f47d55cc8ff246efe65fdbf1f0fc09e227eca9bafcf0f1e45e1973612ad13e0853f1393882decddc2f1df015f11097b6d751bdbcdc255ed438adc96598b376a8 + languageName: node + linkType: hard + +"@jupyterlab/fileeditor@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/fileeditor@npm:4.0.5" + dependencies: + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/codeeditor": ^4.0.5 + "@jupyterlab/codemirror": ^4.0.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/docregistry": ^4.0.5 + "@jupyterlab/documentsearch": ^4.0.5 + "@jupyterlab/lsp": ^4.0.5 + "@jupyterlab/statusbar": ^4.0.5 + "@jupyterlab/toc": ^6.0.5 + "@jupyterlab/translation": ^4.0.5 + "@jupyterlab/ui-components": ^4.0.5 + "@lumino/commands": ^2.1.3 + "@lumino/coreutils": ^2.1.2 + "@lumino/messaging": ^2.0.1 + "@lumino/widgets": ^2.3.0 + react: ^18.2.0 + regexp-match-indices: ^1.0.2 + checksum: 7598dec866704fb664223b805a3fa7db4eb6506f10b4c59a831404d1462e2d993955b259095ea7d35258bb1be9147860d261f11e48c493331bb77746807565ac + languageName: node + linkType: hard + +"@jupyterlab/galata@npm:^5.0.5": + version: 5.0.5 + resolution: "@jupyterlab/galata@npm:5.0.5" + dependencies: + "@jupyterlab/application": ^4.0.5 + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/debugger": ^4.0.5 + "@jupyterlab/docmanager": ^4.0.5 + "@jupyterlab/nbformat": ^4.0.5 + "@jupyterlab/notebook": ^4.0.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/settingregistry": ^4.0.5 + "@lumino/coreutils": ^2.1.2 + "@playwright/test": ^1.32.2 + "@stdlib/stats": ~0.0.13 + fs-extra: ^10.1.0 + json5: ^2.2.3 + path: ~0.12.7 + systeminformation: ^5.8.6 + vega: ^5.20.0 + vega-lite: ^5.6.1 + vega-statistics: ^1.7.9 + checksum: 1e3562d2e81be6e4dac9451be0f97c519ffec7869bebaa6b2ed164686c13cac28bfaca3ba3191964eb7a0f25029be86d5310e038247cc2a39ab186505e728901 + languageName: node + linkType: hard + +"@jupyterlab/lsp@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/lsp@npm:4.0.5" + dependencies: + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/codeeditor": ^4.0.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/docregistry": ^4.0.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/translation": ^4.0.5 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/signaling": ^2.1.2 + lodash.mergewith: ^4.6.1 + vscode-jsonrpc: ^6.0.0 + vscode-languageserver-protocol: ^3.17.0 + vscode-ws-jsonrpc: ~1.0.2 + checksum: b59d21c9df84963c354422134e525acabab7f7fe2930e4bb5b5b81edd3e8397772ce5c395bc1faa7c79cddb6bfefc9e1c41edfd939241681da483ae3238be00d + languageName: node + linkType: hard + +"@jupyterlab/nbformat@npm:^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0, @jupyterlab/nbformat@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/nbformat@npm:4.0.5" + dependencies: + "@lumino/coreutils": ^2.1.2 + checksum: 51611e95e6b16dc3e952b731e0ef036d1e0f7eec497555e3bf8394f181da4184dc37c6b25a1b11b5ea031f22fd4b9602fb6a2e675d65fddc2ccb099236cf3e01 + languageName: node + linkType: hard + +"@jupyterlab/notebook@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/notebook@npm:4.0.5" + dependencies: + "@jupyter/ydoc": ^1.0.2 + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/cells": ^4.0.5 + "@jupyterlab/codeeditor": ^4.0.5 + "@jupyterlab/codemirror": ^4.0.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/docregistry": ^4.0.5 + "@jupyterlab/documentsearch": ^4.0.5 + "@jupyterlab/lsp": ^4.0.5 + "@jupyterlab/nbformat": ^4.0.5 + "@jupyterlab/observables": ^5.0.5 + "@jupyterlab/rendermime": ^4.0.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/settingregistry": ^4.0.5 + "@jupyterlab/statusbar": ^4.0.5 + "@jupyterlab/toc": ^6.0.5 + "@jupyterlab/translation": ^4.0.5 + "@jupyterlab/ui-components": ^4.0.5 + "@lumino/algorithm": ^2.0.1 + "@lumino/coreutils": ^2.1.2 + "@lumino/domutils": ^2.0.1 + "@lumino/dragdrop": ^2.1.3 + "@lumino/messaging": ^2.0.1 + "@lumino/properties": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/virtualdom": ^2.0.1 + "@lumino/widgets": ^2.3.0 + react: ^18.2.0 + checksum: c6979a1b3cc1a6e4eb82176d97bc2109f8f3bcf6b281853a6fb8d350e66fa443dcd34981d46b0aebb03356e6533956dd4ad233e6dee9198acbd62b9c6f027bcd + languageName: node + linkType: hard + +"@jupyterlab/observables@npm:^5.0.5": + version: 5.0.5 + resolution: "@jupyterlab/observables@npm:5.0.5" + dependencies: + "@lumino/algorithm": ^2.0.1 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/messaging": ^2.0.1 + "@lumino/signaling": ^2.1.2 + checksum: e94d5a187a356f19db176d16a93e2b380c245a8bcf54eb283b405fc9a39cc937b790a0684defadd0eb103359838751d0184c23c5816c5fc36b86c90e2cbb96b9 + languageName: node + linkType: hard + +"@jupyterlab/outputarea@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/outputarea@npm:4.0.5" + dependencies: + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/nbformat": ^4.0.5 + "@jupyterlab/observables": ^5.0.5 + "@jupyterlab/rendermime": ^4.0.5 + "@jupyterlab/rendermime-interfaces": ^3.8.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/translation": ^4.0.5 + "@lumino/algorithm": ^2.0.1 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/messaging": ^2.0.1 + "@lumino/properties": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/widgets": ^2.3.0 + checksum: fc7f49b09ad8104fd0ac022366877eee228beb63f237afa76e785e170cb17e9ae18a686e7ac09f5f74bf25735ebc089812ea9374cc7920f4a0a641b9d565a046 + languageName: node + linkType: hard + +"@jupyterlab/rendermime-interfaces@npm:^3.8.5": + version: 3.8.5 + resolution: "@jupyterlab/rendermime-interfaces@npm:3.8.5" + dependencies: + "@lumino/coreutils": ^1.11.0 || ^2.1.2 + "@lumino/widgets": ^1.37.2 || ^2.3.0 + checksum: 3824c1aa0fa4b946211fd342ff73b0ebc7722dfeaf9794a8c64740dcc53151c0e6b81468f92d83fbe9a6da75d54fe4b176bd3ec98e1a526b50bbc0f91057c1aa + languageName: node + linkType: hard + +"@jupyterlab/rendermime@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/rendermime@npm:4.0.5" + dependencies: + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/nbformat": ^4.0.5 + "@jupyterlab/observables": ^5.0.5 + "@jupyterlab/rendermime-interfaces": ^3.8.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/translation": ^4.0.5 + "@lumino/coreutils": ^2.1.2 + "@lumino/messaging": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/widgets": ^2.3.0 + lodash.escape: ^4.0.1 + checksum: 472e25ebdee77599a90fef33402ef7c8f05d3c5266c9617805602b4e26022962e8973d55ab0b11bc24982c3aea1dc7d0b151064c822c2d1093111c17e87d1e80 + languageName: node + linkType: hard + +"@jupyterlab/services@npm:^7.0.0, @jupyterlab/services@npm:^7.0.5": + version: 7.0.5 + resolution: "@jupyterlab/services@npm:7.0.5" + dependencies: + "@jupyter/ydoc": ^1.0.2 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/nbformat": ^4.0.5 + "@jupyterlab/settingregistry": ^4.0.5 + "@jupyterlab/statedb": ^4.0.5 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/polling": ^2.1.2 + "@lumino/properties": ^2.0.1 + "@lumino/signaling": ^2.1.2 + ws: ^8.11.0 + checksum: cf4176dbb73c08e777b5e6ca26cba6ad7a142fc76ae6b46ef17ac7d8c8021f62d66e95e2ee0dbce5c33a0b2380750d440783d0398d787b8e8028920e04dd1d0b + languageName: node + linkType: hard + +"@jupyterlab/settingregistry@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/settingregistry@npm:4.0.5" + dependencies: + "@jupyterlab/nbformat": ^4.0.5 + "@jupyterlab/statedb": ^4.0.5 + "@lumino/commands": ^2.1.3 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/signaling": ^2.1.2 + "@rjsf/utils": ^5.1.0 + ajv: ^8.12.0 + json5: ^2.2.3 + peerDependencies: + react: ">=16" + checksum: b7d686e0f9629f25f423fbd114e598f5af2ae1cc7b683f3e236ff8c94f6d05b20e13ee4555e0eba6277b58fbcdf3c75dbcd66d4e79884b49bed649372d871540 + languageName: node + linkType: hard + +"@jupyterlab/statedb@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/statedb@npm:4.0.5" + dependencies: + "@lumino/commands": ^2.1.3 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/properties": ^2.0.1 + "@lumino/signaling": ^2.1.2 + checksum: 8e01de74a2168d19124773fa2b72329cfb43601c702127845a4172e87ee67b1304d34f53f65a6db214d832bd8c244c333936a22e08bbf1ea02e458e245140f62 + languageName: node + linkType: hard + +"@jupyterlab/statusbar@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/statusbar@npm:4.0.5" + dependencies: + "@jupyterlab/ui-components": ^4.0.5 + "@lumino/algorithm": ^2.0.1 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/messaging": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/widgets": ^2.3.0 + react: ^18.2.0 + checksum: eac3bc5cc191885fe0fb35466a015ecd8df103a38bc8fac0e2a2c0c7bc783d47e43a31679f83777c0a059091988d9dd2e191624c774fd32cb80c05f2d1166163 + languageName: node + linkType: hard + +"@jupyterlab/testing@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/testing@npm:4.0.5" + dependencies: + "@babel/core": ^7.10.2 + "@babel/preset-env": ^7.10.2 + "@jupyterlab/coreutils": ^6.0.5 + "@lumino/coreutils": ^2.1.2 + "@lumino/signaling": ^2.1.2 + child_process: ~1.0.2 + deepmerge: ^4.2.2 + fs-extra: ^10.1.0 + identity-obj-proxy: ^3.0.0 + jest: ^29.2.0 + jest-environment-jsdom: ^29.3.0 + jest-junit: ^15.0.0 + node-fetch: ^2.6.0 + simulate-event: ~1.4.0 + ts-jest: ^29.1.0 + peerDependencies: + typescript: ">=4.3" + checksum: 5f242263f879bb075db6ff5125dbdb495589703ae2e287c171b7680954db16eb6fd3ab66d09d77ca27686a1d1ec3a0736c78f86808dd222949c834ebd13910fb + languageName: node + linkType: hard + +"@jupyterlab/testutils@npm:^4.0.0": + version: 4.0.5 + resolution: "@jupyterlab/testutils@npm:4.0.5" + dependencies: + "@jupyterlab/application": ^4.0.5 + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/notebook": ^4.0.5 + "@jupyterlab/rendermime": ^4.0.5 + "@jupyterlab/testing": ^4.0.5 + checksum: 8313c5b83ff0c338d50f94a4fdbf454eb2795ce5a7f8cdd6110ec6b3b946b2499b6dad6529379ea0cb94808ac1f33538730f3e84486588005ead3ada1e96a157 + languageName: node + linkType: hard + +"@jupyterlab/toc@npm:^6.0.5": + version: 6.0.5 + resolution: "@jupyterlab/toc@npm:6.0.5" + dependencies: + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/docregistry": ^4.0.5 + "@jupyterlab/observables": ^5.0.5 + "@jupyterlab/rendermime": ^4.0.5 + "@jupyterlab/translation": ^4.0.5 + "@jupyterlab/ui-components": ^4.0.5 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/messaging": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/widgets": ^2.3.0 + react: ^18.2.0 + checksum: 4b688fdd2aa0d14db02394bafcbae5e0ce632681e8541ff3ca6153ba0e219dc20cb99f03ef4ac25f849b4b7b23f3e168e50a450bf952f42b0418e2e42aaeb546 + languageName: node + linkType: hard + +"@jupyterlab/translation@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/translation@npm:4.0.5" + dependencies: + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/rendermime-interfaces": ^3.8.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/statedb": ^4.0.5 + "@lumino/coreutils": ^2.1.2 + checksum: ba879b7ed27f9398f409333624f679ad4c6d02f668a832eb7ee0cc27998e17d12938192dc32cdf74eff9c1b76116215543b1218093c32717d465568794b49660 + languageName: node + linkType: hard + +"@jupyterlab/ui-components@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/ui-components@npm:4.0.5" + dependencies: + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/observables": ^5.0.5 + "@jupyterlab/rendermime-interfaces": ^3.8.5 + "@jupyterlab/translation": ^4.0.5 + "@lumino/algorithm": ^2.0.1 + "@lumino/commands": ^2.1.3 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/messaging": ^2.0.1 + "@lumino/polling": ^2.1.2 + "@lumino/properties": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/virtualdom": ^2.0.1 + "@lumino/widgets": ^2.3.0 + "@rjsf/core": ^5.1.0 + "@rjsf/utils": ^5.1.0 + react: ^18.2.0 + react-dom: ^18.2.0 + typestyle: ^2.0.4 + peerDependencies: + react: ^18.2.0 + checksum: 4dfae7b37d7e7b58b83bdc75d260126fcdabfb9fd52cc3f04e3bf3c481c8f05c3b3323953389408f793ec7ec6580fd582667a83ab906a308361f0f20f766ad7a + languageName: node + linkType: hard + +"@lezer/common@npm:^1.0.0, @lezer/common@npm:^1.0.2": + version: 1.0.4 + resolution: "@lezer/common@npm:1.0.4" + checksum: 0bea82da76e0b89afad4e5159d3add460022916352c47906ec67b26d6fe5ec9cb8e23df0e2bf0adef765ae78bed1706fc573a11506d01a80112a5b6dd317730c + languageName: node + linkType: hard + +"@lezer/cpp@npm:^1.0.0": + version: 1.1.1 + resolution: "@lezer/cpp@npm:1.1.1" + dependencies: + "@lezer/highlight": ^1.0.0 + "@lezer/lr": ^1.0.0 + checksum: c9e1db19776eafbfe0c3b8448d46c94d9a1d30f7fef630292e63bab82e6d5d6903a043ee8cf341bcbf84c00ee0d79b8c255bab8fd8e0a91355ae912b53c78935 + languageName: node + linkType: hard + +"@lezer/css@npm:^1.0.0, @lezer/css@npm:^1.1.0": + version: 1.1.3 + resolution: "@lezer/css@npm:1.1.3" + dependencies: + "@lezer/highlight": ^1.0.0 + "@lezer/lr": ^1.0.0 + checksum: c8069ef0a6751441d2dc9180f7ebfd7aeb35df0ca2f1a748a2f26203a9ef6cc30f17f3074e2b49520453eb39329dadfdbbb901c6d9d067dc955ceb58c1f8cc6a + languageName: node + linkType: hard + +"@lezer/generator@npm:^1.2.2": + version: 1.5.0 + resolution: "@lezer/generator@npm:1.5.0" + dependencies: + "@lezer/common": ^1.0.2 + "@lezer/lr": ^1.3.0 + bin: + lezer-generator: src/lezer-generator.cjs + checksum: ef585cced8468df7005020011e60faa6372a7fd43cf6f221c7b03a7537231c19c72846922a076383f21e6756a9030eba1e28eee374e40a9801ad77c093b8b20a + languageName: node + linkType: hard + +"@lezer/highlight@npm:^1.0.0, @lezer/highlight@npm:^1.1.3, @lezer/highlight@npm:^1.1.4": + version: 1.1.6 + resolution: "@lezer/highlight@npm:1.1.6" + dependencies: + "@lezer/common": ^1.0.0 + checksum: 411a702394c4c996b7d7f145a38f3a85a8cc698b3918acc7121c629255bb76d4ab383753f69009e011dc415210c6acbbb5b27bde613259ab67e600b29397b03b + languageName: node + linkType: hard + +"@lezer/html@npm:^1.3.0": + version: 1.3.6 + resolution: "@lezer/html@npm:1.3.6" + dependencies: + "@lezer/common": ^1.0.0 + "@lezer/highlight": ^1.0.0 + "@lezer/lr": ^1.0.0 + checksum: 1d3af781660968505e5083a34f31ea3549fd5f3949227fa93cc318bca61bce76ffe977bd875624ba938a2039834ec1a33df5d365e94c48131c85dd26f980d92c + languageName: node + linkType: hard + +"@lezer/java@npm:^1.0.0": + version: 1.0.4 + resolution: "@lezer/java@npm:1.0.4" + dependencies: + "@lezer/highlight": ^1.0.0 + "@lezer/lr": ^1.0.0 + checksum: 97f5a2c2d733afba5dc57a0da9a97515b19b5e63bb5937717dac4e8c9baed74d15c0cb5c1580858b678931f11d517c56d89f903968fa48931f9c62e2ea67a107 + languageName: node + linkType: hard + +"@lezer/javascript@npm:^1.0.0": + version: 1.4.7 + resolution: "@lezer/javascript@npm:1.4.7" + dependencies: + "@lezer/highlight": ^1.1.3 + "@lezer/lr": ^1.3.0 + checksum: 37c05793e0e45280fa5d7b845a3132a84596105d48b7d2c195abea0a198477ea6719b07d1c8967679e80fc466388151956901fd6962479c130ffda64a6d09591 + languageName: node + linkType: hard + +"@lezer/json@npm:^1.0.0": + version: 1.0.1 + resolution: "@lezer/json@npm:1.0.1" + dependencies: + "@lezer/highlight": ^1.0.0 + "@lezer/lr": ^1.0.0 + checksum: fcd17178f6a58e71c83e08fdc047e3708528b28591ba8f08ed35268f370d1ec9b63af0afa9d82a77fec26e9eb477ab3cfdc31c951e080d118ef607f9f9bb52e3 + languageName: node + linkType: hard + +"@lezer/lr@npm:^1.0.0, @lezer/lr@npm:^1.1.0, @lezer/lr@npm:^1.3.0": + version: 1.3.10 + resolution: "@lezer/lr@npm:1.3.10" + dependencies: + "@lezer/common": ^1.0.0 + checksum: 9d3c22bf692561cf7fe2f3d14e821913f87116ff9d73b8b550e7998b6135baae9f504563846a4257e1bb4eae97ae1b60c06c6066450ddeef5e03e8783526b2ae + languageName: node + linkType: hard + +"@lezer/markdown@npm:^1.0.0, @lezer/markdown@npm:^1.0.2": + version: 1.1.0 + resolution: "@lezer/markdown@npm:1.1.0" + dependencies: + "@lezer/common": ^1.0.0 + "@lezer/highlight": ^1.0.0 + checksum: b3699c0724dd41e3e6e3078a0e1bcd272ccaebf17b20e5160de3ecf26200cdaa59aa19c9542aac5ab8c7e3aecce1003544b016bb5c32e458bbd5982add8ca0bf + languageName: node + linkType: hard + +"@lezer/php@npm:^1.0.0": + version: 1.0.1 + resolution: "@lezer/php@npm:1.0.1" + dependencies: + "@lezer/highlight": ^1.0.0 + "@lezer/lr": ^1.1.0 + checksum: a847c255c030b4d38913ddf1d5bd7324d83be7ef8d1d244542870be03b9bf7dc71283afeb2415c40dfd188cb99f0cc44bad760b5f3b7c35c3b8e5e00253848fc + languageName: node + linkType: hard + +"@lezer/python@npm:^1.1.4": + version: 1.1.8 + resolution: "@lezer/python@npm:1.1.8" + dependencies: + "@lezer/highlight": ^1.0.0 + "@lezer/lr": ^1.0.0 + checksum: e4a4e0b0fd871acff25111d4f767944b5015479776504b85c4431859c8a2859fdfa6362f204f3027cf9858c7ea907fd57244852a18b67da9eba3b2fe38d31b03 + languageName: node + linkType: hard + +"@lezer/rust@npm:^1.0.0": + version: 1.0.1 + resolution: "@lezer/rust@npm:1.0.1" + dependencies: + "@lezer/highlight": ^1.0.0 + "@lezer/lr": ^1.0.0 + checksum: 1e02fdf09206979e7d4f87b020589f410c4c5e452a7b7b0296f6772ce3571c1bd7ed37495fbeeecf3d4423000f2efdabd462ba8a949c2b351fd35550327a7613 + languageName: node + linkType: hard + +"@lezer/xml@npm:^1.0.0": + version: 1.0.2 + resolution: "@lezer/xml@npm:1.0.2" + dependencies: + "@lezer/highlight": ^1.0.0 + "@lezer/lr": ^1.0.0 + checksum: e834bcc5c0dee3eecb5362b3f10187e80908b6a293ebacf5750547a64b57ec710a068497334f109ecf4e5ea05e09e7e9c00e48ebbd30050673ea67b0929e5398 + languageName: node + linkType: hard + +"@lumino/algorithm@npm:^2.0.1": + version: 2.0.1 + resolution: "@lumino/algorithm@npm:2.0.1" + checksum: cbf7fcf6ee6b785ea502cdfddc53d61f9d353dcb9659343511d5cd4b4030be2ff2ca4c08daec42f84417ab0318a3d9972a17319fa5231693e109ab112dcf8000 + languageName: node + linkType: hard + +"@lumino/application@npm:^2.2.1": + version: 2.2.1 + resolution: "@lumino/application@npm:2.2.1" + dependencies: + "@lumino/commands": ^2.1.3 + "@lumino/coreutils": ^2.1.2 + "@lumino/widgets": ^2.3.0 + checksum: a33e661703728440bc7d2ddb4674261f4de0d20eb8c9846646cbd6debac03b5c65e78d739a500903550fd83b8f47b47fa82ec178c97bc9967ca3ac4014075cde + languageName: node + linkType: hard + +"@lumino/collections@npm:^2.0.1": + version: 2.0.1 + resolution: "@lumino/collections@npm:2.0.1" + dependencies: + "@lumino/algorithm": ^2.0.1 + checksum: 8a29b7973a388a33c5beda0819dcd2dc2aad51a8406dcfd4581b055a9f77a39dc5800f7a8b4ae3c0bb97ae7b56a7a869e2560ffb7a920a28e93b477ba05907d6 + languageName: node + linkType: hard + +"@lumino/commands@npm:^2.1.3": + version: 2.1.3 + resolution: "@lumino/commands@npm:2.1.3" + dependencies: + "@lumino/algorithm": ^2.0.1 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/domutils": ^2.0.1 + "@lumino/keyboard": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/virtualdom": ^2.0.1 + checksum: e4e3ee279f2a5e8d68e4ce142c880333f5542f90c684972402356936ecb5cf5e07163800b59e7cb8c911cbdb4e5089edcc5dd2990bc8db10c87517268de1fc5d + languageName: node + linkType: hard + +"@lumino/coreutils@npm:^1.11.0 || ^2.0.0, @lumino/coreutils@npm:^1.11.0 || ^2.1.2, @lumino/coreutils@npm:^2.1.2": + version: 2.1.2 + resolution: "@lumino/coreutils@npm:2.1.2" + checksum: 7865317ac0676b448d108eb57ab5d8b2a17c101995c0f7a7106662d9fe6c859570104525f83ee3cda12ae2e326803372206d6f4c1f415a5b59e4158a7b81066f + languageName: node + linkType: hard + +"@lumino/datagrid@npm:^2.2.0": + version: 2.2.0 + resolution: "@lumino/datagrid@npm:2.2.0" + dependencies: + "@lumino/algorithm": ^2.0.1 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/domutils": ^2.0.1 + "@lumino/dragdrop": ^2.1.3 + "@lumino/keyboard": ^2.0.1 + "@lumino/messaging": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/widgets": ^2.3.0 + checksum: dcd6e06500c05b0f30b9924a25a2cc4c1cb98b8432f488148e74e98a7fe092a1f19cadbdc9edfbede9e2030d30b84e5633e40753fbe8d6bbb120d3336d3675ff + languageName: node + linkType: hard + +"@lumino/disposable@npm:^1.10.0 || ^2.0.0, @lumino/disposable@npm:^2.1.2": + version: 2.1.2 + resolution: "@lumino/disposable@npm:2.1.2" + dependencies: + "@lumino/signaling": ^2.1.2 + checksum: ac2fb2bf18d0b2939fda454f3db248a0ff6e8a77b401e586d1caa9293b3318f808b93a117c9c3ac27cd17aab545aea83b49108d099b9b2f5503ae2a012fbc6e2 + languageName: node + linkType: hard + +"@lumino/domutils@npm:^2.0.1": + version: 2.0.1 + resolution: "@lumino/domutils@npm:2.0.1" + checksum: 61fa0ab226869dfbb763fc426790cf5a43b7d6f4cea1364c6dd56d61c44bff05eea188d33ff847449608ef58ed343161bee15c19b96f35410e4ee35815dc611a + languageName: node + linkType: hard + +"@lumino/dragdrop@npm:^2.1.3": + version: 2.1.3 + resolution: "@lumino/dragdrop@npm:2.1.3" + dependencies: + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + checksum: d5f7eb4cc9f9a084cb9af10f02d6741b25d683350878ecbc324e24ba9d4b5246451a410e2ca5fff227aab1c191d1e73a2faf431f93e13111d67a4e426e126258 + languageName: node + linkType: hard + +"@lumino/keyboard@npm:^2.0.1": + version: 2.0.1 + resolution: "@lumino/keyboard@npm:2.0.1" + checksum: cf33f13427a418efd7cc91061233321e860d5404f3d86397781028309bef86c8ad2d88276ffe335c1db0fe619bd9d1e60641c81f881696957a58703ee4652c3e + languageName: node + linkType: hard + +"@lumino/messaging@npm:^2.0.1": + version: 2.0.1 + resolution: "@lumino/messaging@npm:2.0.1" + dependencies: + "@lumino/algorithm": ^2.0.1 + "@lumino/collections": ^2.0.1 + checksum: 964c4651c374b17452b4252b7d71500b32d2ecd87c192fc5bcf5d3bd1070661d78d07edcac8eca7d1d6fd50aa25992505485e1296d6dd995691b8e349b652045 + languageName: node + linkType: hard + +"@lumino/polling@npm:^2.1.2": + version: 2.1.2 + resolution: "@lumino/polling@npm:2.1.2" + dependencies: + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/signaling": ^2.1.2 + checksum: fa9b401e6dbeb8f31d7e3ba485e8ef1e0c92b3f2da086239c0ed49931026f5d3528709193c93e031e35ac624fb4bbbfcdcbaa0e25eb797f36e2952e5cd91e9e3 + languageName: node + linkType: hard + +"@lumino/properties@npm:^2.0.1": + version: 2.0.1 + resolution: "@lumino/properties@npm:2.0.1" + checksum: c50173a935148cc4148fdaea119df1d323ee004ae16ab666800388d27e9730345629662d85f25591683329b39f0cdae60ee8c94e8943b4d0ef7d7370a38128d6 + languageName: node + linkType: hard + +"@lumino/signaling@npm:^1.10.0 || ^2.0.0, @lumino/signaling@npm:^2.1.2": + version: 2.1.2 + resolution: "@lumino/signaling@npm:2.1.2" + dependencies: + "@lumino/algorithm": ^2.0.1 + "@lumino/coreutils": ^2.1.2 + checksum: ad7d7153db57980da899c43e412e6130316ef30b231a70250e7af49058db16cadb018c1417a2ea8083d83c48623cfe6b705fa82bf10216b1a8949aed9f4aca4e + languageName: node + linkType: hard + +"@lumino/virtualdom@npm:^2.0.1": + version: 2.0.1 + resolution: "@lumino/virtualdom@npm:2.0.1" + dependencies: + "@lumino/algorithm": ^2.0.1 + checksum: cf59b6f15b430e13e9e657b7a0619b9056cd9ea7b2a87f407391d071c501b77403c302b6a66dca510382045e75b2e3fe551630bb391f1c6b33678057d4bec164 + languageName: node + linkType: hard + +"@lumino/widgets@npm:^1.37.2 || ^2.3.0, @lumino/widgets@npm:^2.3.0": + version: 2.3.0 + resolution: "@lumino/widgets@npm:2.3.0" + dependencies: + "@lumino/algorithm": ^2.0.1 + "@lumino/commands": ^2.1.3 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/domutils": ^2.0.1 + "@lumino/dragdrop": ^2.1.3 + "@lumino/keyboard": ^2.0.1 + "@lumino/messaging": ^2.0.1 + "@lumino/properties": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/virtualdom": ^2.0.1 + checksum: a8559bd3574b7fc16e7679e05994c515b0d3e78dada35786d161f67c639941d134e92ce31d95c2e4ac06709cdf83b0e7fb4b6414a3f7779579222a2fb525d025 + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": 2.0.5 + run-parallel: ^1.1.9 + checksum: a970d595bd23c66c880e0ef1817791432dbb7acbb8d44b7e7d0e7a22f4521260d4a83f7f9fd61d44fda4610105577f8f58a60718105fb38352baed612fd79e59 + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": 2.1.5 + fastq: ^1.6.0 + checksum: 190c643f156d8f8f277bf2a6078af1ffde1fd43f498f187c2db24d35b4b4b5785c02c7dc52e356497b9a1b65b13edc996de08de0b961c32844364da02986dc53 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^3.1.0": + version: 3.1.0 + resolution: "@npmcli/fs@npm:3.1.0" + dependencies: + semver: ^7.3.5 + checksum: a50a6818de5fc557d0b0e6f50ec780a7a02ab8ad07e5ac8b16bf519e0ad60a144ac64f97d05c443c3367235d337182e1d012bbac0eb8dbae8dc7b40b193efd0e + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 6ad6a00fc4f2f2cfc6bff76fb1d88b8ee20bc0601e18ebb01b6d4be583733a860239a521a7fbca73b612e66705078809483549d2b18f370eb346c5155c8e4a0f + languageName: node + linkType: hard + +"@pkgr/utils@npm:^2.3.1": + version: 2.4.2 + resolution: "@pkgr/utils@npm:2.4.2" + dependencies: + cross-spawn: ^7.0.3 + fast-glob: ^3.3.0 + is-glob: ^4.0.3 + open: ^9.1.0 + picocolors: ^1.0.0 + tslib: ^2.6.0 + checksum: 24e04c121269317d259614cd32beea3af38277151c4002df5883c4be920b8e3490bb897748e844f9d46bf68230f86dabd4e8f093773130e7e60529a769a132fc + languageName: node + linkType: hard + +"@playwright/test@npm:^1.32.2, @playwright/test@npm:^1.37.0": + version: 1.37.1 + resolution: "@playwright/test@npm:1.37.1" + dependencies: + "@types/node": "*" + fsevents: 2.3.2 + playwright-core: 1.37.1 + dependenciesMeta: + fsevents: + optional: true + bin: + playwright: cli.js + checksum: b7038f29000289103c08b215eff7aabdda70cdc1375fa7dad0e81651be71086a1e2fc0e0e29dc70348037c366cf0cc69f762373fda34ba1a74aa1658741d9195 + languageName: node + linkType: hard + +"@rjsf/core@npm:^5.1.0": + version: 5.13.0 + resolution: "@rjsf/core@npm:5.13.0" + dependencies: + lodash: ^4.17.21 + lodash-es: ^4.17.21 + markdown-to-jsx: ^7.3.2 + nanoid: ^3.3.6 + prop-types: ^15.8.1 + peerDependencies: + "@rjsf/utils": ^5.12.x + react: ^16.14.0 || >=17 + checksum: d7d66d20fcdf310f4b152c22e1ac1ca8abe5f40b502711c9cabc4241b3252ec0e58345aa194529d2bdfb7a51b9f1179c9ddefc0cdc7fd9f94ad10c5e5b1032b8 + languageName: node + linkType: hard + +"@rjsf/utils@npm:^5.1.0": + version: 5.13.0 + resolution: "@rjsf/utils@npm:5.13.0" + dependencies: + json-schema-merge-allof: ^0.8.1 + jsonpointer: ^5.0.1 + lodash: ^4.17.21 + lodash-es: ^4.17.21 + react-is: ^18.2.0 + peerDependencies: + react: ^16.14.0 || >=17 + checksum: 283e2b405eac2f4fdd243b2e35ade7e83a4bf7551eb5e075499e8eb5d3a3ae161e9c047bcf63d2e6fef7c6b2e7438f1a150f353b909df992e85194940c311f9b + languageName: node + linkType: hard + +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 00bd7362a3439021aa1ea51b0e0d0a0e8ca1351a3d54c606b115fdcc49b51b16db6e5f43b4fe7a28c38688523e22a94d49dd31168868b655f0d4d50f032d07a1 + languageName: node + linkType: hard + +"@sinonjs/commons@npm:^3.0.0": + version: 3.0.0 + resolution: "@sinonjs/commons@npm:3.0.0" + dependencies: + type-detect: 4.0.8 + checksum: b4b5b73d4df4560fb8c0c7b38c7ad4aeabedd362f3373859d804c988c725889cde33550e4bcc7cd316a30f5152a2d1d43db71b6d0c38f5feef71fd8d016763f8 + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:^10.0.2": + version: 10.3.0 + resolution: "@sinonjs/fake-timers@npm:10.3.0" + dependencies: + "@sinonjs/commons": ^3.0.0 + checksum: 614d30cb4d5201550c940945d44c9e0b6d64a888ff2cd5b357f95ad6721070d6b8839cd10e15b76bf5e14af0bcc1d8f9ec00d49a46318f1f669a4bec1d7f3148 + languageName: node + linkType: hard + +"@stdlib/array@npm:^0.0.x": + version: 0.0.12 + resolution: "@stdlib/array@npm:0.0.12" + dependencies: + "@stdlib/assert": ^0.0.x + "@stdlib/blas": ^0.0.x + "@stdlib/complex": ^0.0.x + "@stdlib/constants": ^0.0.x + "@stdlib/math": ^0.0.x + "@stdlib/symbol": ^0.0.x + "@stdlib/types": ^0.0.x + "@stdlib/utils": ^0.0.x + checksum: 0d95690461f0c4560eabef0796d1170274415cd03de80333c6d39814d0484a6873ef4be04a64941ebf3a600747e84c3a4f23b21c7020e53842c07985331b39f1 + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/assert@npm:^0.0.x": + version: 0.0.12 + resolution: "@stdlib/assert@npm:0.0.12" + dependencies: + "@stdlib/array": ^0.0.x + "@stdlib/cli": ^0.0.x + "@stdlib/complex": ^0.0.x + "@stdlib/constants": ^0.0.x + "@stdlib/fs": ^0.0.x + "@stdlib/math": ^0.0.x + "@stdlib/ndarray": ^0.0.x + "@stdlib/number": ^0.0.x + "@stdlib/os": ^0.0.x + "@stdlib/process": ^0.0.x + "@stdlib/regexp": ^0.0.x + "@stdlib/streams": ^0.0.x + "@stdlib/string": ^0.0.x + "@stdlib/symbol": ^0.0.x + "@stdlib/types": ^0.0.x + "@stdlib/utils": ^0.0.x + checksum: d4dcbeabbfb86ba56cdd972ff785f43e7d25018b2b1800cab8b0deb9e5c54c795d6ead3d142f4dd13c351f636deba4dc1857c85147d6b059fdc78eb2c9510b99 + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/bigint@npm:^0.0.x": + version: 0.0.11 + resolution: "@stdlib/bigint@npm:0.0.11" + dependencies: + "@stdlib/utils": ^0.0.x + checksum: 7bf825d116e4b010e214209af239706ac1ef923eecb5c8b0af9229c9975450081355e441ecc7b4765d81a9e653141868e0492b8061d1e65724fa42fb8283aabd + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/blas@npm:^0.0.x": + version: 0.0.12 + resolution: "@stdlib/blas@npm:0.0.12" + dependencies: + "@stdlib/array": ^0.0.x + "@stdlib/assert": ^0.0.x + "@stdlib/math": ^0.0.x + "@stdlib/number": ^0.0.x + "@stdlib/types": ^0.0.x + "@stdlib/utils": ^0.0.x + checksum: 67ea00a968f7a9c710b37f718b7f756e2830e479a1a1ee44cbf6ec3cc27dd8863078928867707d9d1624007e81de89d040f2326d10f435e2cce913cab121975e + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/buffer@npm:^0.0.x": + version: 0.0.11 + resolution: "@stdlib/buffer@npm:0.0.11" + dependencies: + "@stdlib/array": ^0.0.x + "@stdlib/assert": ^0.0.x + "@stdlib/process": ^0.0.x + "@stdlib/types": ^0.0.x + "@stdlib/utils": ^0.0.x + checksum: 93df02e3bf548e940ff9cef65121566e7bf93b554f0614d62336c9dbccfc07c9f1b1c4e9a7aebbe4819ef16a6d2a33a7010c2fdf908fface8298a3109c3c4ef0 + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/cli@npm:^0.0.x": + version: 0.0.10 + resolution: "@stdlib/cli@npm:0.0.10" + dependencies: + "@stdlib/utils": ^0.0.x + minimist: ^1.2.0 + checksum: bbece8d3dbff2835518582a7726c6c4c22743dc408d2303d9e35a3b72151d5d0a8e78d61bc896663d4c3fb702e966abea7a1bd621ed943723a359f57053f121f + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/complex@npm:^0.0.x": + version: 0.0.12 + resolution: "@stdlib/complex@npm:0.0.12" + dependencies: + "@stdlib/array": ^0.0.x + "@stdlib/assert": ^0.0.x + "@stdlib/types": ^0.0.x + "@stdlib/utils": ^0.0.x + checksum: 8eda35027495417f1b0dd9bbbc2d4983f50ad3cf9e2276ffe0945ccdbe78f0fc66b9fc36ab71926d2a125c8fb7467c8970a222b230b42ff4bb8042c53314ca09 + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/constants@npm:^0.0.x": + version: 0.0.11 + resolution: "@stdlib/constants@npm:0.0.11" + dependencies: + "@stdlib/array": ^0.0.x + "@stdlib/assert": ^0.0.x + "@stdlib/number": ^0.0.x + "@stdlib/utils": ^0.0.x + checksum: fc19d055a4e71ae84b6c92e4a3a88371d50693da8f0a813df4063dc549374d19b9cf23f4fdae2fb7b2013e13929f713c3e1b9e4054767e741b75561ed43d15c3 + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/fs@npm:^0.0.x": + version: 0.0.12 + resolution: "@stdlib/fs@npm:0.0.12" + dependencies: + "@stdlib/array": ^0.0.x + "@stdlib/assert": ^0.0.x + "@stdlib/cli": ^0.0.x + "@stdlib/math": ^0.0.x + "@stdlib/process": ^0.0.x + "@stdlib/string": ^0.0.x + "@stdlib/utils": ^0.0.x + debug: ^2.6.9 + checksum: 33ac5ee4844d4599fe3a8a8402f1a3e2cafee31a5c9cf5b85df530a61a2b54ef17dc30a67be98dacdc2958219413edd0e4cdc3c28266f4bc30277ee024f6a49e + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/math@npm:^0.0.x": + version: 0.0.11 + resolution: "@stdlib/math@npm:0.0.11" + dependencies: + "@stdlib/assert": ^0.0.x + "@stdlib/constants": ^0.0.x + "@stdlib/ndarray": ^0.0.x + "@stdlib/number": ^0.0.x + "@stdlib/strided": ^0.0.x + "@stdlib/symbol": ^0.0.x + "@stdlib/types": ^0.0.x + "@stdlib/utils": ^0.0.x + debug: ^2.6.9 + checksum: 6c4c9dda36fbce50553e1437354c5286aa782c42399534dbed8e696ddeb1b91ef6cff5fe5962f1c9e1eb2ef63c63d9bd58f7ca4b87d59018aaac20099c3fb79a + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/ndarray@npm:^0.0.x": + version: 0.0.13 + resolution: "@stdlib/ndarray@npm:0.0.13" + dependencies: + "@stdlib/array": ^0.0.x + "@stdlib/assert": ^0.0.x + "@stdlib/bigint": ^0.0.x + "@stdlib/buffer": ^0.0.x + "@stdlib/complex": ^0.0.x + "@stdlib/constants": ^0.0.x + "@stdlib/math": ^0.0.x + "@stdlib/number": ^0.0.x + "@stdlib/string": ^0.0.x + "@stdlib/types": ^0.0.x + "@stdlib/utils": ^0.0.x + checksum: 842a94afce5fc74bf8a964b75a302ddb8713eadbc79616e6799f1310c8bce860ed9e9877adc4a39338d9136b8798947ee21cf03368d46408308a313c8075d49a + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/nlp@npm:^0.0.x": + version: 0.0.11 + resolution: "@stdlib/nlp@npm:0.0.11" + dependencies: + "@stdlib/array": ^0.0.x + "@stdlib/assert": ^0.0.x + "@stdlib/math": ^0.0.x + "@stdlib/random": ^0.0.x + "@stdlib/string": ^0.0.x + "@stdlib/utils": ^0.0.x + checksum: 398fe2853fb95404bb6598e3e199ca3e0435b94447d50e14e2e30582cadfb91f43464f23d80a0e1da4d64567a4a108a7299d7440509f1ab26b02aea7bb16e9a8 + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/number@npm:^0.0.x": + version: 0.0.10 + resolution: "@stdlib/number@npm:0.0.10" + dependencies: + "@stdlib/array": ^0.0.x + "@stdlib/assert": ^0.0.x + "@stdlib/constants": ^0.0.x + "@stdlib/math": ^0.0.x + "@stdlib/os": ^0.0.x + "@stdlib/string": ^0.0.x + "@stdlib/types": ^0.0.x + "@stdlib/utils": ^0.0.x + checksum: 326190956c787cbf9321c332beedab5ba4b3fa97d52a82aa708a0349b4678c0df7a351424f00a606f4eaca4fb4ba4cc191580c99d7c64ee0f08d37baa3de14f2 + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/os@npm:^0.0.x": + version: 0.0.12 + resolution: "@stdlib/os@npm:0.0.12" + dependencies: + "@stdlib/assert": ^0.0.x + "@stdlib/cli": ^0.0.x + "@stdlib/fs": ^0.0.x + "@stdlib/process": ^0.0.x + "@stdlib/utils": ^0.0.x + checksum: 37156b0c723da70d7740d92d08fc592eae803461c1d546cff6ac044765d6e40722fdad342219277e747c39344b513096ac1d0aa1e733cf3079bd8a9a8578612a + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/process@npm:^0.0.x": + version: 0.0.12 + resolution: "@stdlib/process@npm:0.0.12" + dependencies: + "@stdlib/assert": ^0.0.x + "@stdlib/buffer": ^0.0.x + "@stdlib/cli": ^0.0.x + "@stdlib/fs": ^0.0.x + "@stdlib/streams": ^0.0.x + "@stdlib/string": ^0.0.x + "@stdlib/utils": ^0.0.x + checksum: 6d5c3d943f9914d1ae39bd36ad7436f783cf64baa2bff67a808035c99258676ae3f704c328a78d62754951cf85fe99d8e9af5f4fa7d5f8cba347bca72767e357 + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/random@npm:^0.0.x": + version: 0.0.12 + resolution: "@stdlib/random@npm:0.0.12" + dependencies: + "@stdlib/array": ^0.0.x + "@stdlib/assert": ^0.0.x + "@stdlib/blas": ^0.0.x + "@stdlib/buffer": ^0.0.x + "@stdlib/cli": ^0.0.x + "@stdlib/constants": ^0.0.x + "@stdlib/fs": ^0.0.x + "@stdlib/math": ^0.0.x + "@stdlib/process": ^0.0.x + "@stdlib/stats": ^0.0.x + "@stdlib/streams": ^0.0.x + "@stdlib/symbol": ^0.0.x + "@stdlib/types": ^0.0.x + "@stdlib/utils": ^0.0.x + debug: ^2.6.9 + readable-stream: ^2.1.4 + checksum: 67fcb5553274f8596ceae91153e96ae297bacfd55279821cb09f19f2844845aaf892802e4a5962965323dbfded0c7df8a89a6ce77d60d5c8a5899d483055a964 + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/regexp@npm:^0.0.x": + version: 0.0.13 + resolution: "@stdlib/regexp@npm:0.0.13" + dependencies: + "@stdlib/assert": ^0.0.x + "@stdlib/utils": ^0.0.x + checksum: dd52adb096ff9a02d1c4818be2889ae01bc04a0cdbc0d52473685e0a7a4eaa13e1be603b964f140f7488d11450b644dc5f8c97029d77db1ed4a563554245ff1c + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/stats@npm:^0.0.x, @stdlib/stats@npm:~0.0.13": + version: 0.0.13 + resolution: "@stdlib/stats@npm:0.0.13" + dependencies: + "@stdlib/array": ^0.0.x + "@stdlib/assert": ^0.0.x + "@stdlib/blas": ^0.0.x + "@stdlib/constants": ^0.0.x + "@stdlib/math": ^0.0.x + "@stdlib/ndarray": ^0.0.x + "@stdlib/random": ^0.0.x + "@stdlib/string": ^0.0.x + "@stdlib/symbol": ^0.0.x + "@stdlib/types": ^0.0.x + "@stdlib/utils": ^0.0.x + checksum: 5ca12b2e123543f56a59aca828e14afaf525ad4aa40467bee7037a9178e21e55d4ce8ba3de9387cc9a0efe3e0d035d6c58705b12f634f77a2b3f87d334dfb076 + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/streams@npm:^0.0.x": + version: 0.0.12 + resolution: "@stdlib/streams@npm:0.0.12" + dependencies: + "@stdlib/assert": ^0.0.x + "@stdlib/buffer": ^0.0.x + "@stdlib/cli": ^0.0.x + "@stdlib/fs": ^0.0.x + "@stdlib/types": ^0.0.x + "@stdlib/utils": ^0.0.x + debug: ^2.6.9 + readable-stream: ^2.1.4 + checksum: 231b4607d082ea81d9dadbeab08002ec398a29c7eb5d611d8a4183f9db6964428e2f8a9e0f8edd085ca12b5d58258576987a575e9d8f6fcabcb5a62c6b8efe88 + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/strided@npm:^0.0.x": + version: 0.0.12 + resolution: "@stdlib/strided@npm:0.0.12" + dependencies: + "@stdlib/assert": ^0.0.x + "@stdlib/math": ^0.0.x + "@stdlib/ndarray": ^0.0.x + "@stdlib/types": ^0.0.x + "@stdlib/utils": ^0.0.x + checksum: 55ccc8543596894a2e3ad734b394700c69697b499a54b3bfbcf80cddd8d91509792c23931f5cebf7c89269676ac3f44352582e4f42e2c2c2898363cc3a76403d + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/string@npm:^0.0.x": + version: 0.0.14 + resolution: "@stdlib/string@npm:0.0.14" + dependencies: + "@stdlib/assert": ^0.0.x + "@stdlib/cli": ^0.0.x + "@stdlib/constants": ^0.0.x + "@stdlib/fs": ^0.0.x + "@stdlib/math": ^0.0.x + "@stdlib/nlp": ^0.0.x + "@stdlib/process": ^0.0.x + "@stdlib/regexp": ^0.0.x + "@stdlib/streams": ^0.0.x + "@stdlib/types": ^0.0.x + "@stdlib/utils": ^0.0.x + checksum: aaaaaddf381cccc67f15dbab76f43ce81cb71a4f5595bfa06ef915b6747458deca3c25c60ff3c002c0c36482687d92a150f364069559dfea915f63a040d5f603 + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/symbol@npm:^0.0.x": + version: 0.0.12 + resolution: "@stdlib/symbol@npm:0.0.12" + dependencies: + "@stdlib/assert": ^0.0.x + "@stdlib/utils": ^0.0.x + checksum: 2263341ce0296de2063d26038902bd63bf1d7b820307402fdf38c3b248bd026f17d96bccdc3189fd9fcc9c83a778eaab797dc11805bd66203b8ac9c6934f6588 + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/time@npm:^0.0.x": + version: 0.0.14 + resolution: "@stdlib/time@npm:0.0.14" + dependencies: + "@stdlib/assert": ^0.0.x + "@stdlib/cli": ^0.0.x + "@stdlib/constants": ^0.0.x + "@stdlib/fs": ^0.0.x + "@stdlib/math": ^0.0.x + "@stdlib/string": ^0.0.x + "@stdlib/utils": ^0.0.x + checksum: 6e8a1b985a09936ab09c98d44bf1b2c79e08995c3c73401494bc1f6f708747ef136d769af4809a8af92a9ceb3d390db6c4c4e01608cd8d794a86c4b57e343eb1 + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/types@npm:^0.0.x": + version: 0.0.14 + resolution: "@stdlib/types@npm:0.0.14" + checksum: 5680a655ddb3ad730f5c7eb2363a43e089f3e6a1b85b12546cab49f7749bb3baf293bd50fbfe55486f233f4227f1020b65eb461b754b94fb4a4bc2799647ec22 + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@stdlib/utils@npm:^0.0.x": + version: 0.0.12 + resolution: "@stdlib/utils@npm:0.0.12" + dependencies: + "@stdlib/array": ^0.0.x + "@stdlib/assert": ^0.0.x + "@stdlib/blas": ^0.0.x + "@stdlib/buffer": ^0.0.x + "@stdlib/cli": ^0.0.x + "@stdlib/constants": ^0.0.x + "@stdlib/fs": ^0.0.x + "@stdlib/math": ^0.0.x + "@stdlib/os": ^0.0.x + "@stdlib/process": ^0.0.x + "@stdlib/random": ^0.0.x + "@stdlib/regexp": ^0.0.x + "@stdlib/streams": ^0.0.x + "@stdlib/string": ^0.0.x + "@stdlib/symbol": ^0.0.x + "@stdlib/time": ^0.0.x + "@stdlib/types": ^0.0.x + debug: ^2.6.9 + checksum: e0c3671c5f62c11bb3abd721f2958c41641b00a75d449bd25fbb62bcb8689cfe9c1f600c0688e7b6819ae870d6e5974d0fc7b2ec86081c45d9194b316b2a2ec2 + conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) + languageName: node + linkType: hard + +"@tootallnate/once@npm:2": + version: 2.0.0 + resolution: "@tootallnate/once@npm:2.0.0" + checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 + languageName: node + linkType: hard + +"@types/babel__core@npm:^7.1.14": + version: 7.20.1 + resolution: "@types/babel__core@npm:7.20.1" + dependencies: + "@babel/parser": ^7.20.7 + "@babel/types": ^7.20.7 + "@types/babel__generator": "*" + "@types/babel__template": "*" + "@types/babel__traverse": "*" + checksum: 9fcd9691a33074802d9057ff70b0e3ff3778f52470475b68698a0f6714fbe2ccb36c16b43dc924eb978cd8a81c1f845e5ff4699e7a47606043b539eb8c6331a8 + languageName: node + linkType: hard + +"@types/babel__generator@npm:*": + version: 7.6.4 + resolution: "@types/babel__generator@npm:7.6.4" + dependencies: + "@babel/types": ^7.0.0 + checksum: 20effbbb5f8a3a0211e95959d06ae70c097fb6191011b73b38fe86deebefad8e09ee014605e0fd3cdaedc73d158be555866810e9166e1f09e4cfd880b874dcb0 + languageName: node + linkType: hard + +"@types/babel__template@npm:*": + version: 7.4.1 + resolution: "@types/babel__template@npm:7.4.1" + dependencies: + "@babel/parser": ^7.1.0 + "@babel/types": ^7.0.0 + checksum: 649fe8b42c2876be1fd28c6ed9b276f78152d5904ec290b6c861d9ef324206e0a5c242e8305c421ac52ecf6358fa7e32ab7a692f55370484825c1df29b1596ee + languageName: node + linkType: hard + +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": + version: 7.20.1 + resolution: "@types/babel__traverse@npm:7.20.1" + dependencies: + "@babel/types": ^7.20.7 + checksum: 58341e23c649c0eba134a1682d4f20d027fad290d92e5740faa1279978f6ed476fc467ae51ce17a877e2566d805aeac64eae541168994367761ec883a4150221 + languageName: node + linkType: hard + +"@types/clone@npm:~2.1.1": + version: 2.1.2 + resolution: "@types/clone@npm:2.1.2" + checksum: f5fc4a94110b6f33e3806127503bb4e20a1a3c1adfa414654ee8f3fced1aea7ffd0f05f38fbe9bebd56e2cc0665b73f5808b6e64e0d797a311d27d4ea894471d + languageName: node + linkType: hard + +"@types/eslint-scope@npm:^3.7.3": + version: 3.7.4 + resolution: "@types/eslint-scope@npm:3.7.4" + dependencies: + "@types/eslint": "*" + "@types/estree": "*" + checksum: ea6a9363e92f301cd3888194469f9ec9d0021fe0a397a97a6dd689e7545c75de0bd2153dfb13d3ab532853a278b6572c6f678ce846980669e41029d205653460 + languageName: node + linkType: hard + +"@types/eslint@npm:*": + version: 8.44.2 + resolution: "@types/eslint@npm:8.44.2" + dependencies: + "@types/estree": "*" + "@types/json-schema": "*" + checksum: 25b3ef61bae96350026593c9914c8a61ee02fde48ab8d568a73ee45032f13c0028c62e47a5ff78715af488dfe8e8bba913f7d30f859f60c7f9e639d328e80482 + languageName: node + linkType: hard + +"@types/estree@npm:*, @types/estree@npm:^1.0.0": + version: 1.0.1 + resolution: "@types/estree@npm:1.0.1" + checksum: e9aa175eacb797216fafce4d41e8202c7a75555bc55232dee0f9903d7171f8f19f0ae7d5191bb1a88cb90e65468be508c0df850a9fb81b4433b293a5a749899d + languageName: node + linkType: hard + +"@types/geojson@npm:7946.0.4": + version: 7946.0.4 + resolution: "@types/geojson@npm:7946.0.4" + checksum: 541aea46540c918b9fe21ab73f497fe17b1eaf4d0d3baeb5f5614029b7f488c37f63843b644c024a8178dc2fb66d3d6623c25d9cf61d7b553aa19c8dc7f99047 + languageName: node + linkType: hard + +"@types/graceful-fs@npm:^4.1.3": + version: 4.1.6 + resolution: "@types/graceful-fs@npm:4.1.6" + dependencies: + "@types/node": "*" + checksum: c3070ccdc9ca0f40df747bced1c96c71a61992d6f7c767e8fd24bb6a3c2de26e8b84135ede000b7e79db530a23e7e88dcd9db60eee6395d0f4ce1dae91369dd4 + languageName: node + linkType: hard + +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": + version: 2.0.4 + resolution: "@types/istanbul-lib-coverage@npm:2.0.4" + checksum: a25d7589ee65c94d31464c16b72a9dc81dfa0bea9d3e105ae03882d616e2a0712a9c101a599ec482d297c3591e16336962878cb3eb1a0a62d5b76d277a890ce7 + languageName: node + linkType: hard + +"@types/istanbul-lib-report@npm:*": + version: 3.0.0 + resolution: "@types/istanbul-lib-report@npm:3.0.0" + dependencies: + "@types/istanbul-lib-coverage": "*" + checksum: 656398b62dc288e1b5226f8880af98087233cdb90100655c989a09f3052b5775bf98ba58a16c5ae642fb66c61aba402e07a9f2bff1d1569e3b306026c59f3f36 + languageName: node + linkType: hard + +"@types/istanbul-reports@npm:^3.0.0": + version: 3.0.1 + resolution: "@types/istanbul-reports@npm:3.0.1" + dependencies: + "@types/istanbul-lib-report": "*" + checksum: f1ad54bc68f37f60b30c7915886b92f86b847033e597f9b34f2415acdbe5ed742fa559a0a40050d74cdba3b6a63c342cac1f3a64dba5b68b66a6941f4abd7903 + languageName: node + linkType: hard + +"@types/jest@npm:^29.2.0": + version: 29.5.4 + resolution: "@types/jest@npm:29.5.4" + dependencies: + expect: ^29.0.0 + pretty-format: ^29.0.0 + checksum: 38ed5942f44336452efd0f071eab60aaa57cd8d46530348d0a3aa5a691dcbf1366c4ca8f6ee8364efb45b4413bfefae443e5d4f469246a472a03b21ac11cd4ed + languageName: node + linkType: hard + +"@types/jsdom@npm:^20.0.0": + version: 20.0.1 + resolution: "@types/jsdom@npm:20.0.1" + dependencies: + "@types/node": "*" + "@types/tough-cookie": "*" + parse5: ^7.0.0 + checksum: d55402c5256ef451f93a6e3d3881f98339fe73a5ac2030588df056d6835df8367b5a857b48d27528289057e26dcdd3f502edc00cb877c79174cb3a4c7f2198c1 + languageName: node + linkType: hard + +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.11, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": + version: 7.0.12 + resolution: "@types/json-schema@npm:7.0.12" + checksum: 00239e97234eeb5ceefb0c1875d98ade6e922bfec39dd365ec6bd360b5c2f825e612ac4f6e5f1d13601b8b30f378f15e6faa805a3a732f4a1bbe61915163d293 + languageName: node + linkType: hard + +"@types/minimist@npm:^1.2.2": + version: 1.2.2 + resolution: "@types/minimist@npm:1.2.2" + checksum: b8da83c66eb4aac0440e64674b19564d9d86c80ae273144db9681e5eeff66f238ade9515f5006ffbfa955ceff8b89ad2bd8ec577d7caee74ba101431fb07045d + languageName: node + linkType: hard + +"@types/node@npm:*": + version: 20.6.0 + resolution: "@types/node@npm:20.6.0" + checksum: 52611801af5cf151c6fac1963aa4a8a8ca2e388a9e9ed82b01b70bca762088ded5b32cc789c5564220d5d7dccba2b8dd34446a3d4fc74736805e1f2cf262e29d + languageName: node + linkType: hard + +"@types/normalize-package-data@npm:^2.4.0": + version: 2.4.1 + resolution: "@types/normalize-package-data@npm:2.4.1" + checksum: e87bccbf11f95035c89a132b52b79ce69a1e3652fe55962363063c9c0dae0fe2477ebc585e03a9652adc6f381d24ba5589cc5e51849df4ced3d3e004a7d40ed5 + languageName: node + linkType: hard + +"@types/prop-types@npm:*": + version: 15.7.5 + resolution: "@types/prop-types@npm:15.7.5" + checksum: 5b43b8b15415e1f298243165f1d44390403bb2bd42e662bca3b5b5633fdd39c938e91b7fce3a9483699db0f7a715d08cef220c121f723a634972fdf596aec980 + languageName: node + linkType: hard + +"@types/react-addons-linked-state-mixin@npm:^0.14.22": + version: 0.14.22 + resolution: "@types/react-addons-linked-state-mixin@npm:0.14.22" + dependencies: + "@types/react": "*" + checksum: f0216424eed2008845acdca7565d661ed67310cf16179da7cdc97056070552f77bb7bad6d5beb3598a46b7322dfa29e29945259d834d529c3d68c75afea9a8dc + languageName: node + linkType: hard + +"@types/react@npm:*, @types/react@npm:^18.0.26": + version: 18.2.21 + resolution: "@types/react@npm:18.2.21" + dependencies: + "@types/prop-types": "*" + "@types/scheduler": "*" + csstype: ^3.0.2 + checksum: ffed203bfe7aad772b8286f7953305c9181ac3a8f27d3f5400fbbc2a8e27ca8e5bbff818ee014f39ca0d19d2b3bb154e5bdbec7e232c6f80b59069375aa78349 + languageName: node + linkType: hard + +"@types/scheduler@npm:*": + version: 0.16.3 + resolution: "@types/scheduler@npm:0.16.3" + checksum: 2b0aec39c24268e3ce938c5db2f2e77f5c3dd280e05c262d9c2fe7d890929e4632a6b8e94334017b66b45e4f92a5aa42ba3356640c2a1175fa37bef2f5200767 + languageName: node + linkType: hard + +"@types/semver@npm:^7.5.0": + version: 7.5.1 + resolution: "@types/semver@npm:7.5.1" + checksum: 2fffe938c7ac168711f245a16e1856a3578d77161ca17e29a05c3e02c7be3e9c5beefa29a3350f6c1bd982fb70aa28cc52e4845eb7d36246bcdc0377170d584d + languageName: node + linkType: hard + +"@types/source-list-map@npm:*": + version: 0.1.2 + resolution: "@types/source-list-map@npm:0.1.2" + checksum: fda8f37537aca9d3ed860d559289ab1dddb6897e642e6f53e909bbd18a7ac3129a8faa2a7d093847c91346cf09c86ef36e350c715406fba1f2271759b449adf6 + languageName: node + linkType: hard + +"@types/stack-utils@npm:^2.0.0": + version: 2.0.1 + resolution: "@types/stack-utils@npm:2.0.1" + checksum: 205fdbe3326b7046d7eaf5e494d8084f2659086a266f3f9cf00bccc549c8e36e407f88168ad4383c8b07099957ad669f75f2532ed4bc70be2b037330f7bae019 + languageName: node + linkType: hard + +"@types/tough-cookie@npm:*": + version: 4.0.3 + resolution: "@types/tough-cookie@npm:4.0.3" + checksum: f201be1bbca2f2d3572032513cdb9825845114d2604a7f4091af848eeee3228a573cdc5e8082b04468a2848bb1d058f1adbb97db822e22c975ebd6fcd851a453 + languageName: node + linkType: hard + +"@types/webpack-sources@npm:^0.1.5": + version: 0.1.9 + resolution: "@types/webpack-sources@npm:0.1.9" + dependencies: + "@types/node": "*" + "@types/source-list-map": "*" + source-map: ^0.6.1 + checksum: bc09c584c7047e8aed29801a3981787dee3898e9e7a99891a362df114fcac3879eea5a00932314866a01b25220391839be09fe1487b16d4970ff4a7afd5b9725 + languageName: node + linkType: hard + +"@types/yargs-parser@npm:*": + version: 21.0.0 + resolution: "@types/yargs-parser@npm:21.0.0" + checksum: b2f4c8d12ac18a567440379909127cf2cec393daffb73f246d0a25df36ea983b93b7e9e824251f959e9f928cbc7c1aab6728d0a0ff15d6145f66cec2be67d9a2 + languageName: node + linkType: hard + +"@types/yargs@npm:^17.0.8": + version: 17.0.24 + resolution: "@types/yargs@npm:17.0.24" + dependencies: + "@types/yargs-parser": "*" + checksum: 5f3ac4dc4f6e211c1627340160fbe2fd247ceba002190da6cf9155af1798450501d628c9165a183f30a224fc68fa5e700490d740ff4c73e2cdef95bc4e8ba7bf + languageName: node + linkType: hard + +"@typescript-eslint/eslint-plugin@npm:^6.1.0": + version: 6.7.0 + resolution: "@typescript-eslint/eslint-plugin@npm:6.7.0" + dependencies: + "@eslint-community/regexpp": ^4.5.1 + "@typescript-eslint/scope-manager": 6.7.0 + "@typescript-eslint/type-utils": 6.7.0 + "@typescript-eslint/utils": 6.7.0 + "@typescript-eslint/visitor-keys": 6.7.0 + debug: ^4.3.4 + graphemer: ^1.4.0 + ignore: ^5.2.4 + natural-compare: ^1.4.0 + semver: ^7.5.4 + ts-api-utils: ^1.0.1 + peerDependencies: + "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 48393749c5c1f67acf71795551c6065586198530006189c48636e32caea4d1285624c16c047164f9d29055e26c4f90fca964c5a2b5c0e9b6d9ed87acd74ca0d6 + languageName: node + linkType: hard + +"@typescript-eslint/parser@npm:^6.1.0": + version: 6.7.0 + resolution: "@typescript-eslint/parser@npm:6.7.0" + dependencies: + "@typescript-eslint/scope-manager": 6.7.0 + "@typescript-eslint/types": 6.7.0 + "@typescript-eslint/typescript-estree": 6.7.0 + "@typescript-eslint/visitor-keys": 6.7.0 + debug: ^4.3.4 + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 21d52a49abf78a3b037261c01f1f4d2d550919ddc906ebb058db3410a706457ac3a7d082716328ce98a6741d4e77c945b71ff386d9047c5a2e5beef23e14ab45 + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:6.7.0": + version: 6.7.0 + resolution: "@typescript-eslint/scope-manager@npm:6.7.0" + dependencies: + "@typescript-eslint/types": 6.7.0 + "@typescript-eslint/visitor-keys": 6.7.0 + checksum: f6ea33c647783d53d98938bd5d3fc94c9a5ebc83bd64cf379215863921dd1c57e66c33af7948d6ac1884623e1917a3b42565e6d02e1fd7adfbce4b3424a2382e + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:6.7.0": + version: 6.7.0 + resolution: "@typescript-eslint/type-utils@npm:6.7.0" + dependencies: + "@typescript-eslint/typescript-estree": 6.7.0 + "@typescript-eslint/utils": 6.7.0 + debug: ^4.3.4 + ts-api-utils: ^1.0.1 + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 15ae33a6981721f83b2ac612a7597a4fcb2d9d9bfedce54707e5228bec2774fd99ba54ffce89924ae36b61488c7b6c0c2165a6d361be5cd4cefebefad8b02a01 + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:6.7.0": + version: 6.7.0 + resolution: "@typescript-eslint/types@npm:6.7.0" + checksum: fb76031432a009813d559b1cc63091eb5434279012cdb98de62fcd556910663c6a1b506e0a77c4f86e223a5e2c00e76a2d1d2170802c75168008d19a52a51fca + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:6.7.0": + version: 6.7.0 + resolution: "@typescript-eslint/typescript-estree@npm:6.7.0" + dependencies: + "@typescript-eslint/types": 6.7.0 + "@typescript-eslint/visitor-keys": 6.7.0 + debug: ^4.3.4 + globby: ^11.1.0 + is-glob: ^4.0.3 + semver: ^7.5.4 + ts-api-utils: ^1.0.1 + peerDependenciesMeta: + typescript: + optional: true + checksum: 9bd57910085f0dd97d7083e0468c34e0753d20d36d3ffaa4ba111f13cc4986743374f5aed928e645ea982cf2ed9a8141598bee41393cad0abee001f0842ad117 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:6.7.0": + version: 6.7.0 + resolution: "@typescript-eslint/utils@npm:6.7.0" + dependencies: + "@eslint-community/eslint-utils": ^4.4.0 + "@types/json-schema": ^7.0.12 + "@types/semver": ^7.5.0 + "@typescript-eslint/scope-manager": 6.7.0 + "@typescript-eslint/types": 6.7.0 + "@typescript-eslint/typescript-estree": 6.7.0 + semver: ^7.5.4 + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + checksum: b2a2857ec856d1752e77c2a274a12513372311c300f9ec57ed7bf7411eb9ea34b85a8e7810a5c48fff0e3966b71d63d77e38c5c7bca1d5c004bede5638619a00 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:6.7.0": + version: 6.7.0 + resolution: "@typescript-eslint/visitor-keys@npm:6.7.0" + dependencies: + "@typescript-eslint/types": 6.7.0 + eslint-visitor-keys: ^3.4.1 + checksum: cd85722d26ccfa23a76e5cb5aa0229f89eb3c4f1ed87d71a0f902db15f420f3f3e94cbd16dc711039f611ac60b1e7d0fee9ee78c48c88310a5f1926a2bc8778e + languageName: node + linkType: hard + +"@vscode/debugprotocol@npm:^1.51.0": + version: 1.63.0 + resolution: "@vscode/debugprotocol@npm:1.63.0" + checksum: 084bd8c246da30e3c2099110efbf8beb9f1471ecb5471bb30e834ee041ef375df3076395b13096520ec5f6e531a4a8a5621f26e37da9c8648054340e9b00a273 + languageName: node + linkType: hard + +"@webassemblyjs/ast@npm:1.11.6, @webassemblyjs/ast@npm:^1.11.5": + version: 1.11.6 + resolution: "@webassemblyjs/ast@npm:1.11.6" + dependencies: + "@webassemblyjs/helper-numbers": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + checksum: 38ef1b526ca47c210f30975b06df2faf1a8170b1636ce239fc5738fc231ce28389dd61ecedd1bacfc03cbe95b16d1af848c805652080cb60982836eb4ed2c6cf + languageName: node + linkType: hard + +"@webassemblyjs/floating-point-hex-parser@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" + checksum: 29b08758841fd8b299c7152eda36b9eb4921e9c584eb4594437b5cd90ed6b920523606eae7316175f89c20628da14326801090167cc7fbffc77af448ac84b7e2 + languageName: node + linkType: hard + +"@webassemblyjs/helper-api-error@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" + checksum: e8563df85161096343008f9161adb138a6e8f3c2cc338d6a36011aa55eabb32f2fd138ffe63bc278d009ada001cc41d263dadd1c0be01be6c2ed99076103689f + languageName: node + linkType: hard + +"@webassemblyjs/helper-buffer@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-buffer@npm:1.11.6" + checksum: b14d0573bf680d22b2522e8a341ec451fddd645d1f9c6bd9012ccb7e587a2973b86ab7b89fe91e1c79939ba96095f503af04369a3b356c8023c13a5893221644 + languageName: node + linkType: hard + +"@webassemblyjs/helper-numbers@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" + dependencies: + "@webassemblyjs/floating-point-hex-parser": 1.11.6 + "@webassemblyjs/helper-api-error": 1.11.6 + "@xtuc/long": 4.2.2 + checksum: f4b562fa219f84368528339e0f8d273ad44e047a07641ffcaaec6f93e5b76fd86490a009aa91a294584e1436d74b0a01fa9fde45e333a4c657b58168b04da424 + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" + checksum: 3535ef4f1fba38de3475e383b3980f4bbf3de72bbb631c2b6584c7df45be4eccd62c6ff48b5edd3f1bcff275cfd605a37679ec199fc91fd0a7705d7f1e3972dc + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-section@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.6" + dependencies: + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-buffer": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/wasm-gen": 1.11.6 + checksum: b2cf751bf4552b5b9999d27bbb7692d0aca75260140195cb58ea6374d7b9c2dc69b61e10b211a0e773f66209c3ddd612137ed66097e3684d7816f854997682e9 + languageName: node + linkType: hard + +"@webassemblyjs/ieee754@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/ieee754@npm:1.11.6" + dependencies: + "@xtuc/ieee754": ^1.2.0 + checksum: 13574b8e41f6ca39b700e292d7edf102577db5650fe8add7066a320aa4b7a7c09a5056feccac7a74eb68c10dea9546d4461412af351f13f6b24b5f32379b49de + languageName: node + linkType: hard + +"@webassemblyjs/leb128@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/leb128@npm:1.11.6" + dependencies: + "@xtuc/long": 4.2.2 + checksum: 7ea942dc9777d4b18a5ebfa3a937b30ae9e1d2ce1fee637583ed7f376334dd1d4274f813d2e250056cca803e0952def4b954913f1a3c9068bcd4ab4ee5143bf0 + languageName: node + linkType: hard + +"@webassemblyjs/utf8@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/utf8@npm:1.11.6" + checksum: 807fe5b5ce10c390cfdd93e0fb92abda8aebabb5199980681e7c3743ee3306a75729bcd1e56a3903980e96c885ee53ef901fcbaac8efdfa480f9c0dae1d08713 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-edit@npm:^1.11.5": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-edit@npm:1.11.6" + dependencies: + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-buffer": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/helper-wasm-section": 1.11.6 + "@webassemblyjs/wasm-gen": 1.11.6 + "@webassemblyjs/wasm-opt": 1.11.6 + "@webassemblyjs/wasm-parser": 1.11.6 + "@webassemblyjs/wast-printer": 1.11.6 + checksum: 29ce75870496d6fad864d815ebb072395a8a3a04dc9c3f4e1ffdc63fc5fa58b1f34304a1117296d8240054cfdbc38aca88e71fb51483cf29ffab0a61ef27b481 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-gen@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-gen@npm:1.11.6" + dependencies: + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/ieee754": 1.11.6 + "@webassemblyjs/leb128": 1.11.6 + "@webassemblyjs/utf8": 1.11.6 + checksum: a645a2eecbea24833c3260a249704a7f554ef4a94c6000984728e94bb2bc9140a68dfd6fd21d5e0bbb09f6dfc98e083a45760a83ae0417b41a0196ff6d45a23a + languageName: node + linkType: hard + +"@webassemblyjs/wasm-opt@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-opt@npm:1.11.6" + dependencies: + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-buffer": 1.11.6 + "@webassemblyjs/wasm-gen": 1.11.6 + "@webassemblyjs/wasm-parser": 1.11.6 + checksum: b4557f195487f8e97336ddf79f7bef40d788239169aac707f6eaa2fa5fe243557c2d74e550a8e57f2788e70c7ae4e7d32f7be16101afe183d597b747a3bdd528 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-parser@npm:1.11.6, @webassemblyjs/wasm-parser@npm:^1.11.5": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-parser@npm:1.11.6" + dependencies: + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-api-error": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/ieee754": 1.11.6 + "@webassemblyjs/leb128": 1.11.6 + "@webassemblyjs/utf8": 1.11.6 + checksum: 8200a8d77c15621724a23fdabe58d5571415cda98a7058f542e670ea965dd75499f5e34a48675184947c66f3df23adf55df060312e6d72d57908e3f049620d8a + languageName: node + linkType: hard + +"@webassemblyjs/wast-printer@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/wast-printer@npm:1.11.6" + dependencies: + "@webassemblyjs/ast": 1.11.6 + "@xtuc/long": 4.2.2 + checksum: d2fa6a4c427325ec81463e9c809aa6572af6d47f619f3091bf4c4a6fc34f1da3df7caddaac50b8e7a457f8784c62cd58c6311b6cb69b0162ccd8d4c072f79cf8 + languageName: node + linkType: hard + +"@webpack-cli/configtest@npm:^2.1.1": + version: 2.1.1 + resolution: "@webpack-cli/configtest@npm:2.1.1" + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + checksum: 9f9f9145c2d05471fc83d426db1df85cf49f329836b0c4b9f46b6948bed4b013464c00622b136d2a0a26993ce2306976682592245b08ee717500b1db45009a72 + languageName: node + linkType: hard + +"@webpack-cli/info@npm:^2.0.2": + version: 2.0.2 + resolution: "@webpack-cli/info@npm:2.0.2" + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + checksum: 8f9a178afca5c82e113aed1efa552d64ee5ae4fdff63fe747c096a981ec74f18a5d07bd6e89bbe6715c3e57d96eea024a410e58977169489fe1df044c10dd94e + languageName: node + linkType: hard + +"@webpack-cli/serve@npm:^2.0.5": + version: 2.0.5 + resolution: "@webpack-cli/serve@npm:2.0.5" + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + peerDependenciesMeta: + webpack-dev-server: + optional: true + checksum: 75f0e54681796d567a71ac3e2781d2901a8d8cf1cdfc82f261034dddac59a8343e8c3bc5e32b4bb9d6766759ba49fb29a5cd86ef1701d79c506fe886bb63ac75 + languageName: node + linkType: hard + +"@xtuc/ieee754@npm:^1.2.0": + version: 1.2.0 + resolution: "@xtuc/ieee754@npm:1.2.0" + checksum: ac56d4ca6e17790f1b1677f978c0c6808b1900a5b138885d3da21732f62e30e8f0d9120fcf8f6edfff5100ca902b46f8dd7c1e3f903728634523981e80e2885a + languageName: node + linkType: hard + +"@xtuc/long@npm:4.2.2": + version: 4.2.2 + resolution: "@xtuc/long@npm:4.2.2" + checksum: 8ed0d477ce3bc9c6fe2bf6a6a2cc316bb9c4127c5a7827bae947fa8ec34c7092395c5a283cc300c05b5fa01cbbfa1f938f410a7bf75db7c7846fea41949989ec + languageName: node + linkType: hard + +"abab@npm:^2.0.3, abab@npm:^2.0.5, abab@npm:^2.0.6": + version: 2.0.6 + resolution: "abab@npm:2.0.6" + checksum: 6ffc1af4ff315066c62600123990d87551ceb0aafa01e6539da77b0f5987ac7019466780bf480f1787576d4385e3690c81ccc37cfda12819bf510b8ab47e5a3e + languageName: node + linkType: hard + +"abbrev@npm:^1.0.0": + version: 1.1.1 + resolution: "abbrev@npm:1.1.1" + checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 + languageName: node + linkType: hard + +"acorn-globals@npm:^7.0.0": + version: 7.0.1 + resolution: "acorn-globals@npm:7.0.1" + dependencies: + acorn: ^8.1.0 + acorn-walk: ^8.0.2 + checksum: 2a2998a547af6d0db5f0cdb90acaa7c3cbca6709010e02121fb8b8617c0fbd8bab0b869579903fde358ac78454356a14fadcc1a672ecb97b04b1c2ccba955ce8 + languageName: node + linkType: hard + +"acorn-import-assertions@npm:^1.9.0": + version: 1.9.0 + resolution: "acorn-import-assertions@npm:1.9.0" + peerDependencies: + acorn: ^8 + checksum: 944fb2659d0845c467066bdcda2e20c05abe3aaf11972116df457ce2627628a81764d800dd55031ba19de513ee0d43bb771bc679cc0eda66dc8b4fade143bc0c + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: c3d3b2a89c9a056b205b69530a37b972b404ee46ec8e5b341666f9513d3163e2a4f214a71f4dfc7370f5a9c07472d2fd1c11c91c3f03d093e37637d95da98950 + languageName: node + linkType: hard + +"acorn-walk@npm:^8.0.2": + version: 8.2.0 + resolution: "acorn-walk@npm:8.2.0" + checksum: 1715e76c01dd7b2d4ca472f9c58968516a4899378a63ad5b6c2d668bba8da21a71976c14ec5f5b75f887b6317c4ae0b897ab141c831d741dc76024d8745f1ad1 + languageName: node + linkType: hard + +"acorn@npm:^8.1.0, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": + version: 8.10.0 + resolution: "acorn@npm:8.10.0" + bin: + acorn: bin/acorn + checksum: 538ba38af0cc9e5ef983aee196c4b8b4d87c0c94532334fa7e065b2c8a1f85863467bb774231aae91613fcda5e68740c15d97b1967ae3394d20faddddd8af61d + languageName: node + linkType: hard + +"agent-base@npm:6, agent-base@npm:^6.0.2": + version: 6.0.2 + resolution: "agent-base@npm:6.0.2" + dependencies: + debug: 4 + checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d + languageName: node + linkType: hard + +"agentkeepalive@npm:^4.2.1": + version: 4.5.0 + resolution: "agentkeepalive@npm:4.5.0" + dependencies: + humanize-ms: ^1.2.1 + checksum: 13278cd5b125e51eddd5079f04d6fe0914ac1b8b91c1f3db2c1822f99ac1a7457869068997784342fe455d59daaff22e14fb7b8c3da4e741896e7e31faf92481 + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: ^2.0.0 + indent-string: ^4.0.0 + checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 + languageName: node + linkType: hard + +"ajv-formats@npm:^2.1.1": + version: 2.1.1 + resolution: "ajv-formats@npm:2.1.1" + dependencies: + ajv: ^8.0.0 + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + checksum: 4a287d937f1ebaad4683249a4c40c0fa3beed30d9ddc0adba04859026a622da0d317851316ea64b3680dc60f5c3c708105ddd5d5db8fe595d9d0207fd19f90b7 + languageName: node + linkType: hard + +"ajv-keywords@npm:^3.5.2": + version: 3.5.2 + resolution: "ajv-keywords@npm:3.5.2" + peerDependencies: + ajv: ^6.9.1 + checksum: 7dc5e5931677a680589050f79dcbe1fefbb8fea38a955af03724229139175b433c63c68f7ae5f86cf8f65d55eb7c25f75a046723e2e58296707617ca690feae9 + languageName: node + linkType: hard + +"ajv-keywords@npm:^5.1.0": + version: 5.1.0 + resolution: "ajv-keywords@npm:5.1.0" + dependencies: + fast-deep-equal: ^3.1.3 + peerDependencies: + ajv: ^8.8.2 + checksum: c35193940b853119242c6757787f09ecf89a2c19bcd36d03ed1a615e710d19d450cb448bfda407b939aba54b002368c8bff30529cc50a0536a8e10bcce300421 + languageName: node + linkType: hard + +"ajv@npm:^6.12.4, ajv@npm:^6.12.5": + version: 6.12.6 + resolution: "ajv@npm:6.12.6" + dependencies: + fast-deep-equal: ^3.1.1 + fast-json-stable-stringify: ^2.0.0 + json-schema-traverse: ^0.4.1 + uri-js: ^4.2.2 + checksum: 874972efe5c4202ab0a68379481fbd3d1b5d0a7bd6d3cc21d40d3536ebff3352a2a1fabb632d4fd2cc7fe4cbdcd5ed6782084c9bbf7f32a1536d18f9da5007d4 + languageName: node + linkType: hard + +"ajv@npm:^8.0.0, ajv@npm:^8.0.1, ajv@npm:^8.12.0, ajv@npm:^8.9.0": + version: 8.12.0 + resolution: "ajv@npm:8.12.0" + dependencies: + fast-deep-equal: ^3.1.1 + json-schema-traverse: ^1.0.0 + require-from-string: ^2.0.2 + uri-js: ^4.2.2 + checksum: 4dc13714e316e67537c8b31bc063f99a1d9d9a497eb4bbd55191ac0dcd5e4985bbb71570352ad6f1e76684fb6d790928f96ba3b2d4fd6e10024be9612fe3f001 + languageName: node + linkType: hard + +"ansi-escapes@npm:^4.2.1": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: ^0.21.3 + checksum: 93111c42189c0a6bed9cdb4d7f2829548e943827ee8479c74d6e0b22ee127b2a21d3f8b5ca57723b8ef78ce011fbfc2784350eb2bde3ccfccf2f575fa8489815 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.0.1 + resolution: "ansi-regex@npm:6.0.1" + checksum: 1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e169 + languageName: node + linkType: hard + +"ansi-styles@npm:^3.2.1": + version: 3.2.1 + resolution: "ansi-styles@npm:3.2.1" + dependencies: + color-convert: ^1.9.0 + checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: ^2.0.1 + checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4 + languageName: node + linkType: hard + +"ansi-styles@npm:^5.0.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469 + languageName: node + linkType: hard + +"ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 + languageName: node + linkType: hard + +"anymatch@npm:^3.0.3": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: ^3.0.0 + picomatch: ^2.0.4 + checksum: 3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 + languageName: node + linkType: hard + +"aproba@npm:^1.0.3 || ^2.0.0": + version: 2.0.0 + resolution: "aproba@npm:2.0.0" + checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 + languageName: node + linkType: hard + +"are-we-there-yet@npm:^3.0.0": + version: 3.0.1 + resolution: "are-we-there-yet@npm:3.0.1" + dependencies: + delegates: ^1.0.0 + readable-stream: ^3.6.0 + checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 + languageName: node + linkType: hard + +"argparse@npm:^1.0.7": + version: 1.0.10 + resolution: "argparse@npm:1.0.10" + dependencies: + sprintf-js: ~1.0.2 + checksum: 7ca6e45583a28de7258e39e13d81e925cfa25d7d4aacbf806a382d3c02fcb13403a07fb8aeef949f10a7cfe4a62da0e2e807b348a5980554cc28ee573ef95945 + languageName: node + linkType: hard + +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 83644b56493e89a254bae05702abf3a1101b4fa4d0ca31df1c9985275a5a5bd47b3c27b7fa0b71098d41114d8ca000e6ed90cad764b306f8a503665e4d517ced + languageName: node + linkType: hard + +"array-buffer-byte-length@npm:^1.0.0": + version: 1.0.0 + resolution: "array-buffer-byte-length@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + is-array-buffer: ^3.0.1 + checksum: 044e101ce150f4804ad19c51d6c4d4cfa505c5b2577bd179256e4aa3f3f6a0a5e9874c78cd428ee566ac574c8a04d7ce21af9fe52e844abfdccb82b33035a7c3 + languageName: node + linkType: hard + +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 5bee12395cba82da674931df6d0fea23c4aa4660cb3b338ced9f828782a65caa232573e6bf3968f23e0c5eb301764a382cef2f128b170a9dc59de0e36c39f98d + languageName: node + linkType: hard + +"arraybuffer.prototype.slice@npm:^1.0.1": + version: 1.0.2 + resolution: "arraybuffer.prototype.slice@npm:1.0.2" + dependencies: + array-buffer-byte-length: ^1.0.0 + call-bind: ^1.0.2 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + get-intrinsic: ^1.2.1 + is-array-buffer: ^3.0.2 + is-shared-array-buffer: ^1.0.2 + checksum: c200faf437786f5b2c80d4564ff5481c886a16dee642ef02abdc7306c7edd523d1f01d1dd12b769c7eb42ac9bc53874510db19a92a2c035c0f6696172aafa5d3 + languageName: node + linkType: hard + +"arrify@npm:^1.0.1": + version: 1.0.1 + resolution: "arrify@npm:1.0.1" + checksum: 745075dd4a4624ff0225c331dacb99be501a515d39bcb7c84d24660314a6ec28e68131b137e6f7e16318170842ce97538cd298fc4cd6b2cc798e0b957f2747e7 + languageName: node + linkType: hard + +"astral-regex@npm:^2.0.0": + version: 2.0.0 + resolution: "astral-regex@npm:2.0.0" + checksum: 876231688c66400473ba505731df37ea436e574dd524520294cc3bbc54ea40334865e01fa0d074d74d036ee874ee7e62f486ea38bc421ee8e6a871c06f011766 + languageName: node + linkType: hard + +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: 7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be + languageName: node + linkType: hard + +"available-typed-arrays@npm:^1.0.5": + version: 1.0.5 + resolution: "available-typed-arrays@npm:1.0.5" + checksum: 20eb47b3cefd7db027b9bbb993c658abd36d4edd3fe1060e83699a03ee275b0c9b216cc076ff3f2db29073225fb70e7613987af14269ac1fe2a19803ccc97f1a + languageName: node + linkType: hard + +"babel-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "babel-jest@npm:29.7.0" + dependencies: + "@jest/transform": ^29.7.0 + "@types/babel__core": ^7.1.14 + babel-plugin-istanbul: ^6.1.1 + babel-preset-jest: ^29.6.3 + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + slash: ^3.0.0 + peerDependencies: + "@babel/core": ^7.8.0 + checksum: ee6f8e0495afee07cac5e4ee167be705c711a8cc8a737e05a587a131fdae2b3c8f9aa55dfd4d9c03009ac2d27f2de63d8ba96d3e8460da4d00e8af19ef9a83f7 + languageName: node + linkType: hard + +"babel-plugin-istanbul@npm:^6.1.1": + version: 6.1.1 + resolution: "babel-plugin-istanbul@npm:6.1.1" + dependencies: + "@babel/helper-plugin-utils": ^7.0.0 + "@istanbuljs/load-nyc-config": ^1.0.0 + "@istanbuljs/schema": ^0.1.2 + istanbul-lib-instrument: ^5.0.4 + test-exclude: ^6.0.0 + checksum: cb4fd95738219f232f0aece1116628cccff16db891713c4ccb501cddbbf9272951a5df81f2f2658dfdf4b3e7b236a9d5cbcf04d5d8c07dd5077297339598061a + languageName: node + linkType: hard + +"babel-plugin-jest-hoist@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-plugin-jest-hoist@npm:29.6.3" + dependencies: + "@babel/template": ^7.3.3 + "@babel/types": ^7.3.3 + "@types/babel__core": ^7.1.14 + "@types/babel__traverse": ^7.0.6 + checksum: 51250f22815a7318f17214a9d44650ba89551e6d4f47a2dc259128428324b52f5a73979d010cefd921fd5a720d8c1d55ad74ff601cd94c7bd44d5f6292fde2d1 + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs2@npm:^0.4.5": + version: 0.4.5 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.5" + dependencies: + "@babel/compat-data": ^7.22.6 + "@babel/helper-define-polyfill-provider": ^0.4.2 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 33a8e06aa54e2858d211c743d179f0487b03222f9ca1bfd7c4865bca243fca942a3358cb75f6bb894ed476cbddede834811fbd6903ff589f055821146f053e1a + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs3@npm:^0.8.3": + version: 0.8.3 + resolution: "babel-plugin-polyfill-corejs3@npm:0.8.3" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.4.2 + core-js-compat: ^3.31.0 + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: dcbb30e551702a82cfd4d2c375da2c317658e55f95e9edcda93b9bbfdcc8fb6e5344efcb144e04d3406859e7682afce7974c60ededd9f12072a48a83dd22a0da + languageName: node + linkType: hard + +"babel-plugin-polyfill-regenerator@npm:^0.5.2": + version: 0.5.2 + resolution: "babel-plugin-polyfill-regenerator@npm:0.5.2" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.4.2 + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: d962200f604016a9a09bc9b4aaf60a3db7af876bb65bcefaeac04d44ac9d9ec4037cf24ce117760cc141d7046b6394c7eb0320ba9665cb4a2ee64df2be187c93 + languageName: node + linkType: hard + +"babel-preset-current-node-syntax@npm:^1.0.0": + version: 1.0.1 + resolution: "babel-preset-current-node-syntax@npm:1.0.1" + dependencies: + "@babel/plugin-syntax-async-generators": ^7.8.4 + "@babel/plugin-syntax-bigint": ^7.8.3 + "@babel/plugin-syntax-class-properties": ^7.8.3 + "@babel/plugin-syntax-import-meta": ^7.8.3 + "@babel/plugin-syntax-json-strings": ^7.8.3 + "@babel/plugin-syntax-logical-assignment-operators": ^7.8.3 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + "@babel/plugin-syntax-numeric-separator": ^7.8.3 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + "@babel/plugin-syntax-top-level-await": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: d118c2742498c5492c095bc8541f4076b253e705b5f1ad9a2e7d302d81a84866f0070346662355c8e25fc02caa28dc2da8d69bcd67794a0d60c4d6fab6913cc8 + languageName: node + linkType: hard + +"babel-preset-jest@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-preset-jest@npm:29.6.3" + dependencies: + babel-plugin-jest-hoist: ^29.6.3 + babel-preset-current-node-syntax: ^1.0.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: aa4ff2a8a728d9d698ed521e3461a109a1e66202b13d3494e41eea30729a5e7cc03b3a2d56c594423a135429c37bf63a9fa8b0b9ce275298be3095a88c69f6fb + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 + languageName: node + linkType: hard + +"balanced-match@npm:^2.0.0": + version: 2.0.0 + resolution: "balanced-match@npm:2.0.0" + checksum: 9a5caad6a292c5df164cc6d0c38e0eedf9a1413f42e5fece733640949d74d0052cfa9587c1a1681f772147fb79be495121325a649526957fd75b3a216d1fbc68 + languageName: node + linkType: hard + +"big-integer@npm:^1.6.44": + version: 1.6.51 + resolution: "big-integer@npm:1.6.51" + checksum: 3d444173d1b2e20747e2c175568bedeebd8315b0637ea95d75fd27830d3b8e8ba36c6af40374f36bdaea7b5de376dcada1b07587cb2a79a928fccdb6e6e3c518 + languageName: node + linkType: hard + +"big.js@npm:^5.2.2": + version: 5.2.2 + resolution: "big.js@npm:5.2.2" + checksum: b89b6e8419b097a8fb4ed2399a1931a68c612bce3cfd5ca8c214b2d017531191070f990598de2fc6f3f993d91c0f08aa82697717f6b3b8732c9731866d233c9e + languageName: node + linkType: hard + +"bplist-parser@npm:^0.2.0": + version: 0.2.0 + resolution: "bplist-parser@npm:0.2.0" + dependencies: + big-integer: ^1.6.44 + checksum: d5339dd16afc51de6c88f88f58a45b72ed6a06aa31f5557d09877575f220b7c1d3fbe375da0b62e6a10d4b8ed80523567e351f24014f5bc886ad523758142cdd + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: ^1.0.0 + concat-map: 0.0.1 + checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: ^1.0.0 + checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 + languageName: node + linkType: hard + +"braces@npm:^3.0.2": + version: 3.0.2 + resolution: "braces@npm:3.0.2" + dependencies: + fill-range: ^7.0.1 + checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 + languageName: node + linkType: hard + +"browserslist@npm:^4.14.5, browserslist@npm:^4.21.10, browserslist@npm:^4.21.9": + version: 4.21.10 + resolution: "browserslist@npm:4.21.10" + dependencies: + caniuse-lite: ^1.0.30001517 + electron-to-chromium: ^1.4.477 + node-releases: ^2.0.13 + update-browserslist-db: ^1.0.11 + bin: + browserslist: cli.js + checksum: 1e27c0f111a35d1dd0e8fc2c61781b0daefabc2c9471b0b10537ce54843014bceb2a1ce4571af1a82b2bf1e6e6e05d38865916689a158f03bc2c7a4ec2577db8 + languageName: node + linkType: hard + +"bs-logger@npm:0.x": + version: 0.2.6 + resolution: "bs-logger@npm:0.2.6" + dependencies: + fast-json-stable-stringify: 2.x + checksum: d34bdaf68c64bd099ab97c3ea608c9ae7d3f5faa1178b3f3f345acd94e852e608b2d4f9103fb2e503f5e69780e98293df41691b84be909b41cf5045374d54606 + languageName: node + linkType: hard + +"bser@npm:2.1.1": + version: 2.1.1 + resolution: "bser@npm:2.1.1" + dependencies: + node-int64: ^0.4.0 + checksum: 9ba4dc58ce86300c862bffc3ae91f00b2a03b01ee07f3564beeeaf82aa243b8b03ba53f123b0b842c190d4399b94697970c8e7cf7b1ea44b61aa28c3526a4449 + languageName: node + linkType: hard + +"buffer-from@npm:^1.0.0": + version: 1.1.2 + resolution: "buffer-from@npm:1.1.2" + checksum: 0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb + languageName: node + linkType: hard + +"bundle-name@npm:^3.0.0": + version: 3.0.0 + resolution: "bundle-name@npm:3.0.0" + dependencies: + run-applescript: ^5.0.0 + checksum: edf2b1fbe6096ed32e7566947ace2ea937ee427391744d7510a2880c4b9a5b3543d3f6c551236a29e5c87d3195f8e2912516290e638c15bcbede7b37cc375615 + languageName: node + linkType: hard + +"cacache@npm:^17.0.0": + version: 17.1.4 + resolution: "cacache@npm:17.1.4" + dependencies: + "@npmcli/fs": ^3.1.0 + fs-minipass: ^3.0.0 + glob: ^10.2.2 + lru-cache: ^7.7.1 + minipass: ^7.0.3 + minipass-collect: ^1.0.2 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.4 + p-map: ^4.0.0 + ssri: ^10.0.0 + tar: ^6.1.11 + unique-filename: ^3.0.0 + checksum: b7751df756656954a51201335addced8f63fc53266fa56392c9f5ae83c8d27debffb4458ac2d168a744a4517ec3f2163af05c20097f93d17bdc2dc8a385e14a6 + languageName: node + linkType: hard + +"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": + version: 1.0.2 + resolution: "call-bind@npm:1.0.2" + dependencies: + function-bind: ^1.1.1 + get-intrinsic: ^1.0.2 + checksum: f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 + languageName: node + linkType: hard + +"callsites@npm:^3.0.0": + version: 3.1.0 + resolution: "callsites@npm:3.1.0" + checksum: 072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 + languageName: node + linkType: hard + +"camelcase-keys@npm:^7.0.0": + version: 7.0.2 + resolution: "camelcase-keys@npm:7.0.2" + dependencies: + camelcase: ^6.3.0 + map-obj: ^4.1.0 + quick-lru: ^5.1.1 + type-fest: ^1.2.1 + checksum: b5821cc48dd00e8398a30c5d6547f06837ab44de123f1b3a603d0a03399722b2fc67a485a7e47106eb02ef543c3b50c5ebaabc1242cde4b63a267c3258d2365b + languageName: node + linkType: hard + +"camelcase@npm:^5.3.1": + version: 5.3.1 + resolution: "camelcase@npm:5.3.1" + checksum: e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b + languageName: node + linkType: hard + +"camelcase@npm:^6.2.0, camelcase@npm:^6.3.0": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.30001517": + version: 1.0.30001533 + resolution: "caniuse-lite@npm:1.0.30001533" + checksum: 1ffb2d69f817ee5f13351cb01c26a98ac61515809a6ce355305df3fbc6de6391a58466c1dcad1f322231b1ddc59bdda9bc52b9480cac100c3ff2f5782e859eb1 + languageName: node + linkType: hard + +"chalk@npm:^2.3.0, chalk@npm:^2.4.1, chalk@npm:^2.4.2": + version: 2.4.2 + resolution: "chalk@npm:2.4.2" + dependencies: + ansi-styles: ^3.2.1 + escape-string-regexp: ^1.0.5 + supports-color: ^5.3.0 + checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 + languageName: node + linkType: hard + +"chalk@npm:^4.0.0": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: ^4.1.0 + supports-color: ^7.1.0 + checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc + languageName: node + linkType: hard + +"char-regex@npm:^1.0.2": + version: 1.0.2 + resolution: "char-regex@npm:1.0.2" + checksum: b563e4b6039b15213114626621e7a3d12f31008bdce20f9c741d69987f62aeaace7ec30f6018890ad77b2e9b4d95324c9f5acfca58a9441e3b1dcdd1e2525d17 + languageName: node + linkType: hard + +"child_process@npm:~1.0.2": + version: 1.0.2 + resolution: "child_process@npm:1.0.2" + checksum: bd814d82bc8c6e85ed6fb157878978121cd03b5296c09f6135fa3d081fd9a6a617a6d509c50397711df713af403331241a9c0397a7fad30672051485e156c2a1 + languageName: node + linkType: hard + +"chownr@npm:^2.0.0": + version: 2.0.0 + resolution: "chownr@npm:2.0.0" + checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f + languageName: node + linkType: hard + +"chrome-trace-event@npm:^1.0.2": + version: 1.0.3 + resolution: "chrome-trace-event@npm:1.0.3" + checksum: cb8b1fc7e881aaef973bd0c4a43cd353c2ad8323fb471a041e64f7c2dd849cde4aad15f8b753331a32dda45c973f032c8a03b8177fc85d60eaa75e91e08bfb97 + languageName: node + linkType: hard + +"ci-info@npm:^3.2.0": + version: 3.8.0 + resolution: "ci-info@npm:3.8.0" + checksum: d0a4d3160497cae54294974a7246202244fff031b0a6ea20dd57b10ec510aa17399c41a1b0982142c105f3255aff2173e5c0dd7302ee1b2f28ba3debda375098 + languageName: node + linkType: hard + +"cjs-module-lexer@npm:^1.0.0": + version: 1.2.3 + resolution: "cjs-module-lexer@npm:1.2.3" + checksum: 5ea3cb867a9bb609b6d476cd86590d105f3cfd6514db38ff71f63992ab40939c2feb68967faa15a6d2b1f90daa6416b79ea2de486e9e2485a6f8b66a21b4fb0a + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 + languageName: node + linkType: hard + +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: ^4.2.0 + strip-ansi: ^6.0.1 + wrap-ansi: ^7.0.0 + checksum: 79648b3b0045f2e285b76fb2e24e207c6db44323581e421c3acbd0e86454cba1b37aea976ab50195a49e7384b871e6dfb2247ad7dec53c02454ac6497394cb56 + languageName: node + linkType: hard + +"clone-deep@npm:^4.0.1": + version: 4.0.1 + resolution: "clone-deep@npm:4.0.1" + dependencies: + is-plain-object: ^2.0.4 + kind-of: ^6.0.2 + shallow-clone: ^3.0.0 + checksum: 770f912fe4e6f21873c8e8fbb1e99134db3b93da32df271d00589ea4a29dbe83a9808a322c93f3bcaf8584b8b4fa6fc269fc8032efbaa6728e0c9886c74467d2 + languageName: node + linkType: hard + +"clone@npm:~2.1.2": + version: 2.1.2 + resolution: "clone@npm:2.1.2" + checksum: aaf106e9bc025b21333e2f4c12da539b568db4925c0501a1bf4070836c9e848c892fa22c35548ce0d1132b08bbbfa17a00144fe58fccdab6fa900fec4250f67d + languageName: node + linkType: hard + +"co@npm:^4.6.0": + version: 4.6.0 + resolution: "co@npm:4.6.0" + checksum: 5210d9223010eb95b29df06a91116f2cf7c8e0748a9013ed853b53f362ea0e822f1e5bb054fb3cefc645239a4cf966af1f6133a3b43f40d591f3b68ed6cf0510 + languageName: node + linkType: hard + +"collect-v8-coverage@npm:^1.0.0": + version: 1.0.2 + resolution: "collect-v8-coverage@npm:1.0.2" + checksum: c10f41c39ab84629d16f9f6137bc8a63d332244383fc368caf2d2052b5e04c20cd1fd70f66fcf4e2422b84c8226598b776d39d5f2d2a51867cc1ed5d1982b4da + languageName: node + linkType: hard + +"color-convert@npm:^1.9.0": + version: 1.9.3 + resolution: "color-convert@npm:1.9.3" + dependencies: + color-name: 1.1.3 + checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: ~1.1.4 + checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 + languageName: node + linkType: hard + +"color-name@npm:1.1.3": + version: 1.1.3 + resolution: "color-name@npm:1.1.3" + checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 + languageName: node + linkType: hard + +"color-support@npm:^1.1.3": + version: 1.1.3 + resolution: "color-support@npm:1.1.3" + bin: + color-support: bin.js + checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b + languageName: node + linkType: hard + +"colord@npm:^2.9.3": + version: 2.9.3 + resolution: "colord@npm:2.9.3" + checksum: 95d909bfbcfd8d5605cbb5af56f2d1ce2b323990258fd7c0d2eb0e6d3bb177254d7fb8213758db56bb4ede708964f78c6b992b326615f81a18a6aaf11d64c650 + languageName: node + linkType: hard + +"colorette@npm:^2.0.14": + version: 2.0.20 + resolution: "colorette@npm:2.0.20" + checksum: 0c016fea2b91b733eb9f4bcdb580018f52c0bc0979443dad930e5037a968237ac53d9beb98e218d2e9235834f8eebce7f8e080422d6194e957454255bde71d3d + languageName: node + linkType: hard + +"combined-stream@npm:^1.0.8": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: ~1.0.0 + checksum: 49fa4aeb4916567e33ea81d088f6584749fc90c7abec76fd516bf1c5aa5c79f3584b5ba3de6b86d26ddd64bae5329c4c7479343250cfe71c75bb366eae53bb7c + languageName: node + linkType: hard + +"commander@npm:2, commander@npm:^2.20.0": + version: 2.20.3 + resolution: "commander@npm:2.20.3" + checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e + languageName: node + linkType: hard + +"commander@npm:7": + version: 7.2.0 + resolution: "commander@npm:7.2.0" + checksum: 53501cbeee61d5157546c0bef0fedb6cdfc763a882136284bed9a07225f09a14b82d2a84e7637edfd1a679fb35ed9502fd58ef1d091e6287f60d790147f68ddc + languageName: node + linkType: hard + +"commander@npm:^10.0.1": + version: 10.0.1 + resolution: "commander@npm:10.0.1" + checksum: 436901d64a818295803c1996cd856621a74f30b9f9e28a588e726b2b1670665bccd7c1a77007ebf328729f0139838a88a19265858a0fa7a8728c4656796db948 + languageName: node + linkType: hard + +"commander@npm:^9.4.1": + version: 9.5.0 + resolution: "commander@npm:9.5.0" + checksum: c7a3e27aa59e913b54a1bafd366b88650bc41d6651f0cbe258d4ff09d43d6a7394232a4dadd0bf518b3e696fdf595db1028a0d82c785b88bd61f8a440cecfade + languageName: node + linkType: hard + +"compute-gcd@npm:^1.2.1": + version: 1.2.1 + resolution: "compute-gcd@npm:1.2.1" + dependencies: + validate.io-array: ^1.0.3 + validate.io-function: ^1.0.2 + validate.io-integer-array: ^1.0.0 + checksum: 51cf33b75f7c8db5142fcb99a9d84a40260993fed8e02a7ab443834186c3ab99b3fd20b30ad9075a6a9d959d69df6da74dd3be8a59c78d9f2fe780ebda8242e1 + languageName: node + linkType: hard + +"compute-lcm@npm:^1.1.2": + version: 1.1.2 + resolution: "compute-lcm@npm:1.1.2" + dependencies: + compute-gcd: ^1.2.1 + validate.io-array: ^1.0.3 + validate.io-function: ^1.0.2 + validate.io-integer-array: ^1.0.0 + checksum: d499ab57dcb48e8d0fd233b99844a06d1cc56115602c920c586e998ebba60293731f5b6976e8a1e83ae6cbfe86716f62d9432e8d94913fed8bd8352f447dc917 + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af + languageName: node + linkType: hard + +"connect_jupyterlab-ui-tests@workspace:ui-tests": + version: 0.0.0-use.local + resolution: "connect_jupyterlab-ui-tests@workspace:ui-tests" + dependencies: + "@jupyterlab/galata": ^5.0.5 + "@playwright/test": ^1.37.0 + languageName: unknown + linkType: soft + +"connect_jupyterlab@workspace:.": + version: 0.0.0-use.local + resolution: "connect_jupyterlab@workspace:." + dependencies: + "@jupyterlab/application": ^4.0.0 + "@jupyterlab/builder": ^4.0.0 + "@jupyterlab/coreutils": ^6.0.0 + "@jupyterlab/services": ^7.0.0 + "@jupyterlab/testutils": ^4.0.0 + "@types/jest": ^29.2.0 + "@types/json-schema": ^7.0.11 + "@types/react": ^18.0.26 + "@types/react-addons-linked-state-mixin": ^0.14.22 + "@typescript-eslint/eslint-plugin": ^6.1.0 + "@typescript-eslint/parser": ^6.1.0 + css-loader: ^6.7.1 + eslint: ^8.36.0 + eslint-config-prettier: ^8.8.0 + eslint-plugin-prettier: ^5.0.0 + jest: ^29.2.0 + mkdirp: ^1.0.3 + npm-run-all: ^4.1.5 + prettier: ^3.0.0 + rimraf: ^5.0.1 + source-map-loader: ^1.0.2 + style-loader: ^3.3.1 + stylelint: ^15.10.1 + stylelint-config-recommended: ^13.0.0 + stylelint-config-standard: ^34.0.0 + stylelint-csstree-validator: ^3.0.0 + stylelint-prettier: ^4.0.0 + typescript: ~5.0.2 + yjs: ^13.5.0 + languageName: unknown + linkType: soft + +"console-control-strings@npm:^1.1.0": + version: 1.1.0 + resolution: "console-control-strings@npm:1.1.0" + checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed + languageName: node + linkType: hard + +"convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": + version: 1.9.0 + resolution: "convert-source-map@npm:1.9.0" + checksum: dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8 + languageName: node + linkType: hard + +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 63ae9933be5a2b8d4509daca5124e20c14d023c820258e484e32dc324d34c2754e71297c94a05784064ad27615037ef677e3f0c00469fb55f409d2bb21261035 + languageName: node + linkType: hard + +"core-js-compat@npm:^3.31.0": + version: 3.32.2 + resolution: "core-js-compat@npm:3.32.2" + dependencies: + browserslist: ^4.21.10 + checksum: efca146ad71a542e6f196db5ba5aed617e48c615bdf1fbb065471b3267f833ac545bd5fc5ad0642c3d3974b955f0684ff0863d7471d7050ee0284e0a1313942e + languageName: node + linkType: hard + +"core-util-is@npm:~1.0.0": + version: 1.0.3 + resolution: "core-util-is@npm:1.0.3" + checksum: 9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99 + languageName: node + linkType: hard + +"cosmiconfig@npm:^8.2.0": + version: 8.3.5 + resolution: "cosmiconfig@npm:8.3.5" + dependencies: + import-fresh: ^3.3.0 + js-yaml: ^4.1.0 + parse-json: ^5.2.0 + path-type: ^4.0.0 + peerDependencies: + typescript: ">=4.9.5" + peerDependenciesMeta: + typescript: + optional: true + checksum: c6e44bb3cabf268b70049e7bd4ee8ecf00068854e53cbc32f9104794927ef406817f9e64e1c4949bd10776b604c01f7b50674336fcd2d5b9efc4cf8277fdf025 + languageName: node + linkType: hard + +"create-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "create-jest@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + chalk: ^4.0.0 + exit: ^0.1.2 + graceful-fs: ^4.2.9 + jest-config: ^29.7.0 + jest-util: ^29.7.0 + prompts: ^2.0.1 + bin: + create-jest: bin/create-jest.js + checksum: 1427d49458adcd88547ef6fa39041e1fe9033a661293aa8d2c3aa1b4967cb5bf4f0c00436c7a61816558f28ba2ba81a94d5c962e8022ea9a883978fc8e1f2945 + languageName: node + linkType: hard + +"crelt@npm:^1.0.5": + version: 1.0.6 + resolution: "crelt@npm:1.0.6" + checksum: dad842093371ad702afbc0531bfca2b0a8dd920b23a42f26e66dabbed9aad9acd5b9030496359545ef3937c3aced0fd4ac39f7a2d280a23ddf9eb7fdcb94a69f + languageName: node + linkType: hard + +"cross-spawn@npm:^6.0.5": + version: 6.0.5 + resolution: "cross-spawn@npm:6.0.5" + dependencies: + nice-try: ^1.0.4 + path-key: ^2.0.1 + semver: ^5.5.0 + shebang-command: ^1.2.0 + which: ^1.2.9 + checksum: f893bb0d96cd3d5751d04e67145bdddf25f99449531a72e82dcbbd42796bbc8268c1076c6b3ea51d4d455839902804b94bc45dfb37ecbb32ea8e54a6741c3ab9 + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": + version: 7.0.3 + resolution: "cross-spawn@npm:7.0.3" + dependencies: + path-key: ^3.1.0 + shebang-command: ^2.0.0 + which: ^2.0.1 + checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 + languageName: node + linkType: hard + +"css-functions-list@npm:^3.2.0": + version: 3.2.0 + resolution: "css-functions-list@npm:3.2.0" + checksum: fe912ea852fad500aef9a4f04db9a0371c7b0eb1ac1a45fbd8df0156ae0538cee7492ebd620b9bb502fe5bf2b5ed3bf3c16b6659cf67c7144eff0b597bcc3891 + languageName: node + linkType: hard + +"css-loader@npm:^6.7.1": + version: 6.8.1 + resolution: "css-loader@npm:6.8.1" + dependencies: + icss-utils: ^5.1.0 + postcss: ^8.4.21 + postcss-modules-extract-imports: ^3.0.0 + postcss-modules-local-by-default: ^4.0.3 + postcss-modules-scope: ^3.0.0 + postcss-modules-values: ^4.0.0 + postcss-value-parser: ^4.2.0 + semver: ^7.3.8 + peerDependencies: + webpack: ^5.0.0 + checksum: 7c1784247bdbe76dc5c55fb1ac84f1d4177a74c47259942c9cfdb7a8e6baef11967a0bc85ac285f26bd26d5059decb848af8154a03fdb4f4894f41212f45eef3 + languageName: node + linkType: hard + +"css-tree@npm:^2.3.1": + version: 2.3.1 + resolution: "css-tree@npm:2.3.1" + dependencies: + mdn-data: 2.0.30 + source-map-js: ^1.0.1 + checksum: 493cc24b5c22b05ee5314b8a0d72d8a5869491c1458017ae5ed75aeb6c3596637dbe1b11dac2548974624adec9f7a1f3a6cf40593dc1f9185eb0e8279543fbc0 + languageName: node + linkType: hard + +"cssesc@npm:^3.0.0": + version: 3.0.0 + resolution: "cssesc@npm:3.0.0" + bin: + cssesc: bin/cssesc + checksum: f8c4ababffbc5e2ddf2fa9957dda1ee4af6048e22aeda1869d0d00843223c1b13ad3f5d88b51caa46c994225eacb636b764eb807a8883e2fb6f99b4f4e8c48b2 + languageName: node + linkType: hard + +"cssom@npm:^0.5.0": + version: 0.5.0 + resolution: "cssom@npm:0.5.0" + checksum: 823471aa30091c59e0a305927c30e7768939b6af70405808f8d2ce1ca778cddcb24722717392438329d1691f9a87cb0183b64b8d779b56a961546d54854fde01 + languageName: node + linkType: hard + +"cssom@npm:~0.3.6": + version: 0.3.8 + resolution: "cssom@npm:0.3.8" + checksum: 24beb3087c76c0d52dd458be9ee1fbc80ac771478a9baef35dd258cdeb527c68eb43204dd439692bb2b1ae5272fa5f2946d10946edab0d04f1078f85e06bc7f6 + languageName: node + linkType: hard + +"cssstyle@npm:^2.3.0": + version: 2.3.0 + resolution: "cssstyle@npm:2.3.0" + dependencies: + cssom: ~0.3.6 + checksum: 5f05e6fd2e3df0b44695c2f08b9ef38b011862b274e320665176467c0725e44a53e341bc4959a41176e83b66064ab786262e7380fd1cabeae6efee0d255bb4e3 + languageName: node + linkType: hard + +"csstype@npm:3.0.10": + version: 3.0.10 + resolution: "csstype@npm:3.0.10" + checksum: 20a8fa324f2b33ddf94aa7507d1b6ab3daa6f3cc308888dc50126585d7952f2471de69b2dbe0635d1fdc31223fef8e070842691877e725caf456e2378685a631 + languageName: node + linkType: hard + +"csstype@npm:^3.0.2": + version: 3.1.2 + resolution: "csstype@npm:3.1.2" + checksum: e1a52e6c25c1314d6beef5168da704ab29c5186b877c07d822bd0806717d9a265e8493a2e35ca7e68d0f5d472d43fac1cdce70fd79fd0853dff81f3028d857b5 + languageName: node + linkType: hard + +"d3-array@npm:1 - 3, d3-array@npm:2 - 3, d3-array@npm:2.10.0 - 3, d3-array@npm:2.5.0 - 3, d3-array@npm:^3.2.2": + version: 3.2.4 + resolution: "d3-array@npm:3.2.4" + dependencies: + internmap: 1 - 2 + checksum: a5976a6d6205f69208478bb44920dd7ce3e788c9dceb86b304dbe401a4bfb42ecc8b04c20facde486e9adcb488b5d1800d49393a3f81a23902b68158e12cddd0 + languageName: node + linkType: hard + +"d3-array@npm:3.2.2": + version: 3.2.2 + resolution: "d3-array@npm:3.2.2" + dependencies: + internmap: 1 - 2 + checksum: 98af3db792685ceca5d9c3721efba0c567520da5532b2c7a590fd83627a598ea225d11c2cecbad404dc154120feb5ea6df0ded38f82ddf342c714cfd0c6143d1 + languageName: node + linkType: hard + +"d3-color@npm:1 - 3, d3-color@npm:^3.1.0": + version: 3.1.0 + resolution: "d3-color@npm:3.1.0" + checksum: 4931fbfda5d7c4b5cfa283a13c91a954f86e3b69d75ce588d06cde6c3628cebfc3af2069ccf225e982e8987c612aa7948b3932163ce15eb3c11cd7c003f3ee3b + languageName: node + linkType: hard + +"d3-delaunay@npm:^6.0.2": + version: 6.0.4 + resolution: "d3-delaunay@npm:6.0.4" + dependencies: + delaunator: 5 + checksum: ce6d267d5ef21a8aeadfe4606329fc80a22ab6e7748d47bc220bcc396ee8be84b77a5473033954c5ac4aa522d265ddc45d4165d30fe4787dd60a15ea66b9bbb4 + languageName: node + linkType: hard + +"d3-dispatch@npm:1 - 3": + version: 3.0.1 + resolution: "d3-dispatch@npm:3.0.1" + checksum: fdfd4a230f46463e28e5b22a45dd76d03be9345b605e1b5dc7d18bd7ebf504e6c00ae123fd6d03e23d9e2711e01f0e14ea89cd0632545b9f0c00b924ba4be223 + languageName: node + linkType: hard + +"d3-dsv@npm:^3.0.1": + version: 3.0.1 + resolution: "d3-dsv@npm:3.0.1" + dependencies: + commander: 7 + iconv-lite: 0.6 + rw: 1 + bin: + csv2json: bin/dsv2json.js + csv2tsv: bin/dsv2dsv.js + dsv2dsv: bin/dsv2dsv.js + dsv2json: bin/dsv2json.js + json2csv: bin/json2dsv.js + json2dsv: bin/json2dsv.js + json2tsv: bin/json2dsv.js + tsv2csv: bin/dsv2dsv.js + tsv2json: bin/dsv2json.js + checksum: 5fc0723647269d5dccd181d74f2265920ab368a2868b0b4f55ffa2fecdfb7814390ea28622cd61ee5d9594ab262879509059544e9f815c54fe76fbfb4ffa4c8a + languageName: node + linkType: hard + +"d3-force@npm:^3.0.0": + version: 3.0.0 + resolution: "d3-force@npm:3.0.0" + dependencies: + d3-dispatch: 1 - 3 + d3-quadtree: 1 - 3 + d3-timer: 1 - 3 + checksum: 6c7e96438cab62fa32aeadb0ade3297b62b51f81b1b38b0a60a5ec9fd627d74090c1189654d92df2250775f31b06812342f089f1d5947de9960a635ee3581def + languageName: node + linkType: hard + +"d3-format@npm:1 - 3, d3-format@npm:^3.1.0": + version: 3.1.0 + resolution: "d3-format@npm:3.1.0" + checksum: f345ec3b8ad3cab19bff5dead395bd9f5590628eb97a389b1dd89f0b204c7c4fc1d9520f13231c2c7cf14b7c9a8cf10f8ef15bde2befbab41454a569bd706ca2 + languageName: node + linkType: hard + +"d3-geo-projection@npm:^4.0.0": + version: 4.0.0 + resolution: "d3-geo-projection@npm:4.0.0" + dependencies: + commander: 7 + d3-array: 1 - 3 + d3-geo: 1.12.0 - 3 + bin: + geo2svg: bin/geo2svg.js + geograticule: bin/geograticule.js + geoproject: bin/geoproject.js + geoquantize: bin/geoquantize.js + geostitch: bin/geostitch.js + checksum: 631422b10dd78d1047ba5a3b073148bea27721060bd7087a5fa6c053ca80445d26432e505e0e3acbd6e0d76cf577c61bf9a5db70dabbc9310c493de1f7ff736d + languageName: node + linkType: hard + +"d3-geo@npm:1.12.0 - 3, d3-geo@npm:^3.1.0": + version: 3.1.0 + resolution: "d3-geo@npm:3.1.0" + dependencies: + d3-array: 2.5.0 - 3 + checksum: adf82b0c105c0c5951ae0a833d4dfc479a563791ad7938579fa14e1cffd623b469d8aa7a37dc413a327fb6ac56880f3da3f6c43d4abe3c923972dd98f34f37d1 + languageName: node + linkType: hard + +"d3-hierarchy@npm:^3.1.2": + version: 3.1.2 + resolution: "d3-hierarchy@npm:3.1.2" + checksum: 0fd946a8c5fd4686d43d3e11bbfc2037a145fda29d2261ccd0e36f70b66af6d7638e2c0c7112124d63fc3d3127197a00a6aecf676bd5bd392a94d7235a214263 + languageName: node + linkType: hard + +"d3-interpolate@npm:1.2.0 - 3, d3-interpolate@npm:^3.0.1": + version: 3.0.1 + resolution: "d3-interpolate@npm:3.0.1" + dependencies: + d3-color: 1 - 3 + checksum: a42ba314e295e95e5365eff0f604834e67e4a3b3c7102458781c477bd67e9b24b6bb9d8e41ff5521050a3f2c7c0c4bbbb6e187fd586daa3980943095b267e78b + languageName: node + linkType: hard + +"d3-path@npm:^3.1.0": + version: 3.1.0 + resolution: "d3-path@npm:3.1.0" + checksum: 2306f1bd9191e1eac895ec13e3064f732a85f243d6e627d242a313f9777756838a2215ea11562f0c7630c7c3b16a19ec1fe0948b1c82f3317fac55882f6ee5d8 + languageName: node + linkType: hard + +"d3-quadtree@npm:1 - 3": + version: 3.0.1 + resolution: "d3-quadtree@npm:3.0.1" + checksum: 5469d462763811475f34a7294d984f3eb100515b0585ca5b249656f6b1a6e99b20056a2d2e463cc9944b888896d2b1d07859c50f9c0cf23438df9cd2e3146066 + languageName: node + linkType: hard + +"d3-scale@npm:^4.0.2": + version: 4.0.2 + resolution: "d3-scale@npm:4.0.2" + dependencies: + d3-array: 2.10.0 - 3 + d3-format: 1 - 3 + d3-interpolate: 1.2.0 - 3 + d3-time: 2.1.1 - 3 + d3-time-format: 2 - 4 + checksum: a9c770d283162c3bd11477c3d9d485d07f8db2071665f1a4ad23eec3e515e2cefbd369059ec677c9ac849877d1a765494e90e92051d4f21111aa56791c98729e + languageName: node + linkType: hard + +"d3-shape@npm:^3.2.0": + version: 3.2.0 + resolution: "d3-shape@npm:3.2.0" + dependencies: + d3-path: ^3.1.0 + checksum: de2af5fc9a93036a7b68581ca0bfc4aca2d5a328aa7ba7064c11aedd44d24f310c20c40157cb654359d4c15c3ef369f95ee53d71221017276e34172c7b719cfa + languageName: node + linkType: hard + +"d3-time-format@npm:2 - 4, d3-time-format@npm:^4.1.0": + version: 4.1.0 + resolution: "d3-time-format@npm:4.1.0" + dependencies: + d3-time: 1 - 3 + checksum: 7342bce28355378152bbd4db4e275405439cabba082d9cd01946d40581140481c8328456d91740b0fe513c51ec4a467f4471ffa390c7e0e30ea30e9ec98fcdf4 + languageName: node + linkType: hard + +"d3-time@npm:1 - 3, d3-time@npm:2.1.1 - 3, d3-time@npm:^3.1.0": + version: 3.1.0 + resolution: "d3-time@npm:3.1.0" + dependencies: + d3-array: 2 - 3 + checksum: 613b435352a78d9f31b7f68540788186d8c331b63feca60ad21c88e9db1989fe888f97f242322ebd6365e45ec3fb206a4324cd4ca0dfffa1d9b5feb856ba00a7 + languageName: node + linkType: hard + +"d3-timer@npm:1 - 3, d3-timer@npm:^3.0.1": + version: 3.0.1 + resolution: "d3-timer@npm:3.0.1" + checksum: 1cfddf86d7bca22f73f2c427f52dfa35c49f50d64e187eb788dcad6e927625c636aa18ae4edd44d084eb9d1f81d8ca4ec305dae7f733c15846a824575b789d73 + languageName: node + linkType: hard + +"data-urls@npm:^2.0.0": + version: 2.0.0 + resolution: "data-urls@npm:2.0.0" + dependencies: + abab: ^2.0.3 + whatwg-mimetype: ^2.3.0 + whatwg-url: ^8.0.0 + checksum: 97caf828aac25e25e04ba6869db0f99c75e6859bb5b424ada28d3e7841941ebf08ddff3c1b1bb4585986bd507a5d54c2a716853ea6cb98af877400e637393e71 + languageName: node + linkType: hard + +"data-urls@npm:^3.0.2": + version: 3.0.2 + resolution: "data-urls@npm:3.0.2" + dependencies: + abab: ^2.0.6 + whatwg-mimetype: ^3.0.0 + whatwg-url: ^11.0.0 + checksum: 033fc3dd0fba6d24bc9a024ddcf9923691dd24f90a3d26f6545d6a2f71ec6956f93462f2cdf2183cc46f10dc01ed3bcb36731a8208456eb1a08147e571fe2a76 + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": + version: 4.3.4 + resolution: "debug@npm:4.3.4" + dependencies: + ms: 2.1.2 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 + languageName: node + linkType: hard + +"debug@npm:^2.6.9": + version: 2.6.9 + resolution: "debug@npm:2.6.9" + dependencies: + ms: 2.0.0 + checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 + languageName: node + linkType: hard + +"decamelize-keys@npm:^1.1.0": + version: 1.1.1 + resolution: "decamelize-keys@npm:1.1.1" + dependencies: + decamelize: ^1.1.0 + map-obj: ^1.0.0 + checksum: fc645fe20b7bda2680bbf9481a3477257a7f9304b1691036092b97ab04c0ab53e3bf9fcc2d2ae382536568e402ec41fb11e1d4c3836a9abe2d813dd9ef4311e0 + languageName: node + linkType: hard + +"decamelize@npm:^1.1.0": + version: 1.2.0 + resolution: "decamelize@npm:1.2.0" + checksum: ad8c51a7e7e0720c70ec2eeb1163b66da03e7616d7b98c9ef43cce2416395e84c1e9548dd94f5f6ffecfee9f8b94251fc57121a8b021f2ff2469b2bae247b8aa + languageName: node + linkType: hard + +"decamelize@npm:^5.0.0": + version: 5.0.1 + resolution: "decamelize@npm:5.0.1" + checksum: 7c3b1ed4b3e60e7fbc00a35fb248298527c1cdfe603e41dfcf05e6c4a8cb9efbee60630deb677ed428908fb4e74e322966c687a094d1478ddc9c3a74e9dc7140 + languageName: node + linkType: hard + +"decimal.js@npm:^10.4.2": + version: 10.4.3 + resolution: "decimal.js@npm:10.4.3" + checksum: 796404dcfa9d1dbfdc48870229d57f788b48c21c603c3f6554a1c17c10195fc1024de338b0cf9e1efe0c7c167eeb18f04548979bcc5fdfabebb7cc0ae3287bae + languageName: node + linkType: hard + +"dedent@npm:^1.0.0": + version: 1.5.1 + resolution: "dedent@npm:1.5.1" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: c3c300a14edf1bdf5a873f9e4b22e839d62490bc5c8d6169c1f15858a1a76733d06a9a56930e963d677a2ceeca4b6b0894cc5ea2f501aa382ca5b92af3413c2a + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3": + version: 0.1.4 + resolution: "deep-is@npm:0.1.4" + checksum: edb65dd0d7d1b9c40b2f50219aef30e116cedd6fc79290e740972c132c09106d2e80aa0bc8826673dd5a00222d4179c84b36a790eef63a4c4bca75a37ef90804 + languageName: node + linkType: hard + +"deepmerge@npm:^4.2.2": + version: 4.3.1 + resolution: "deepmerge@npm:4.3.1" + checksum: 2024c6a980a1b7128084170c4cf56b0fd58a63f2da1660dcfe977415f27b17dbe5888668b59d0b063753f3220719d5e400b7f113609489c90160bb9a5518d052 + languageName: node + linkType: hard + +"default-browser-id@npm:^3.0.0": + version: 3.0.0 + resolution: "default-browser-id@npm:3.0.0" + dependencies: + bplist-parser: ^0.2.0 + untildify: ^4.0.0 + checksum: 279c7ad492542e5556336b6c254a4eaf31b2c63a5433265655ae6e47301197b6cfb15c595a6fdc6463b2ff8e1a1a1ed3cba56038a60e1527ba4ab1628c6b9941 + languageName: node + linkType: hard + +"default-browser@npm:^4.0.0": + version: 4.0.0 + resolution: "default-browser@npm:4.0.0" + dependencies: + bundle-name: ^3.0.0 + default-browser-id: ^3.0.0 + execa: ^7.1.1 + titleize: ^3.0.0 + checksum: 40c5af984799042b140300be5639c9742599bda76dc9eba5ac9ad5943c83dd36cebc4471eafcfddf8e0ec817166d5ba89d56f08e66a126c7c7908a179cead1a7 + languageName: node + linkType: hard + +"define-lazy-prop@npm:^3.0.0": + version: 3.0.0 + resolution: "define-lazy-prop@npm:3.0.0" + checksum: 54884f94caac0791bf6395a3ec530ce901cf71c47b0196b8754f3fd17edb6c0e80149c1214429d851873bb0d689dbe08dcedbb2306dc45c8534a5934723851b6 + languageName: node + linkType: hard + +"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4, define-properties@npm:^1.2.0": + version: 1.2.0 + resolution: "define-properties@npm:1.2.0" + dependencies: + has-property-descriptors: ^1.0.0 + object-keys: ^1.1.1 + checksum: e60aee6a19b102df4e2b1f301816804e81ab48bb91f00d0d935f269bf4b3f79c88b39e4f89eaa132890d23267335fd1140dfcd8d5ccd61031a0a2c41a54e33a6 + languageName: node + linkType: hard + +"delaunator@npm:5": + version: 5.0.0 + resolution: "delaunator@npm:5.0.0" + dependencies: + robust-predicates: ^3.0.0 + checksum: d6764188442b7f7c6bcacebd96edc00e35f542a96f1af3ef600e586bfb9849a3682c489c0ab423440c90bc4c7cac77f28761babff76fa29e193e1cf50a95b860 + languageName: node + linkType: hard + +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: 46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 + languageName: node + linkType: hard + +"delegates@npm:^1.0.0": + version: 1.0.0 + resolution: "delegates@npm:1.0.0" + checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd + languageName: node + linkType: hard + +"detect-newline@npm:^3.0.0": + version: 3.1.0 + resolution: "detect-newline@npm:3.1.0" + checksum: ae6cd429c41ad01b164c59ea36f264a2c479598e61cba7c99da24175a7ab80ddf066420f2bec9a1c57a6bead411b4655ff15ad7d281c000a89791f48cbe939e7 + languageName: node + linkType: hard + +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: f4914158e1f2276343d98ff5b31fc004e7304f5470bf0f1adb2ac6955d85a531a6458d33e87667f98f6ae52ebd3891bb47d420bb48a5bd8b7a27ee25b20e33aa + languageName: node + linkType: hard + +"dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: ^4.0.0 + checksum: fa05e18324510d7283f55862f3161c6759a3f2f8dbce491a2fc14c8324c498286c54282c1f0e933cb930da8419b30679389499b919122952a4f8592362ef4615 + languageName: node + linkType: hard + +"doctrine@npm:^3.0.0": + version: 3.0.0 + resolution: "doctrine@npm:3.0.0" + dependencies: + esutils: ^2.0.2 + checksum: fd7673ca77fe26cd5cba38d816bc72d641f500f1f9b25b83e8ce28827fe2da7ad583a8da26ab6af85f834138cf8dae9f69b0cd6ab925f52ddab1754db44d99ce + languageName: node + linkType: hard + +"dom-serializer@npm:^1.0.1": + version: 1.4.1 + resolution: "dom-serializer@npm:1.4.1" + dependencies: + domelementtype: ^2.0.1 + domhandler: ^4.2.0 + entities: ^2.0.0 + checksum: fbb0b01f87a8a2d18e6e5a388ad0f7ec4a5c05c06d219377da1abc7bb0f674d804f4a8a94e3f71ff15f6cb7dcfc75704a54b261db672b9b3ab03da6b758b0b22 + languageName: node + linkType: hard + +"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0": + version: 2.3.0 + resolution: "domelementtype@npm:2.3.0" + checksum: ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6 + languageName: node + linkType: hard + +"domexception@npm:^4.0.0": + version: 4.0.0 + resolution: "domexception@npm:4.0.0" + dependencies: + webidl-conversions: ^7.0.0 + checksum: ddbc1268edf33a8ba02ccc596735ede80375ee0cf124b30d2f05df5b464ba78ef4f49889b6391df4a04954e63d42d5631c7fcf8b1c4f12bc531252977a5f13d5 + languageName: node + linkType: hard + +"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0": + version: 4.3.1 + resolution: "domhandler@npm:4.3.1" + dependencies: + domelementtype: ^2.2.0 + checksum: 4c665ceed016e1911bf7d1dadc09dc888090b64dee7851cccd2fcf5442747ec39c647bb1cb8c8919f8bbdd0f0c625a6bafeeed4b2d656bbecdbae893f43ffaaa + languageName: node + linkType: hard + +"domutils@npm:^2.5.2": + version: 2.8.0 + resolution: "domutils@npm:2.8.0" + dependencies: + dom-serializer: ^1.0.1 + domelementtype: ^2.2.0 + domhandler: ^4.2.0 + checksum: abf7434315283e9aadc2a24bac0e00eab07ae4313b40cc239f89d84d7315ebdfd2fb1b5bf750a96bc1b4403d7237c7b2ebf60459be394d625ead4ca89b934391 + languageName: node + linkType: hard + +"duplicate-package-checker-webpack-plugin@npm:^3.0.0": + version: 3.0.0 + resolution: "duplicate-package-checker-webpack-plugin@npm:3.0.0" + dependencies: + chalk: ^2.3.0 + find-root: ^1.0.0 + lodash: ^4.17.4 + semver: ^5.4.1 + checksum: d77be45cb72d79a429c64d8f8f7603fea681d182fb795459a3d4afa608faad9a923378a7e80c6855f465263e1983140b6fc3682bd0213228b8cd7906ab4b934d + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 7d00d7cd8e49b9afa762a813faac332dee781932d6f2c848dc348939c4253f1d4564341b7af1d041853bc3f32c2ef141b58e0a4d9862c17a7f08f68df1e0f1ed + languageName: node + linkType: hard + +"electron-to-chromium@npm:^1.4.477": + version: 1.4.516 + resolution: "electron-to-chromium@npm:1.4.516" + checksum: e95b1d1d19bcc14f9985a1e76ff06977272a67dd73ab48322cb2828af3d07f7b81c9f796f2ef5d6ccd9b708efba94d2ac5ad60b8c56f4898faf813d6aec1b41c + languageName: node + linkType: hard + +"emittery@npm:^0.13.1": + version: 0.13.1 + resolution: "emittery@npm:0.13.1" + checksum: 2b089ab6306f38feaabf4f6f02792f9ec85fc054fda79f44f6790e61bbf6bc4e1616afb9b232e0c5ec5289a8a452f79bfa6d905a6fd64e94b49981f0934001c6 + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 8487182da74aabd810ac6d6f1994111dfc0e331b01271ae01ec1eb0ad7b5ecc2bbbbd2f053c05cb55a1ac30449527d819bbfbf0e3de1023db308cbcb47f86601 + languageName: node + linkType: hard + +"emojis-list@npm:^3.0.0": + version: 3.0.0 + resolution: "emojis-list@npm:3.0.0" + checksum: ddaaa02542e1e9436c03970eeed445f4ed29a5337dfba0fe0c38dfdd2af5da2429c2a0821304e8a8d1cadf27fdd5b22ff793571fa803ae16852a6975c65e8e70 + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: ^0.6.2 + checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f + languageName: node + linkType: hard + +"enhanced-resolve@npm:^5.15.0": + version: 5.15.0 + resolution: "enhanced-resolve@npm:5.15.0" + dependencies: + graceful-fs: ^4.2.4 + tapable: ^2.2.0 + checksum: fbd8cdc9263be71cc737aa8a7d6c57b43d6aa38f6cc75dde6fcd3598a130cc465f979d2f4d01bb3bf475acb43817749c79f8eef9be048683602ca91ab52e4f11 + languageName: node + linkType: hard + +"entities@npm:^2.0.0": + version: 2.2.0 + resolution: "entities@npm:2.2.0" + checksum: 19010dacaf0912c895ea262b4f6128574f9ccf8d4b3b65c7e8334ad0079b3706376360e28d8843ff50a78aabcb8f08f0a32dbfacdc77e47ed77ca08b713669b3 + languageName: node + linkType: hard + +"entities@npm:^4.4.0": + version: 4.5.0 + resolution: "entities@npm:4.5.0" + checksum: 853f8ebd5b425d350bffa97dd6958143179a5938352ccae092c62d1267c4e392a039be1bae7d51b6e4ffad25f51f9617531fedf5237f15df302ccfb452cbf2d7 + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e + languageName: node + linkType: hard + +"envinfo@npm:^7.7.3": + version: 7.10.0 + resolution: "envinfo@npm:7.10.0" + bin: + envinfo: dist/cli.js + checksum: 05e81a5768c42cbd5c580dc3f274db3401facadd53e9bd52e2aa49dfbb5d8b26f6181c25a6652d79618a6994185bd2b1c137673101690b147f758e4e71d42f7d + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 + languageName: node + linkType: hard + +"error-ex@npm:^1.3.1": + version: 1.3.2 + resolution: "error-ex@npm:1.3.2" + dependencies: + is-arrayish: ^0.2.1 + checksum: c1c2b8b65f9c91b0f9d75f0debaa7ec5b35c266c2cac5de412c1a6de86d4cbae04ae44e510378cb14d032d0645a36925d0186f8bb7367bcc629db256b743a001 + languageName: node + linkType: hard + +"es-abstract@npm:^1.22.1": + version: 1.22.1 + resolution: "es-abstract@npm:1.22.1" + dependencies: + array-buffer-byte-length: ^1.0.0 + arraybuffer.prototype.slice: ^1.0.1 + available-typed-arrays: ^1.0.5 + call-bind: ^1.0.2 + es-set-tostringtag: ^2.0.1 + es-to-primitive: ^1.2.1 + function.prototype.name: ^1.1.5 + get-intrinsic: ^1.2.1 + get-symbol-description: ^1.0.0 + globalthis: ^1.0.3 + gopd: ^1.0.1 + has: ^1.0.3 + has-property-descriptors: ^1.0.0 + has-proto: ^1.0.1 + has-symbols: ^1.0.3 + internal-slot: ^1.0.5 + is-array-buffer: ^3.0.2 + is-callable: ^1.2.7 + is-negative-zero: ^2.0.2 + is-regex: ^1.1.4 + is-shared-array-buffer: ^1.0.2 + is-string: ^1.0.7 + is-typed-array: ^1.1.10 + is-weakref: ^1.0.2 + object-inspect: ^1.12.3 + object-keys: ^1.1.1 + object.assign: ^4.1.4 + regexp.prototype.flags: ^1.5.0 + safe-array-concat: ^1.0.0 + safe-regex-test: ^1.0.0 + string.prototype.trim: ^1.2.7 + string.prototype.trimend: ^1.0.6 + string.prototype.trimstart: ^1.0.6 + typed-array-buffer: ^1.0.0 + typed-array-byte-length: ^1.0.0 + typed-array-byte-offset: ^1.0.0 + typed-array-length: ^1.0.4 + unbox-primitive: ^1.0.2 + which-typed-array: ^1.1.10 + checksum: 614e2c1c3717cb8d30b6128ef12ea110e06fd7d75ad77091ca1c5dbfb00da130e62e4bbbbbdda190eada098a22b27fe0f99ae5a1171dac2c8663b1e8be8a3a9b + languageName: node + linkType: hard + +"es-module-lexer@npm:^1.2.1": + version: 1.3.1 + resolution: "es-module-lexer@npm:1.3.1" + checksum: 3beafa7e171eb1e8cc45695edf8d51638488dddf65294d7911f8d6a96249da6a9838c87529262cc6ea53988d8272cec0f4bff93f476ed031a54ba3afb51a0ed3 + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.0.1": + version: 2.0.1 + resolution: "es-set-tostringtag@npm:2.0.1" + dependencies: + get-intrinsic: ^1.1.3 + has: ^1.0.3 + has-tostringtag: ^1.0.0 + checksum: ec416a12948cefb4b2a5932e62093a7cf36ddc3efd58d6c58ca7ae7064475ace556434b869b0bbeb0c365f1032a8ccd577211101234b69837ad83ad204fff884 + languageName: node + linkType: hard + +"es-to-primitive@npm:^1.2.1": + version: 1.2.1 + resolution: "es-to-primitive@npm:1.2.1" + dependencies: + is-callable: ^1.1.4 + is-date-object: ^1.0.1 + is-symbol: ^1.0.2 + checksum: 4ead6671a2c1402619bdd77f3503991232ca15e17e46222b0a41a5d81aebc8740a77822f5b3c965008e631153e9ef0580540007744521e72de8e33599fca2eed + languageName: node + linkType: hard + +"escalade@npm:^3.1.1": + version: 3.1.1 + resolution: "escalade@npm:3.1.1" + checksum: a3e2a99f07acb74b3ad4989c48ca0c3140f69f923e56d0cba0526240ee470b91010f9d39001f2a4a313841d237ede70a729e92125191ba5d21e74b106800b133 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^1.0.5": + version: 1.0.5 + resolution: "escape-string-regexp@npm:1.0.5" + checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^2.0.0": + version: 2.0.0 + resolution: "escape-string-regexp@npm:2.0.0" + checksum: 9f8a2d5743677c16e85c810e3024d54f0c8dea6424fad3c79ef6666e81dd0846f7437f5e729dfcdac8981bc9e5294c39b4580814d114076b8d36318f46ae4395 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 + languageName: node + linkType: hard + +"escodegen@npm:^2.0.0": + version: 2.1.0 + resolution: "escodegen@npm:2.1.0" + dependencies: + esprima: ^4.0.1 + estraverse: ^5.2.0 + esutils: ^2.0.2 + source-map: ~0.6.1 + dependenciesMeta: + source-map: + optional: true + bin: + escodegen: bin/escodegen.js + esgenerate: bin/esgenerate.js + checksum: 096696407e161305cd05aebb95134ad176708bc5cb13d0dcc89a5fcbb959b8ed757e7f2591a5f8036f8f4952d4a724de0df14cd419e29212729fa6df5ce16bf6 + languageName: node + linkType: hard + +"eslint-config-prettier@npm:^8.8.0": + version: 8.10.0 + resolution: "eslint-config-prettier@npm:8.10.0" + peerDependencies: + eslint: ">=7.0.0" + bin: + eslint-config-prettier: bin/cli.js + checksum: 153266badd477e49b0759816246b2132f1dbdb6c7f313ca60a9af5822fd1071c2bc5684a3720d78b725452bbac04bb130878b2513aea5e72b1b792de5a69fec8 + languageName: node + linkType: hard + +"eslint-plugin-prettier@npm:^5.0.0": + version: 5.0.0 + resolution: "eslint-plugin-prettier@npm:5.0.0" + dependencies: + prettier-linter-helpers: ^1.0.0 + synckit: ^0.8.5 + peerDependencies: + "@types/eslint": ">=8.0.0" + eslint: ">=8.0.0" + prettier: ">=3.0.0" + peerDependenciesMeta: + "@types/eslint": + optional: true + eslint-config-prettier: + optional: true + checksum: 84e88744b9050f2d5ef31b94e85294dda16f3a53c2449f9d33eac8ae6264889b459bf35a68e438fb6b329c2a1d6491aac4bfa00d86317e7009de3dad0311bec6 + languageName: node + linkType: hard + +"eslint-scope@npm:5.1.1": + version: 5.1.1 + resolution: "eslint-scope@npm:5.1.1" + dependencies: + esrecurse: ^4.3.0 + estraverse: ^4.1.1 + checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb + languageName: node + linkType: hard + +"eslint-scope@npm:^7.2.2": + version: 7.2.2 + resolution: "eslint-scope@npm:7.2.2" + dependencies: + esrecurse: ^4.3.0 + estraverse: ^5.2.0 + checksum: ec97dbf5fb04b94e8f4c5a91a7f0a6dd3c55e46bfc7bbcd0e3138c3a76977570e02ed89a1810c778dcd72072ff0e9621ba1379b4babe53921d71e2e4486fda3e + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c60 + languageName: node + linkType: hard + +"eslint@npm:^8.36.0": + version: 8.49.0 + resolution: "eslint@npm:8.49.0" + dependencies: + "@eslint-community/eslint-utils": ^4.2.0 + "@eslint-community/regexpp": ^4.6.1 + "@eslint/eslintrc": ^2.1.2 + "@eslint/js": 8.49.0 + "@humanwhocodes/config-array": ^0.11.11 + "@humanwhocodes/module-importer": ^1.0.1 + "@nodelib/fs.walk": ^1.2.8 + 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.2 + eslint-visitor-keys: ^3.4.3 + espree: ^9.6.1 + esquery: ^1.4.2 + esutils: ^2.0.2 + fast-deep-equal: ^3.1.3 + file-entry-cache: ^6.0.1 + find-up: ^5.0.0 + glob-parent: ^6.0.2 + globals: ^13.19.0 + graphemer: ^1.4.0 + ignore: ^5.2.0 + imurmurhash: ^0.1.4 + is-glob: ^4.0.0 + is-path-inside: ^3.0.3 + js-yaml: ^4.1.0 + json-stable-stringify-without-jsonify: ^1.0.1 + levn: ^0.4.1 + lodash.merge: ^4.6.2 + minimatch: ^3.1.2 + natural-compare: ^1.4.0 + optionator: ^0.9.3 + strip-ansi: ^6.0.1 + text-table: ^0.2.0 + bin: + eslint: bin/eslint.js + checksum: 4dfe257e1e42da2f9da872b05aaaf99b0f5aa022c1a91eee8f2af1ab72651b596366320c575ccd4e0469f7b4c97aff5bb85ae3323ebd6a293c3faef4028b0d81 + languageName: node + linkType: hard + +"espree@npm:^9.6.0, espree@npm:^9.6.1": + version: 9.6.1 + resolution: "espree@npm:9.6.1" + dependencies: + acorn: ^8.9.0 + acorn-jsx: ^5.3.2 + eslint-visitor-keys: ^3.4.1 + checksum: eb8c149c7a2a77b3f33a5af80c10875c3abd65450f60b8af6db1bfcfa8f101e21c1e56a561c6dc13b848e18148d43469e7cd208506238554fb5395a9ea5a1ab9 + languageName: node + linkType: hard + +"esprima@npm:^4.0.0, esprima@npm:^4.0.1": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: b45bc805a613dbea2835278c306b91aff6173c8d034223fa81498c77dcbce3b2931bf6006db816f62eacd9fd4ea975dfd85a5b7f3c6402cfd050d4ca3c13a628 + languageName: node + linkType: hard + +"esquery@npm:^1.4.2": + version: 1.5.0 + resolution: "esquery@npm:1.5.0" + dependencies: + estraverse: ^5.1.0 + checksum: aefb0d2596c230118656cd4ec7532d447333a410a48834d80ea648b1e7b5c9bc9ed8b5e33a89cb04e487b60d622f44cf5713bf4abed7c97343edefdc84a35900 + languageName: node + linkType: hard + +"esrecurse@npm:^4.3.0": + version: 4.3.0 + resolution: "esrecurse@npm:4.3.0" + dependencies: + estraverse: ^5.2.0 + checksum: ebc17b1a33c51cef46fdc28b958994b1dc43cd2e86237515cbc3b4e5d2be6a811b2315d0a1a4d9d340b6d2308b15322f5c8291059521cc5f4802f65e7ec32837 + languageName: node + linkType: hard + +"estraverse@npm:^4.1.1": + version: 4.3.0 + resolution: "estraverse@npm:4.3.0" + checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 + languageName: node + linkType: hard + +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": + version: 5.3.0 + resolution: "estraverse@npm:5.3.0" + checksum: 072780882dc8416ad144f8fe199628d2b3e7bbc9989d9ed43795d2c90309a2047e6bc5979d7e2322a341163d22cfad9e21f4110597fe487519697389497e4e2b + languageName: node + linkType: hard + +"esutils@npm:^2.0.2": + version: 2.0.3 + resolution: "esutils@npm:2.0.3" + checksum: 22b5b08f74737379a840b8ed2036a5fb35826c709ab000683b092d9054e5c2a82c27818f12604bfc2a9a76b90b6834ef081edbc1c7ae30d1627012e067c6ec87 + languageName: node + linkType: hard + +"events@npm:^3.2.0": + version: 3.3.0 + resolution: "events@npm:3.3.0" + checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780 + languageName: node + linkType: hard + +"execa@npm:^5.0.0": + version: 5.1.1 + resolution: "execa@npm:5.1.1" + dependencies: + cross-spawn: ^7.0.3 + get-stream: ^6.0.0 + human-signals: ^2.1.0 + is-stream: ^2.0.0 + merge-stream: ^2.0.0 + npm-run-path: ^4.0.1 + onetime: ^5.1.2 + signal-exit: ^3.0.3 + strip-final-newline: ^2.0.0 + checksum: fba9022c8c8c15ed862847e94c252b3d946036d7547af310e344a527e59021fd8b6bb0723883ea87044dc4f0201f949046993124a42ccb0855cae5bf8c786343 + languageName: node + linkType: hard + +"execa@npm:^7.1.1": + version: 7.2.0 + resolution: "execa@npm:7.2.0" + dependencies: + cross-spawn: ^7.0.3 + get-stream: ^6.0.1 + human-signals: ^4.3.0 + is-stream: ^3.0.0 + merge-stream: ^2.0.0 + npm-run-path: ^5.1.0 + onetime: ^6.0.0 + signal-exit: ^3.0.7 + strip-final-newline: ^3.0.0 + checksum: 14fd17ba0ca8c87b277584d93b1d9fc24f2a65e5152b31d5eb159a3b814854283eaae5f51efa9525e304447e2f757c691877f7adff8fde5746aae67eb1edd1cc + languageName: node + linkType: hard + +"exit@npm:^0.1.2": + version: 0.1.2 + resolution: "exit@npm:0.1.2" + checksum: abc407f07a875c3961e4781dfcb743b58d6c93de9ab263f4f8c9d23bb6da5f9b7764fc773f86b43dd88030444d5ab8abcb611cb680fba8ca075362b77114bba3 + languageName: node + linkType: hard + +"expect@npm:^29.0.0, expect@npm:^29.7.0": + version: 29.7.0 + resolution: "expect@npm:29.7.0" + dependencies: + "@jest/expect-utils": ^29.7.0 + jest-get-type: ^29.6.3 + jest-matcher-utils: ^29.7.0 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 + checksum: 9257f10288e149b81254a0fda8ffe8d54a7061cd61d7515779998b012579d2b8c22354b0eb901daf0145f347403da582f75f359f4810c007182ad3fb318b5c0c + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.1 + resolution: "exponential-backoff@npm:3.1.1" + checksum: 3d21519a4f8207c99f7457287291316306255a328770d320b401114ec8481986e4e467e854cb9914dd965e0a1ca810a23ccb559c642c88f4c7f55c55778a9b48 + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3, fast-deep-equal@npm:~3.1.3": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d + languageName: node + linkType: hard + +"fast-diff@npm:^1.1.2": + version: 1.3.0 + resolution: "fast-diff@npm:1.3.0" + checksum: d22d371b994fdc8cce9ff510d7b8dc4da70ac327bcba20df607dd5b9cae9f908f4d1028f5fe467650f058d1e7270235ae0b8230809a262b4df587a3b3aa216c3 + languageName: node + linkType: hard + +"fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0, fast-glob@npm:^3.3.1": + version: 3.3.1 + resolution: "fast-glob@npm:3.3.1" + dependencies: + "@nodelib/fs.stat": ^2.0.2 + "@nodelib/fs.walk": ^1.2.3 + glob-parent: ^5.1.2 + merge2: ^1.3.0 + micromatch: ^4.0.4 + checksum: b6f3add6403e02cf3a798bfbb1183d0f6da2afd368f27456010c0bc1f9640aea308243d4cb2c0ab142f618276e65ecb8be1661d7c62a7b4e5ba774b9ce5432e5 + languageName: node + linkType: hard + +"fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0, fast-json-stable-stringify@npm:~2.1.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb + languageName: node + linkType: hard + +"fast-levenshtein@npm:^2.0.6": + version: 2.0.6 + resolution: "fast-levenshtein@npm:2.0.6" + checksum: 92cfec0a8dfafd9c7a15fba8f2cc29cd0b62b85f056d99ce448bbcd9f708e18ab2764bda4dd5158364f4145a7c72788538994f0d1787b956ef0d1062b0f7c24c + languageName: node + linkType: hard + +"fastest-levenshtein@npm:^1.0.12, fastest-levenshtein@npm:^1.0.16": + version: 1.0.16 + resolution: "fastest-levenshtein@npm:1.0.16" + checksum: a78d44285c9e2ae2c25f3ef0f8a73f332c1247b7ea7fb4a191e6bb51aa6ee1ef0dfb3ed113616dcdc7023e18e35a8db41f61c8d88988e877cf510df8edafbc71 + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.15.0 + resolution: "fastq@npm:1.15.0" + dependencies: + reusify: ^1.0.4 + checksum: 0170e6bfcd5d57a70412440b8ef600da6de3b2a6c5966aeaf0a852d542daff506a0ee92d6de7679d1de82e644bce69d7a574a6c93f0b03964b5337eed75ada1a + languageName: node + linkType: hard + +"fb-watchman@npm:^2.0.0": + version: 2.0.2 + resolution: "fb-watchman@npm:2.0.2" + dependencies: + bser: 2.1.1 + checksum: b15a124cef28916fe07b400eb87cbc73ca082c142abf7ca8e8de6af43eca79ca7bd13eb4d4d48240b3bd3136eaac40d16e42d6edf87a8e5d1dd8070626860c78 + languageName: node + linkType: hard + +"file-entry-cache@npm:^6.0.1": + version: 6.0.1 + resolution: "file-entry-cache@npm:6.0.1" + dependencies: + flat-cache: ^3.0.4 + checksum: f49701feaa6314c8127c3c2f6173cfefff17612f5ed2daaafc6da13b5c91fd43e3b2a58fd0d63f9f94478a501b167615931e7200e31485e320f74a33885a9c74 + languageName: node + linkType: hard + +"fill-range@npm:^7.0.1": + version: 7.0.1 + resolution: "fill-range@npm:7.0.1" + dependencies: + to-regex-range: ^5.0.1 + checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 + languageName: node + linkType: hard + +"find-root@npm:^1.0.0": + version: 1.1.0 + resolution: "find-root@npm:1.1.0" + checksum: b2a59fe4b6c932eef36c45a048ae8f93c85640212ebe8363164814990ee20f154197505965f3f4f102efc33bfb1cbc26fd17c4a2fc739ebc51b886b137cbefaf + languageName: node + linkType: hard + +"find-up@npm:^4.0.0, find-up@npm:^4.1.0": + version: 4.1.0 + resolution: "find-up@npm:4.1.0" + dependencies: + locate-path: ^5.0.0 + path-exists: ^4.0.0 + checksum: 4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 + languageName: node + linkType: hard + +"find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: ^6.0.0 + path-exists: ^4.0.0 + checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 + languageName: node + linkType: hard + +"flat-cache@npm:^3.0.4": + version: 3.1.0 + resolution: "flat-cache@npm:3.1.0" + dependencies: + flatted: ^3.2.7 + keyv: ^4.5.3 + rimraf: ^3.0.2 + checksum: 99312601d5b90f44aef403f17f056dc09be7e437703740b166cdc9386d99e681f74e6b6e8bd7d010bda66904ea643c9527276b1b80308a2119741d94108a4d8f + languageName: node + linkType: hard + +"flatted@npm:^3.2.7": + version: 3.2.7 + resolution: "flatted@npm:3.2.7" + checksum: 427633049d55bdb80201c68f7eb1cbd533e03eac541f97d3aecab8c5526f12a20ccecaeede08b57503e772c769e7f8680b37e8d482d1e5f8d7e2194687f9ea35 + languageName: node + linkType: hard + +"for-each@npm:^0.3.3": + version: 0.3.3 + resolution: "for-each@npm:0.3.3" + dependencies: + is-callable: ^1.1.3 + checksum: 6c48ff2bc63362319c65e2edca4a8e1e3483a2fabc72fbe7feaf8c73db94fc7861bd53bc02c8a66a0c1dd709da6b04eec42e0abdd6b40ce47305ae92a25e5d28 + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0": + version: 3.1.1 + resolution: "foreground-child@npm:3.1.1" + dependencies: + cross-spawn: ^7.0.0 + signal-exit: ^4.0.1 + checksum: 139d270bc82dc9e6f8bc045fe2aae4001dc2472157044fdfad376d0a3457f77857fa883c1c8b21b491c6caade9a926a4bed3d3d2e8d3c9202b151a4cbbd0bcd5 + languageName: node + linkType: hard + +"form-data@npm:^4.0.0": + version: 4.0.0 + resolution: "form-data@npm:4.0.0" + dependencies: + asynckit: ^0.4.0 + combined-stream: ^1.0.8 + mime-types: ^2.1.12 + checksum: 01135bf8675f9d5c61ff18e2e2932f719ca4de964e3be90ef4c36aacfc7b9cb2fceb5eca0b7e0190e3383fe51c5b37f4cb80b62ca06a99aaabfcfd6ac7c9328c + languageName: node + linkType: hard + +"free-style@npm:3.1.0": + version: 3.1.0 + resolution: "free-style@npm:3.1.0" + checksum: 949258ae315deda48cac93ecd5f9a80f36e8a027e19ce2103598dc8d5ab60e963bbad5444b2a4990ddb746798dd188896f430285cf484afbf2141f7d75a191d8 + languageName: node + linkType: hard + +"fs-extra@npm:^10.1.0": + version: 10.1.0 + resolution: "fs-extra@npm:10.1.0" + dependencies: + graceful-fs: ^4.2.0 + jsonfile: ^6.0.1 + universalify: ^2.0.0 + checksum: dc94ab37096f813cc3ca12f0f1b5ad6744dfed9ed21e953d72530d103cea193c2f81584a39e9dee1bea36de5ee66805678c0dddc048e8af1427ac19c00fffc50 + languageName: node + linkType: hard + +"fs-minipass@npm:^2.0.0": + version: 2.1.0 + resolution: "fs-minipass@npm:2.1.0" + dependencies: + minipass: ^3.0.0 + checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: ^7.0.3 + checksum: 8722a41109130851d979222d3ec88aabaceeaaf8f57b2a8f744ef8bd2d1ce95453b04a61daa0078822bc5cd21e008814f06fe6586f56fef511e71b8d2394d802 + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 + languageName: node + linkType: hard + +"fsevents@npm:2.3.2": + version: 2.3.2 + resolution: "fsevents@npm:2.3.2" + dependencies: + node-gyp: latest + checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@npm:^2.3.2": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: latest + checksum: 11e6ea6fea15e42461fc55b4b0e4a0a3c654faa567f1877dbd353f39156f69def97a69936d1746619d656c4b93de2238bf731f6085a03a50cabf287c9d024317 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@2.3.2#~builtin": + version: 2.3.2 + resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=df0bf1" + dependencies: + node-gyp: latest + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@^2.3.2#~builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#~builtin::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: latest + conditions: os=darwin + languageName: node + linkType: hard + +"function-bind@npm:^1.1.1": + version: 1.1.1 + resolution: "function-bind@npm:1.1.1" + checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a + languageName: node + linkType: hard + +"function.prototype.name@npm:^1.1.5": + version: 1.1.6 + resolution: "function.prototype.name@npm:1.1.6" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + functions-have-names: ^1.2.3 + checksum: 7a3f9bd98adab09a07f6e1f03da03d3f7c26abbdeaeee15223f6c04a9fb5674792bdf5e689dac19b97ac71de6aad2027ba3048a9b883aa1b3173eed6ab07f479 + languageName: node + linkType: hard + +"functions-have-names@npm:^1.2.3": + version: 1.2.3 + resolution: "functions-have-names@npm:1.2.3" + checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 + languageName: node + linkType: hard + +"gauge@npm:^4.0.3": + version: 4.0.4 + resolution: "gauge@npm:4.0.4" + dependencies: + aproba: ^1.0.3 || ^2.0.0 + color-support: ^1.1.3 + console-control-strings: ^1.1.0 + has-unicode: ^2.0.1 + signal-exit: ^3.0.7 + string-width: ^4.2.3 + strip-ansi: ^6.0.1 + wide-align: ^1.1.5 + checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d + languageName: node + linkType: hard + +"gensync@npm:^1.0.0-beta.2": + version: 1.0.0-beta.2 + resolution: "gensync@npm:1.0.0-beta.2" + checksum: a7437e58c6be12aa6c90f7730eac7fa9833dc78872b4ad2963d2031b00a3367a93f98aec75f9aaac7220848e4026d67a8655e870b24f20a543d103c0d65952ec + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.1": + version: 1.2.1 + resolution: "get-intrinsic@npm:1.2.1" + dependencies: + function-bind: ^1.1.1 + has: ^1.0.3 + has-proto: ^1.0.1 + has-symbols: ^1.0.3 + checksum: 5b61d88552c24b0cf6fa2d1b3bc5459d7306f699de060d76442cce49a4721f52b8c560a33ab392cf5575b7810277d54ded9d4d39a1ea61855619ebc005aa7e5f + languageName: node + linkType: hard + +"get-package-type@npm:^0.1.0": + version: 0.1.0 + resolution: "get-package-type@npm:0.1.0" + checksum: bba0811116d11e56d702682ddef7c73ba3481f114590e705fc549f4d868972263896af313c57a25c076e3c0d567e11d919a64ba1b30c879be985fc9d44f96148 + languageName: node + linkType: hard + +"get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": + version: 6.0.1 + resolution: "get-stream@npm:6.0.1" + checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad + languageName: node + linkType: hard + +"get-symbol-description@npm:^1.0.0": + version: 1.0.0 + resolution: "get-symbol-description@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.1.1 + checksum: 9ceff8fe968f9270a37a1f73bf3f1f7bda69ca80f4f80850670e0e7b9444ff99323f7ac52f96567f8b5f5fbe7ac717a0d81d3407c7313e82810c6199446a5247 + languageName: node + linkType: hard + +"glob-parent@npm:^5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: ^4.0.1 + checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e + languageName: node + linkType: hard + +"glob-parent@npm:^6.0.2": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: ^4.0.3 + checksum: c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 + languageName: node + linkType: hard + +"glob-to-regexp@npm:^0.4.1": + version: 0.4.1 + resolution: "glob-to-regexp@npm:0.4.1" + checksum: e795f4e8f06d2a15e86f76e4d92751cf8bbfcf0157cea5c2f0f35678a8195a750b34096b1256e436f0cebc1883b5ff0888c47348443e69546a5a87f9e1eb1167 + languageName: node + linkType: hard + +"glob@npm:^10.2.2, glob@npm:^10.2.5": + version: 10.3.4 + resolution: "glob@npm:10.3.4" + dependencies: + foreground-child: ^3.1.0 + jackspeak: ^2.0.3 + minimatch: ^9.0.1 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + path-scurry: ^1.10.1 + bin: + glob: dist/cjs/src/bin.js + checksum: 176b97c124414401cb51329a93d2ba112cef8814adbed10348481916b9521b677773eee2691cb6b24d66632d8c8bb8913533f5ac4bfb2d0ef5454a1856082361 + languageName: node + linkType: hard + +"glob@npm:^7.1.3, glob@npm:^7.1.4": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: ^1.0.0 + inflight: ^1.0.4 + inherits: 2 + minimatch: ^3.1.1 + once: ^1.3.0 + path-is-absolute: ^1.0.0 + checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 + languageName: node + linkType: hard + +"glob@npm:~7.1.6": + version: 7.1.7 + resolution: "glob@npm:7.1.7" + dependencies: + fs.realpath: ^1.0.0 + inflight: ^1.0.4 + inherits: 2 + minimatch: ^3.0.4 + once: ^1.3.0 + path-is-absolute: ^1.0.0 + checksum: b61f48973bbdcf5159997b0874a2165db572b368b931135832599875919c237fc05c12984e38fe828e69aa8a921eb0e8a4997266211c517c9cfaae8a93988bb8 + languageName: node + linkType: hard + +"global-modules@npm:^2.0.0": + version: 2.0.0 + resolution: "global-modules@npm:2.0.0" + dependencies: + global-prefix: ^3.0.0 + checksum: d6197f25856c878c2fb5f038899f2dca7cbb2f7b7cf8999660c0104972d5cfa5c68b5a0a77fa8206bb536c3903a4615665acb9709b4d80846e1bb47eaef65430 + languageName: node + linkType: hard + +"global-prefix@npm:^3.0.0": + version: 3.0.0 + resolution: "global-prefix@npm:3.0.0" + dependencies: + ini: ^1.3.5 + kind-of: ^6.0.2 + which: ^1.3.1 + checksum: 8a82fc1d6f22c45484a4e34656cc91bf021a03e03213b0035098d605bfc612d7141f1e14a21097e8a0413b4884afd5b260df0b6a25605ce9d722e11f1df2881d + languageName: node + linkType: hard + +"globals@npm:^11.1.0": + version: 11.12.0 + resolution: "globals@npm:11.12.0" + checksum: 67051a45eca3db904aee189dfc7cd53c20c7d881679c93f6146ddd4c9f4ab2268e68a919df740d39c71f4445d2b38ee360fc234428baea1dbdfe68bbcb46979e + languageName: node + linkType: hard + +"globals@npm:^13.19.0": + version: 13.21.0 + resolution: "globals@npm:13.21.0" + dependencies: + type-fest: ^0.20.2 + checksum: 86c92ca8a04efd864c10852cd9abb1ebe6d447dcc72936783e66eaba1087d7dba5c9c3421a48d6ca722c319378754dbcc3f3f732dbe47592d7de908edf58a773 + languageName: node + linkType: hard + +"globalthis@npm:^1.0.3": + version: 1.0.3 + resolution: "globalthis@npm:1.0.3" + dependencies: + define-properties: ^1.1.3 + checksum: fbd7d760dc464c886d0196166d92e5ffb4c84d0730846d6621a39fbbc068aeeb9c8d1421ad330e94b7bca4bb4ea092f5f21f3d36077812af5d098b4dc006c998 + languageName: node + linkType: hard + +"globby@npm:^11.1.0": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: ^2.1.0 + dir-glob: ^3.0.1 + fast-glob: ^3.2.9 + ignore: ^5.2.0 + merge2: ^1.4.1 + slash: ^3.0.0 + checksum: b4be8885e0cfa018fc783792942d53926c35c50b3aefd3fdcfb9d22c627639dc26bd2327a40a0b74b074100ce95bb7187bfeae2f236856aa3de183af7a02aea6 + languageName: node + linkType: hard + +"globjoin@npm:^0.1.4": + version: 0.1.4 + resolution: "globjoin@npm:0.1.4" + checksum: 0a47d88d566122d9e42da946453ee38b398e0021515ac6a95d13f980ba8c1e42954e05ee26cfcbffce1ac1ee094d0524b16ce1dd874ca52408d6db5c6d39985b + languageName: node + linkType: hard + +"gopd@npm:^1.0.1": + version: 1.0.1 + resolution: "gopd@npm:1.0.1" + dependencies: + get-intrinsic: ^1.1.3 + checksum: a5ccfb8806e0917a94e0b3de2af2ea4979c1da920bc381667c260e00e7cafdbe844e2cb9c5bcfef4e5412e8bf73bab837285bc35c7ba73aaaf0134d4583393a6 + languageName: node + linkType: hard + +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 + languageName: node + linkType: hard + +"graphemer@npm:^1.4.0": + version: 1.4.0 + resolution: "graphemer@npm:1.4.0" + checksum: bab8f0be9b568857c7bec9fda95a89f87b783546d02951c40c33f84d05bb7da3fd10f863a9beb901463669b6583173a8c8cc6d6b306ea2b9b9d5d3d943c3a673 + languageName: node + linkType: hard + +"hard-rejection@npm:^2.1.0": + version: 2.1.0 + resolution: "hard-rejection@npm:2.1.0" + checksum: 7baaf80a0c7fff4ca79687b4060113f1529589852152fa935e6787a2bc96211e784ad4588fb3048136ff8ffc9dfcf3ae385314a5b24db32de20bea0d1597f9dc + languageName: node + linkType: hard + +"harmony-reflect@npm:^1.4.6": + version: 1.6.2 + resolution: "harmony-reflect@npm:1.6.2" + checksum: 2e5bae414cd2bfae5476147f9935dc69ee9b9a413206994dcb94c5b3208d4555da3d4313aff6fd14bd9991c1e3ef69cdda5c8fac1eb1d7afc064925839339b8c + languageName: node + linkType: hard + +"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": + version: 1.0.2 + resolution: "has-bigints@npm:1.0.2" + checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b + languageName: node + linkType: hard + +"has-flag@npm:^3.0.0": + version: 3.0.0 + resolution: "has-flag@npm:3.0.0" + checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad + languageName: node + linkType: hard + +"has-property-descriptors@npm:^1.0.0": + version: 1.0.0 + resolution: "has-property-descriptors@npm:1.0.0" + dependencies: + get-intrinsic: ^1.1.1 + checksum: a6d3f0a266d0294d972e354782e872e2fe1b6495b321e6ef678c9b7a06a40408a6891817350c62e752adced73a94ac903c54734fee05bf65b1905ee1368194bb + languageName: node + linkType: hard + +"has-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "has-proto@npm:1.0.1" + checksum: febc5b5b531de8022806ad7407935e2135f1cc9e64636c3916c6842bd7995994ca3b29871ecd7954bd35f9e2986c17b3b227880484d22259e2f8e6ce63fd383e + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": + version: 1.0.3 + resolution: "has-symbols@npm:1.0.3" + checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.0": + version: 1.0.0 + resolution: "has-tostringtag@npm:1.0.0" + dependencies: + has-symbols: ^1.0.2 + checksum: cc12eb28cb6ae22369ebaad3a8ab0799ed61270991be88f208d508076a1e99abe4198c965935ce85ea90b60c94ddda73693b0920b58e7ead048b4a391b502c1c + languageName: node + linkType: hard + +"has-unicode@npm:^2.0.1": + version: 2.0.1 + resolution: "has-unicode@npm:2.0.1" + checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 + languageName: node + linkType: hard + +"has@npm:^1.0.3": + version: 1.0.3 + resolution: "has@npm:1.0.3" + dependencies: + function-bind: ^1.1.1 + checksum: b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792 + languageName: node + linkType: hard + +"hosted-git-info@npm:^2.1.4": + version: 2.8.9 + resolution: "hosted-git-info@npm:2.8.9" + checksum: c955394bdab888a1e9bb10eb33029e0f7ce5a2ac7b3f158099dc8c486c99e73809dca609f5694b223920ca2174db33d32b12f9a2a47141dc59607c29da5a62dd + languageName: node + linkType: hard + +"hosted-git-info@npm:^4.0.1": + version: 4.1.0 + resolution: "hosted-git-info@npm:4.1.0" + dependencies: + lru-cache: ^6.0.0 + checksum: c3f87b3c2f7eb8c2748c8f49c0c2517c9a95f35d26f4bf54b2a8cba05d2e668f3753548b6ea366b18ec8dadb4e12066e19fa382a01496b0ffa0497eb23cbe461 + languageName: node + linkType: hard + +"html-encoding-sniffer@npm:^3.0.0": + version: 3.0.0 + resolution: "html-encoding-sniffer@npm:3.0.0" + dependencies: + whatwg-encoding: ^2.0.0 + checksum: 8d806aa00487e279e5ccb573366a951a9f68f65c90298eac9c3a2b440a7ffe46615aff2995a2f61c6746c639234e6179a97e18ca5ccbbf93d3725ef2099a4502 + languageName: node + linkType: hard + +"html-escaper@npm:^2.0.0": + version: 2.0.2 + resolution: "html-escaper@npm:2.0.2" + checksum: d2df2da3ad40ca9ee3a39c5cc6475ef67c8f83c234475f24d8e9ce0dc80a2c82df8e1d6fa78ddd1e9022a586ea1bd247a615e80a5cd9273d90111ddda7d9e974 + languageName: node + linkType: hard + +"html-tags@npm:^3.3.1": + version: 3.3.1 + resolution: "html-tags@npm:3.3.1" + checksum: b4ef1d5a76b678e43cce46e3783d563607b1d550cab30b4f511211564574770aa8c658a400b100e588bc60b8234e59b35ff72c7851cc28f3b5403b13a2c6cbce + languageName: node + linkType: hard + +"htmlparser2@npm:^6.0.0": + version: 6.1.0 + resolution: "htmlparser2@npm:6.1.0" + dependencies: + domelementtype: ^2.0.1 + domhandler: ^4.0.0 + domutils: ^2.5.2 + entities: ^2.0.0 + checksum: 81a7b3d9c3bb9acb568a02fc9b1b81ffbfa55eae7f1c41ae0bf840006d1dbf54cb3aa245b2553e2c94db674840a9f0fdad7027c9a9d01a062065314039058c4e + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.1.1": + version: 4.1.1 + resolution: "http-cache-semantics@npm:4.1.1" + checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^5.0.0": + version: 5.0.0 + resolution: "http-proxy-agent@npm:5.0.0" + dependencies: + "@tootallnate/once": 2 + agent-base: 6 + debug: 4 + checksum: e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^5.0.0, https-proxy-agent@npm:^5.0.1": + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" + dependencies: + agent-base: 6 + debug: 4 + checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 + languageName: node + linkType: hard + +"human-signals@npm:^2.1.0": + version: 2.1.0 + resolution: "human-signals@npm:2.1.0" + checksum: b87fd89fce72391625271454e70f67fe405277415b48bcc0117ca73d31fa23a4241787afdc8d67f5a116cf37258c052f59ea82daffa72364d61351423848e3b8 + languageName: node + linkType: hard + +"human-signals@npm:^4.3.0": + version: 4.3.1 + resolution: "human-signals@npm:4.3.1" + checksum: 6f12958df3f21b6fdaf02d90896c271df00636a31e2bbea05bddf817a35c66b38a6fdac5863e2df85bd52f34958997f1f50350ff97249e1dff8452865d5235d1 + languageName: node + linkType: hard + +"humanize-ms@npm:^1.2.1": + version: 1.2.1 + resolution: "humanize-ms@npm:1.2.1" + dependencies: + ms: ^2.0.0 + checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 + languageName: node + linkType: hard + +"iconv-lite@npm:0.6, iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: ">= 2.1.2 < 3.0.0" + checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf + languageName: node + linkType: hard + +"icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0": + version: 5.1.0 + resolution: "icss-utils@npm:5.1.0" + peerDependencies: + postcss: ^8.1.0 + checksum: 5c324d283552b1269cfc13a503aaaa172a280f914e5b81544f3803bc6f06a3b585fb79f66f7c771a2c052db7982c18bf92d001e3b47282e3abbbb4c4cc488d68 + languageName: node + linkType: hard + +"identity-obj-proxy@npm:^3.0.0": + version: 3.0.0 + resolution: "identity-obj-proxy@npm:3.0.0" + dependencies: + harmony-reflect: ^1.4.6 + checksum: 97559f8ea2aeaa1a880d279d8c49550dce01148321e00a2102cda5ddf9ce622fa1d7f3efc7bed63458af78889de888fdaebaf31c816312298bb3fdd0ef8aaf2c + languageName: node + linkType: hard + +"ignore@npm:^5.2.0, ignore@npm:^5.2.4": + version: 5.2.4 + resolution: "ignore@npm:5.2.4" + checksum: 3d4c309c6006e2621659311783eaea7ebcd41fe4ca1d78c91c473157ad6666a57a2df790fe0d07a12300d9aac2888204d7be8d59f9aaf665b1c7fcdb432517ef + languageName: node + linkType: hard + +"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": + version: 3.3.0 + resolution: "import-fresh@npm:3.3.0" + dependencies: + parent-module: ^1.0.0 + resolve-from: ^4.0.0 + checksum: 2cacfad06e652b1edc50be650f7ec3be08c5e5a6f6d12d035c440a42a8cc028e60a5b99ca08a77ab4d6b1346da7d971915828f33cdab730d3d42f08242d09baa + languageName: node + linkType: hard + +"import-lazy@npm:^4.0.0": + version: 4.0.0 + resolution: "import-lazy@npm:4.0.0" + checksum: 22f5e51702134aef78890156738454f620e5fe7044b204ebc057c614888a1dd6fdf2ede0fdcca44d5c173fd64f65c985f19a51775b06967ef58cc3d26898df07 + languageName: node + linkType: hard + +"import-local@npm:^3.0.2": + version: 3.1.0 + resolution: "import-local@npm:3.1.0" + dependencies: + pkg-dir: ^4.2.0 + resolve-cwd: ^3.0.0 + bin: + import-local-fixture: fixtures/cli.js + checksum: bfcdb63b5e3c0e245e347f3107564035b128a414c4da1172a20dc67db2504e05ede4ac2eee1252359f78b0bfd7b19ef180aec427c2fce6493ae782d73a04cddd + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 + languageName: node + linkType: hard + +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 + languageName: node + linkType: hard + +"indent-string@npm:^5.0.0": + version: 5.0.0 + resolution: "indent-string@npm:5.0.0" + checksum: e466c27b6373440e6d84fbc19e750219ce25865cb82d578e41a6053d727e5520dc5725217d6eb1cc76005a1bb1696a0f106d84ce7ebda3033b963a38583fb3b3 + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: ^1.3.0 + wrappy: 1 + checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:~2.0.3": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 + languageName: node + linkType: hard + +"inherits@npm:2.0.3": + version: 2.0.3 + resolution: "inherits@npm:2.0.3" + checksum: 78cb8d7d850d20a5e9a7f3620db31483aa00ad5f722ce03a55b110e5a723539b3716a3b463e2b96ce3fe286f33afc7c131fa2f91407528ba80cea98a7545d4c0 + languageName: node + linkType: hard + +"ini@npm:^1.3.5": + version: 1.3.8 + resolution: "ini@npm:1.3.8" + checksum: dfd98b0ca3a4fc1e323e38a6c8eb8936e31a97a918d3b377649ea15bdb15d481207a0dda1021efbd86b464cae29a0d33c1d7dcaf6c5672bee17fa849bc50a1b3 + languageName: node + linkType: hard + +"internal-slot@npm:^1.0.5": + version: 1.0.5 + resolution: "internal-slot@npm:1.0.5" + dependencies: + get-intrinsic: ^1.2.0 + has: ^1.0.3 + side-channel: ^1.0.4 + checksum: 97e84046bf9e7574d0956bd98d7162313ce7057883b6db6c5c7b5e5f05688864b0978ba07610c726d15d66544ffe4b1050107d93f8a39ebc59b15d8b429b497a + languageName: node + linkType: hard + +"internmap@npm:1 - 2": + version: 2.0.3 + resolution: "internmap@npm:2.0.3" + checksum: 7ca41ec6aba8f0072fc32fa8a023450a9f44503e2d8e403583c55714b25efd6390c38a87161ec456bf42d7bc83aab62eb28f5aef34876b1ac4e60693d5e1d241 + languageName: node + linkType: hard + +"interpret@npm:^3.1.1": + version: 3.1.1 + resolution: "interpret@npm:3.1.1" + checksum: 35cebcf48c7351130437596d9ab8c8fe131ce4038da4561e6d665f25640e0034702a031cf7e3a5cea60ac7ac548bf17465e0571ede126f3d3a6933152171ac82 + languageName: node + linkType: hard + +"ip@npm:^2.0.0": + version: 2.0.0 + resolution: "ip@npm:2.0.0" + checksum: cfcfac6b873b701996d71ec82a7dd27ba92450afdb421e356f44044ed688df04567344c36cbacea7d01b1c39a4c732dc012570ebe9bebfb06f27314bca625349 + languageName: node + linkType: hard + +"is-array-buffer@npm:^3.0.1, is-array-buffer@npm:^3.0.2": + version: 3.0.2 + resolution: "is-array-buffer@npm:3.0.2" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.2.0 + is-typed-array: ^1.1.10 + checksum: dcac9dda66ff17df9cabdc58214172bf41082f956eab30bb0d86bc0fab1e44b690fc8e1f855cf2481245caf4e8a5a006a982a71ddccec84032ed41f9d8da8c14 + languageName: node + linkType: hard + +"is-arrayish@npm:^0.2.1": + version: 0.2.1 + resolution: "is-arrayish@npm:0.2.1" + checksum: eef4417e3c10e60e2c810b6084942b3ead455af16c4509959a27e490e7aee87cfb3f38e01bbde92220b528a0ee1a18d52b787e1458ee86174d8c7f0e58cd488f + languageName: node + linkType: hard + +"is-bigint@npm:^1.0.1": + version: 1.0.4 + resolution: "is-bigint@npm:1.0.4" + dependencies: + has-bigints: ^1.0.1 + checksum: c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 + languageName: node + linkType: hard + +"is-boolean-object@npm:^1.1.0": + version: 1.1.2 + resolution: "is-boolean-object@npm:1.1.2" + dependencies: + call-bind: ^1.0.2 + has-tostringtag: ^1.0.0 + checksum: c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 + languageName: node + linkType: hard + +"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": + version: 1.2.7 + resolution: "is-callable@npm:1.2.7" + checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac + languageName: node + linkType: hard + +"is-core-module@npm:^2.13.0, is-core-module@npm:^2.5.0": + version: 2.13.0 + resolution: "is-core-module@npm:2.13.0" + dependencies: + has: ^1.0.3 + checksum: 053ab101fb390bfeb2333360fd131387bed54e476b26860dc7f5a700bbf34a0ec4454f7c8c4d43e8a0030957e4b3db6e16d35e1890ea6fb654c833095e040355 + languageName: node + linkType: hard + +"is-date-object@npm:^1.0.1": + version: 1.0.5 + resolution: "is-date-object@npm:1.0.5" + dependencies: + has-tostringtag: ^1.0.0 + checksum: baa9077cdf15eb7b58c79398604ca57379b2fc4cf9aa7a9b9e295278648f628c9b201400c01c5e0f7afae56507d741185730307cbe7cad3b9f90a77e5ee342fc + languageName: node + linkType: hard + +"is-docker@npm:^2.0.0": + version: 2.2.1 + resolution: "is-docker@npm:2.2.1" + bin: + is-docker: cli.js + checksum: 3fef7ddbf0be25958e8991ad941901bf5922ab2753c46980b60b05c1bf9c9c2402d35e6dc32e4380b980ef5e1970a5d9d5e5aa2e02d77727c3b6b5e918474c56 + languageName: node + linkType: hard + +"is-docker@npm:^3.0.0": + version: 3.0.0 + resolution: "is-docker@npm:3.0.0" + bin: + is-docker: cli.js + checksum: b698118f04feb7eaf3338922bd79cba064ea54a1c3db6ec8c0c8d8ee7613e7e5854d802d3ef646812a8a3ace81182a085dfa0a71cc68b06f3fa794b9783b3c90 + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 + languageName: node + linkType: hard + +"is-generator-fn@npm:^2.0.0": + version: 2.1.0 + resolution: "is-generator-fn@npm:2.1.0" + checksum: a6ad5492cf9d1746f73b6744e0c43c0020510b59d56ddcb78a91cbc173f09b5e6beff53d75c9c5a29feb618bfef2bf458e025ecf3a57ad2268e2fb2569f56215 + languageName: node + linkType: hard + +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: ^2.1.1 + checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 + languageName: node + linkType: hard + +"is-inside-container@npm:^1.0.0": + version: 1.0.0 + resolution: "is-inside-container@npm:1.0.0" + dependencies: + is-docker: ^3.0.0 + bin: + is-inside-container: cli.js + checksum: c50b75a2ab66ab3e8b92b3bc534e1ea72ca25766832c0623ac22d134116a98bcf012197d1caabe1d1c4bd5f84363d4aa5c36bb4b585fbcaf57be172cd10a1a03 + languageName: node + linkType: hard + +"is-lambda@npm:^1.0.1": + version: 1.0.1 + resolution: "is-lambda@npm:1.0.1" + checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 + languageName: node + linkType: hard + +"is-negative-zero@npm:^2.0.2": + version: 2.0.2 + resolution: "is-negative-zero@npm:2.0.2" + checksum: f3232194c47a549da60c3d509c9a09be442507616b69454716692e37ae9f37c4dea264fb208ad0c9f3efd15a796a46b79df07c7e53c6227c32170608b809149a + languageName: node + linkType: hard + +"is-number-object@npm:^1.0.4": + version: 1.0.7 + resolution: "is-number-object@npm:1.0.7" + dependencies: + has-tostringtag: ^1.0.0 + checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a + languageName: node + linkType: hard + +"is-path-inside@npm:^3.0.3": + version: 3.0.3 + resolution: "is-path-inside@npm:3.0.3" + checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 + languageName: node + linkType: hard + +"is-plain-obj@npm:^1.1.0": + version: 1.1.0 + resolution: "is-plain-obj@npm:1.1.0" + checksum: 0ee04807797aad50859652a7467481816cbb57e5cc97d813a7dcd8915da8195dc68c436010bf39d195226cde6a2d352f4b815f16f26b7bf486a5754290629931 + languageName: node + linkType: hard + +"is-plain-object@npm:^2.0.4": + version: 2.0.4 + resolution: "is-plain-object@npm:2.0.4" + dependencies: + isobject: ^3.0.1 + checksum: 2a401140cfd86cabe25214956ae2cfee6fbd8186809555cd0e84574f88de7b17abacb2e477a6a658fa54c6083ecbda1e6ae404c7720244cd198903848fca70ca + languageName: node + linkType: hard + +"is-plain-object@npm:^5.0.0": + version: 5.0.0 + resolution: "is-plain-object@npm:5.0.0" + checksum: e32d27061eef62c0847d303125440a38660517e586f2f3db7c9d179ae5b6674ab0f469d519b2e25c147a1a3bc87156d0d5f4d8821e0ce4a9ee7fe1fcf11ce45c + languageName: node + linkType: hard + +"is-potential-custom-element-name@npm:^1.0.1": + version: 1.0.1 + resolution: "is-potential-custom-element-name@npm:1.0.1" + checksum: ced7bbbb6433a5b684af581872afe0e1767e2d1146b2207ca0068a648fb5cab9d898495d1ac0583524faaf24ca98176a7d9876363097c2d14fee6dd324f3a1ab + languageName: node + linkType: hard + +"is-regex@npm:^1.1.4": + version: 1.1.4 + resolution: "is-regex@npm:1.1.4" + dependencies: + call-bind: ^1.0.2 + has-tostringtag: ^1.0.0 + checksum: 362399b33535bc8f386d96c45c9feb04cf7f8b41c182f54174c1a45c9abbbe5e31290bbad09a458583ff6bf3b2048672cdb1881b13289569a7c548370856a652 + languageName: node + linkType: hard + +"is-shared-array-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "is-shared-array-buffer@npm:1.0.2" + dependencies: + call-bind: ^1.0.2 + checksum: 9508929cf14fdc1afc9d61d723c6e8d34f5e117f0bffda4d97e7a5d88c3a8681f633a74f8e3ad1fe92d5113f9b921dc5ca44356492079612f9a247efbce7032a + languageName: node + linkType: hard + +"is-stream@npm:^2.0.0": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 + languageName: node + linkType: hard + +"is-stream@npm:^3.0.0": + version: 3.0.0 + resolution: "is-stream@npm:3.0.0" + checksum: 172093fe99119ffd07611ab6d1bcccfe8bc4aa80d864b15f43e63e54b7abc71e779acd69afdb854c4e2a67fdc16ae710e370eda40088d1cfc956a50ed82d8f16 + languageName: node + linkType: hard + +"is-string@npm:^1.0.5, is-string@npm:^1.0.7": + version: 1.0.7 + resolution: "is-string@npm:1.0.7" + dependencies: + has-tostringtag: ^1.0.0 + checksum: 323b3d04622f78d45077cf89aab783b2f49d24dc641aa89b5ad1a72114cfeff2585efc8c12ef42466dff32bde93d839ad321b26884cf75e5a7892a938b089989 + languageName: node + linkType: hard + +"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": + version: 1.0.4 + resolution: "is-symbol@npm:1.0.4" + dependencies: + has-symbols: ^1.0.2 + checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 + languageName: node + linkType: hard + +"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.9": + version: 1.1.12 + resolution: "is-typed-array@npm:1.1.12" + dependencies: + which-typed-array: ^1.1.11 + checksum: 4c89c4a3be07186caddadf92197b17fda663a9d259ea0d44a85f171558270d36059d1c386d34a12cba22dfade5aba497ce22778e866adc9406098c8fc4771796 + languageName: node + linkType: hard + +"is-weakref@npm:^1.0.2": + version: 1.0.2 + resolution: "is-weakref@npm:1.0.2" + dependencies: + call-bind: ^1.0.2 + checksum: 95bd9a57cdcb58c63b1c401c60a474b0f45b94719c30f548c891860f051bc2231575c290a6b420c6bc6e7ed99459d424c652bd5bf9a1d5259505dc35b4bf83de + languageName: node + linkType: hard + +"is-wsl@npm:^2.2.0": + version: 2.2.0 + resolution: "is-wsl@npm:2.2.0" + dependencies: + is-docker: ^2.0.0 + checksum: 20849846ae414997d290b75e16868e5261e86ff5047f104027026fd61d8b5a9b0b3ade16239f35e1a067b3c7cc02f70183cb661010ed16f4b6c7c93dad1b19d8 + languageName: node + linkType: hard + +"isarray@npm:^2.0.5": + version: 2.0.5 + resolution: "isarray@npm:2.0.5" + checksum: bd5bbe4104438c4196ba58a54650116007fa0262eccef13a4c55b2e09a5b36b59f1e75b9fcc49883dd9d4953892e6fc007eef9e9155648ceea036e184b0f930a + languageName: node + linkType: hard + +"isarray@npm:~1.0.0": + version: 1.0.0 + resolution: "isarray@npm:1.0.0" + checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 + languageName: node + linkType: hard + +"isobject@npm:^3.0.1": + version: 3.0.1 + resolution: "isobject@npm:3.0.1" + checksum: db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703 + languageName: node + linkType: hard + +"isomorphic.js@npm:^0.2.4": + version: 0.2.5 + resolution: "isomorphic.js@npm:0.2.5" + checksum: d8d1b083f05f3c337a06628b982ac3ce6db953bbef14a9de8ad49131250c3592f864b73c12030fdc9ef138ce97b76ef55c7d96a849561ac215b1b4b9d301c8e9 + languageName: node + linkType: hard + +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": + version: 3.2.0 + resolution: "istanbul-lib-coverage@npm:3.2.0" + checksum: a2a545033b9d56da04a8571ed05c8120bf10e9bce01cf8633a3a2b0d1d83dff4ac4fe78d6d5673c27fc29b7f21a41d75f83a36be09f82a61c367b56aa73c1ff9 + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^5.0.4": + version: 5.2.1 + resolution: "istanbul-lib-instrument@npm:5.2.1" + dependencies: + "@babel/core": ^7.12.3 + "@babel/parser": ^7.14.7 + "@istanbuljs/schema": ^0.1.2 + istanbul-lib-coverage: ^3.2.0 + semver: ^6.3.0 + checksum: bf16f1803ba5e51b28bbd49ed955a736488381e09375d830e42ddeb403855b2006f850711d95ad726f2ba3f1ae8e7366de7e51d2b9ac67dc4d80191ef7ddf272 + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^6.0.0": + version: 6.0.0 + resolution: "istanbul-lib-instrument@npm:6.0.0" + dependencies: + "@babel/core": ^7.12.3 + "@babel/parser": ^7.14.7 + "@istanbuljs/schema": ^0.1.2 + istanbul-lib-coverage: ^3.2.0 + semver: ^7.5.4 + checksum: b9dc3723a769e65dbe1b912f935088ffc07cf393fa78a3ce79022c91aabb0ad01405ffd56083cdd822e514798e9daae3ea7bfe85633b094ecb335d28eb0a3f97 + languageName: node + linkType: hard + +"istanbul-lib-report@npm:^3.0.0": + version: 3.0.1 + resolution: "istanbul-lib-report@npm:3.0.1" + dependencies: + istanbul-lib-coverage: ^3.0.0 + make-dir: ^4.0.0 + supports-color: ^7.1.0 + checksum: fd17a1b879e7faf9bb1dc8f80b2a16e9f5b7b8498fe6ed580a618c34df0bfe53d2abd35bf8a0a00e628fb7405462576427c7df20bbe4148d19c14b431c974b21 + languageName: node + linkType: hard + +"istanbul-lib-source-maps@npm:^4.0.0": + version: 4.0.1 + resolution: "istanbul-lib-source-maps@npm:4.0.1" + dependencies: + debug: ^4.1.1 + istanbul-lib-coverage: ^3.0.0 + source-map: ^0.6.1 + checksum: 21ad3df45db4b81852b662b8d4161f6446cd250c1ddc70ef96a585e2e85c26ed7cd9c2a396a71533cfb981d1a645508bc9618cae431e55d01a0628e7dec62ef2 + languageName: node + linkType: hard + +"istanbul-reports@npm:^3.1.3": + version: 3.1.6 + resolution: "istanbul-reports@npm:3.1.6" + dependencies: + html-escaper: ^2.0.0 + istanbul-lib-report: ^3.0.0 + checksum: 44c4c0582f287f02341e9720997f9e82c071627e1e862895745d5f52ec72c9b9f38e1d12370015d2a71dcead794f34c7732aaef3fab80a24bc617a21c3d911d6 + languageName: node + linkType: hard + +"jackspeak@npm:^2.0.3": + version: 2.3.3 + resolution: "jackspeak@npm:2.3.3" + dependencies: + "@isaacs/cliui": ^8.0.2 + "@pkgjs/parseargs": ^0.11.0 + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 4313a7c0cc44c7753c4cb9869935f0b06f4cf96827515f63f58ff46b3d2f6e29aba6b3b5151778397c3f5ae67ef8bfc48871967bd10343c27e90cff198ec7808 + languageName: node + linkType: hard + +"jest-changed-files@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-changed-files@npm:29.7.0" + dependencies: + execa: ^5.0.0 + jest-util: ^29.7.0 + p-limit: ^3.1.0 + checksum: 963e203893c396c5dfc75e00a49426688efea7361b0f0e040035809cecd2d46b3c01c02be2d9e8d38b1138357d2de7719ea5b5be21f66c10f2e9685a5a73bb99 + languageName: node + linkType: hard + +"jest-circus@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-circus@npm:29.7.0" + dependencies: + "@jest/environment": ^29.7.0 + "@jest/expect": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" + chalk: ^4.0.0 + co: ^4.6.0 + dedent: ^1.0.0 + is-generator-fn: ^2.0.0 + jest-each: ^29.7.0 + jest-matcher-utils: ^29.7.0 + jest-message-util: ^29.7.0 + jest-runtime: ^29.7.0 + jest-snapshot: ^29.7.0 + jest-util: ^29.7.0 + p-limit: ^3.1.0 + pretty-format: ^29.7.0 + pure-rand: ^6.0.0 + slash: ^3.0.0 + stack-utils: ^2.0.3 + checksum: 349437148924a5a109c9b8aad6d393a9591b4dac1918fc97d81b7fc515bc905af9918495055071404af1fab4e48e4b04ac3593477b1d5dcf48c4e71b527c70a7 + languageName: node + linkType: hard + +"jest-cli@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-cli@npm:29.7.0" + dependencies: + "@jest/core": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/types": ^29.6.3 + chalk: ^4.0.0 + create-jest: ^29.7.0 + exit: ^0.1.2 + import-local: ^3.0.2 + jest-config: ^29.7.0 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 + yargs: ^17.3.1 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 664901277a3f5007ea4870632ed6e7889db9da35b2434e7cb488443e6bf5513889b344b7fddf15112135495b9875892b156faeb2d7391ddb9e2a849dcb7b6c36 + languageName: node + linkType: hard + +"jest-config@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-config@npm:29.7.0" + dependencies: + "@babel/core": ^7.11.6 + "@jest/test-sequencer": ^29.7.0 + "@jest/types": ^29.6.3 + babel-jest: ^29.7.0 + chalk: ^4.0.0 + ci-info: ^3.2.0 + deepmerge: ^4.2.2 + glob: ^7.1.3 + graceful-fs: ^4.2.9 + jest-circus: ^29.7.0 + jest-environment-node: ^29.7.0 + jest-get-type: ^29.6.3 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.7.0 + jest-runner: ^29.7.0 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 + micromatch: ^4.0.4 + parse-json: ^5.2.0 + pretty-format: ^29.7.0 + slash: ^3.0.0 + strip-json-comments: ^3.1.1 + peerDependencies: + "@types/node": "*" + ts-node: ">=9.0.0" + peerDependenciesMeta: + "@types/node": + optional: true + ts-node: + optional: true + checksum: 4cabf8f894c180cac80b7df1038912a3fc88f96f2622de33832f4b3314f83e22b08fb751da570c0ab2b7988f21604bdabade95e3c0c041068ac578c085cf7dff + languageName: node + linkType: hard + +"jest-diff@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-diff@npm:29.7.0" + dependencies: + chalk: ^4.0.0 + diff-sequences: ^29.6.3 + jest-get-type: ^29.6.3 + pretty-format: ^29.7.0 + checksum: 08e24a9dd43bfba1ef07a6374e5af138f53137b79ec3d5cc71a2303515335898888fa5409959172e1e05de966c9e714368d15e8994b0af7441f0721ee8e1bb77 + languageName: node + linkType: hard + +"jest-docblock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-docblock@npm:29.7.0" + dependencies: + detect-newline: ^3.0.0 + checksum: 66390c3e9451f8d96c5da62f577a1dad701180cfa9b071c5025acab2f94d7a3efc2515cfa1654ebe707213241541ce9c5530232cdc8017c91ed64eea1bd3b192 + languageName: node + linkType: hard + +"jest-each@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-each@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + chalk: ^4.0.0 + jest-get-type: ^29.6.3 + jest-util: ^29.7.0 + pretty-format: ^29.7.0 + checksum: e88f99f0184000fc8813f2a0aa79e29deeb63700a3b9b7928b8a418d7d93cd24933608591dbbdea732b473eb2021c72991b5cc51a17966842841c6e28e6f691c + languageName: node + linkType: hard + +"jest-environment-jsdom@npm:^29.3.0": + version: 29.7.0 + resolution: "jest-environment-jsdom@npm:29.7.0" + dependencies: + "@jest/environment": ^29.7.0 + "@jest/fake-timers": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/jsdom": ^20.0.0 + "@types/node": "*" + jest-mock: ^29.7.0 + jest-util: ^29.7.0 + jsdom: ^20.0.0 + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + checksum: 559aac134c196fccc1dfc794d8fc87377e9f78e894bb13012b0831d88dec0abd7ece99abec69da564b8073803be4f04a9eb4f4d1bb80e29eec0cb252c254deb8 + languageName: node + linkType: hard + +"jest-environment-node@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-environment-node@npm:29.7.0" + dependencies: + "@jest/environment": ^29.7.0 + "@jest/fake-timers": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" + jest-mock: ^29.7.0 + jest-util: ^29.7.0 + checksum: 501a9966292cbe0ca3f40057a37587cb6def25e1e0c5e39ac6c650fe78d3c70a2428304341d084ac0cced5041483acef41c477abac47e9a290d5545fd2f15646 + languageName: node + linkType: hard + +"jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: 88ac9102d4679d768accae29f1e75f592b760b44277df288ad76ce5bf038c3f5ce3719dea8aa0f035dac30e9eb034b848ce716b9183ad7cc222d029f03e92205 + languageName: node + linkType: hard + +"jest-haste-map@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-haste-map@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + "@types/graceful-fs": ^4.1.3 + "@types/node": "*" + anymatch: ^3.0.3 + fb-watchman: ^2.0.0 + fsevents: ^2.3.2 + graceful-fs: ^4.2.9 + jest-regex-util: ^29.6.3 + jest-util: ^29.7.0 + jest-worker: ^29.7.0 + micromatch: ^4.0.4 + walker: ^1.0.8 + dependenciesMeta: + fsevents: + optional: true + checksum: c2c8f2d3e792a963940fbdfa563ce14ef9e14d4d86da645b96d3cd346b8d35c5ce0b992ee08593939b5f718cf0a1f5a90011a056548a1dbf58397d4356786f01 + languageName: node + linkType: hard + +"jest-junit@npm:^15.0.0": + version: 15.0.0 + resolution: "jest-junit@npm:15.0.0" + dependencies: + mkdirp: ^1.0.4 + strip-ansi: ^6.0.1 + uuid: ^8.3.2 + xml: ^1.0.1 + checksum: e8fe4d2f2ab843383ac41820a6fe495739d154ec435cd44ba590b44ec7fd62095676f3eef13f98392f81d4a3727ea58b4f4fad231fe367ac31243952b9ad716f + languageName: node + linkType: hard + +"jest-leak-detector@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-leak-detector@npm:29.7.0" + dependencies: + jest-get-type: ^29.6.3 + pretty-format: ^29.7.0 + checksum: e3950e3ddd71e1d0c22924c51a300a1c2db6cf69ec1e51f95ccf424bcc070f78664813bef7aed4b16b96dfbdeea53fe358f8aeaaea84346ae15c3735758f1605 + languageName: node + linkType: hard + +"jest-matcher-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-matcher-utils@npm:29.7.0" + dependencies: + chalk: ^4.0.0 + jest-diff: ^29.7.0 + jest-get-type: ^29.6.3 + pretty-format: ^29.7.0 + checksum: d7259e5f995d915e8a37a8fd494cb7d6af24cd2a287b200f831717ba0d015190375f9f5dc35393b8ba2aae9b2ebd60984635269c7f8cff7d85b077543b7744cd + languageName: node + linkType: hard + +"jest-message-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-message-util@npm:29.7.0" + dependencies: + "@babel/code-frame": ^7.12.13 + "@jest/types": ^29.6.3 + "@types/stack-utils": ^2.0.0 + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + micromatch: ^4.0.4 + pretty-format: ^29.7.0 + slash: ^3.0.0 + stack-utils: ^2.0.3 + checksum: a9d025b1c6726a2ff17d54cc694de088b0489456c69106be6b615db7a51b7beb66788bea7a59991a019d924fbf20f67d085a445aedb9a4d6760363f4d7d09930 + languageName: node + linkType: hard + +"jest-mock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-mock@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + "@types/node": "*" + jest-util: ^29.7.0 + checksum: 81ba9b68689a60be1482212878973700347cb72833c5e5af09895882b9eb5c4e02843a1bbdf23f94c52d42708bab53a30c45a3482952c9eec173d1eaac5b86c5 + languageName: node + linkType: hard + +"jest-pnp-resolver@npm:^1.2.2": + version: 1.2.3 + resolution: "jest-pnp-resolver@npm:1.2.3" + peerDependencies: + jest-resolve: "*" + peerDependenciesMeta: + jest-resolve: + optional: true + checksum: db1a8ab2cb97ca19c01b1cfa9a9c8c69a143fde833c14df1fab0766f411b1148ff0df878adea09007ac6a2085ec116ba9a996a6ad104b1e58c20adbf88eed9b2 + languageName: node + linkType: hard + +"jest-regex-util@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-regex-util@npm:29.6.3" + checksum: 0518beeb9bf1228261695e54f0feaad3606df26a19764bc19541e0fc6e2a3737191904607fb72f3f2ce85d9c16b28df79b7b1ec9443aa08c3ef0e9efda6f8f2a + languageName: node + linkType: hard + +"jest-resolve-dependencies@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve-dependencies@npm:29.7.0" + dependencies: + jest-regex-util: ^29.6.3 + jest-snapshot: ^29.7.0 + checksum: aeb75d8150aaae60ca2bb345a0d198f23496494677cd6aefa26fc005faf354061f073982175daaf32b4b9d86b26ca928586344516e3e6969aa614cb13b883984 + languageName: node + linkType: hard + +"jest-resolve@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve@npm:29.7.0" + dependencies: + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.7.0 + jest-pnp-resolver: ^1.2.2 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 + resolve: ^1.20.0 + resolve.exports: ^2.0.0 + slash: ^3.0.0 + checksum: 0ca218e10731aa17920526ec39deaec59ab9b966237905ffc4545444481112cd422f01581230eceb7e82d86f44a543d520a71391ec66e1b4ef1a578bd5c73487 + languageName: node + linkType: hard + +"jest-runner@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runner@npm:29.7.0" + dependencies: + "@jest/console": ^29.7.0 + "@jest/environment": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" + chalk: ^4.0.0 + emittery: ^0.13.1 + graceful-fs: ^4.2.9 + jest-docblock: ^29.7.0 + jest-environment-node: ^29.7.0 + jest-haste-map: ^29.7.0 + jest-leak-detector: ^29.7.0 + jest-message-util: ^29.7.0 + jest-resolve: ^29.7.0 + jest-runtime: ^29.7.0 + jest-util: ^29.7.0 + jest-watcher: ^29.7.0 + jest-worker: ^29.7.0 + p-limit: ^3.1.0 + source-map-support: 0.5.13 + checksum: f0405778ea64812bf9b5c50b598850d94ccf95d7ba21f090c64827b41decd680ee19fcbb494007cdd7f5d0d8906bfc9eceddd8fa583e753e736ecd462d4682fb + languageName: node + linkType: hard + +"jest-runtime@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runtime@npm:29.7.0" + dependencies: + "@jest/environment": ^29.7.0 + "@jest/fake-timers": ^29.7.0 + "@jest/globals": ^29.7.0 + "@jest/source-map": ^29.6.3 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" + chalk: ^4.0.0 + cjs-module-lexer: ^1.0.0 + collect-v8-coverage: ^1.0.0 + glob: ^7.1.3 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.7.0 + jest-message-util: ^29.7.0 + jest-mock: ^29.7.0 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.7.0 + jest-snapshot: ^29.7.0 + jest-util: ^29.7.0 + slash: ^3.0.0 + strip-bom: ^4.0.0 + checksum: d19f113d013e80691e07047f68e1e3448ef024ff2c6b586ce4f90cd7d4c62a2cd1d460110491019719f3c59bfebe16f0e201ed005ef9f80e2cf798c374eed54e + languageName: node + linkType: hard + +"jest-snapshot@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-snapshot@npm:29.7.0" + dependencies: + "@babel/core": ^7.11.6 + "@babel/generator": ^7.7.2 + "@babel/plugin-syntax-jsx": ^7.7.2 + "@babel/plugin-syntax-typescript": ^7.7.2 + "@babel/types": ^7.3.3 + "@jest/expect-utils": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 + babel-preset-current-node-syntax: ^1.0.0 + chalk: ^4.0.0 + expect: ^29.7.0 + graceful-fs: ^4.2.9 + jest-diff: ^29.7.0 + jest-get-type: ^29.6.3 + jest-matcher-utils: ^29.7.0 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 + natural-compare: ^1.4.0 + pretty-format: ^29.7.0 + semver: ^7.5.3 + checksum: 86821c3ad0b6899521ce75ee1ae7b01b17e6dfeff9166f2cf17f012e0c5d8c798f30f9e4f8f7f5bed01ea7b55a6bc159f5eda778311162cbfa48785447c237ad + languageName: node + linkType: hard + +"jest-util@npm:^29.0.0, jest-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-util@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + "@types/node": "*" + chalk: ^4.0.0 + ci-info: ^3.2.0 + graceful-fs: ^4.2.9 + picomatch: ^2.2.3 + checksum: 042ab4980f4ccd4d50226e01e5c7376a8556b472442ca6091a8f102488c0f22e6e8b89ea874111d2328a2080083bf3225c86f3788c52af0bd0345a00eb57a3ca + languageName: node + linkType: hard + +"jest-validate@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-validate@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + camelcase: ^6.2.0 + chalk: ^4.0.0 + jest-get-type: ^29.6.3 + leven: ^3.1.0 + pretty-format: ^29.7.0 + checksum: 191fcdc980f8a0de4dbdd879fa276435d00eb157a48683af7b3b1b98b0f7d9de7ffe12689b617779097ff1ed77601b9f7126b0871bba4f776e222c40f62e9dae + languageName: node + linkType: hard + +"jest-watcher@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-watcher@npm:29.7.0" + dependencies: + "@jest/test-result": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" + ansi-escapes: ^4.2.1 + chalk: ^4.0.0 + emittery: ^0.13.1 + jest-util: ^29.7.0 + string-length: ^4.0.1 + checksum: 67e6e7fe695416deff96b93a14a561a6db69389a0667e9489f24485bb85e5b54e12f3b2ba511ec0b777eca1e727235b073e3ebcdd473d68888650489f88df92f + languageName: node + linkType: hard + +"jest-worker@npm:^27.4.5": + version: 27.5.1 + resolution: "jest-worker@npm:27.5.1" + dependencies: + "@types/node": "*" + merge-stream: ^2.0.0 + supports-color: ^8.0.0 + checksum: 98cd68b696781caed61c983a3ee30bf880b5bd021c01d98f47b143d4362b85d0737f8523761e2713d45e18b4f9a2b98af1eaee77afade4111bb65c77d6f7c980 + languageName: node + linkType: hard + +"jest-worker@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-worker@npm:29.7.0" + dependencies: + "@types/node": "*" + jest-util: ^29.7.0 + merge-stream: ^2.0.0 + supports-color: ^8.0.0 + checksum: 30fff60af49675273644d408b650fc2eb4b5dcafc5a0a455f238322a8f9d8a98d847baca9d51ff197b6747f54c7901daa2287799230b856a0f48287d131f8c13 + languageName: node + linkType: hard + +"jest@npm:^29.2.0": + version: 29.7.0 + resolution: "jest@npm:29.7.0" + dependencies: + "@jest/core": ^29.7.0 + "@jest/types": ^29.6.3 + import-local: ^3.0.2 + jest-cli: ^29.7.0 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 17ca8d67504a7dbb1998cf3c3077ec9031ba3eb512da8d71cb91bcabb2b8995c4e4b292b740cb9bf1cbff5ce3e110b3f7c777b0cefb6f41ab05445f248d0ee0b + languageName: node + linkType: hard + +"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 + languageName: node + linkType: hard + +"js-yaml@npm:^3.13.1": + version: 3.14.1 + resolution: "js-yaml@npm:3.14.1" + dependencies: + argparse: ^1.0.7 + esprima: ^4.0.0 + bin: + js-yaml: bin/js-yaml.js + checksum: bef146085f472d44dee30ec34e5cf36bf89164f5d585435a3d3da89e52622dff0b188a580e4ad091c3341889e14cb88cac6e4deb16dc5b1e9623bb0601fc255c + languageName: node + linkType: hard + +"js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" + dependencies: + argparse: ^2.0.1 + bin: + js-yaml: bin/js-yaml.js + checksum: c7830dfd456c3ef2c6e355cc5a92e6700ceafa1d14bba54497b34a99f0376cecbb3e9ac14d3e5849b426d5a5140709a66237a8c991c675431271c4ce5504151a + languageName: node + linkType: hard + +"jsdom@npm:^20.0.0": + version: 20.0.3 + resolution: "jsdom@npm:20.0.3" + dependencies: + abab: ^2.0.6 + acorn: ^8.8.1 + acorn-globals: ^7.0.0 + cssom: ^0.5.0 + cssstyle: ^2.3.0 + data-urls: ^3.0.2 + decimal.js: ^10.4.2 + domexception: ^4.0.0 + escodegen: ^2.0.0 + form-data: ^4.0.0 + html-encoding-sniffer: ^3.0.0 + http-proxy-agent: ^5.0.0 + https-proxy-agent: ^5.0.1 + is-potential-custom-element-name: ^1.0.1 + nwsapi: ^2.2.2 + parse5: ^7.1.1 + saxes: ^6.0.0 + symbol-tree: ^3.2.4 + tough-cookie: ^4.1.2 + w3c-xmlserializer: ^4.0.0 + webidl-conversions: ^7.0.0 + whatwg-encoding: ^2.0.0 + whatwg-mimetype: ^3.0.0 + whatwg-url: ^11.0.0 + ws: ^8.11.0 + xml-name-validator: ^4.0.0 + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + checksum: 6e2ae21db397133a061b270c26d2dbc0b9051733ea3b896a7ece78d79f475ff0974f766a413c1198a79c793159119169f2335ddb23150348fbfdcfa6f3105536 + languageName: node + linkType: hard + +"jsesc@npm:^2.5.1": + version: 2.5.2 + resolution: "jsesc@npm:2.5.2" + bin: + jsesc: bin/jsesc + checksum: 4dc190771129e12023f729ce20e1e0bfceac84d73a85bc3119f7f938843fe25a4aeccb54b6494dce26fcf263d815f5f31acdefac7cc9329efb8422a4f4d9fa9d + languageName: node + linkType: hard + +"jsesc@npm:~0.5.0": + version: 0.5.0 + resolution: "jsesc@npm:0.5.0" + bin: + jsesc: bin/jsesc + checksum: b8b44cbfc92f198ad972fba706ee6a1dfa7485321ee8c0b25f5cedd538dcb20cde3197de16a7265430fce8277a12db066219369e3d51055038946039f6e20e17 + languageName: node + linkType: hard + +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 + languageName: node + linkType: hard + +"json-parse-better-errors@npm:^1.0.1": + version: 1.0.2 + resolution: "json-parse-better-errors@npm:1.0.2" + checksum: ff2b5ba2a70e88fd97a3cb28c1840144c5ce8fae9cbeeddba15afa333a5c407cf0e42300cd0a2885dbb055227fe68d405070faad941beeffbfde9cf3b2c78c5d + languageName: node + linkType: hard + +"json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": + version: 2.3.1 + resolution: "json-parse-even-better-errors@npm:2.3.1" + checksum: 798ed4cf3354a2d9ccd78e86d2169515a0097a5c133337807cdf7f1fc32e1391d207ccfc276518cc1d7d8d4db93288b8a50ba4293d212ad1336e52a8ec0a941f + languageName: node + linkType: hard + +"json-schema-compare@npm:^0.2.2": + version: 0.2.2 + resolution: "json-schema-compare@npm:0.2.2" + dependencies: + lodash: ^4.17.4 + checksum: dd6f2173857c8e3b77d6ebdfa05bd505bba5b08709ab46b532722f5d1c33b5fee1fc8f3c97d0c0d011db25f9f3b0baf7ab783bb5f55c32abd9f1201760e43c2c + languageName: node + linkType: hard + +"json-schema-merge-allof@npm:^0.8.1": + version: 0.8.1 + resolution: "json-schema-merge-allof@npm:0.8.1" + dependencies: + compute-lcm: ^1.1.2 + json-schema-compare: ^0.2.2 + lodash: ^4.17.20 + checksum: 82700f6ac77351959138d6b153d77375a8c29cf48d907241b85c8292dd77aabd8cb816400f2b0d17062c4ccc8893832ec4f664ab9c814927ef502e7a595ea873 + languageName: node + linkType: hard + +"json-schema-traverse@npm:^0.4.1": + version: 0.4.1 + resolution: "json-schema-traverse@npm:0.4.1" + checksum: 7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b + languageName: node + linkType: hard + +"json-schema-traverse@npm:^1.0.0": + version: 1.0.0 + resolution: "json-schema-traverse@npm:1.0.0" + checksum: 02f2f466cdb0362558b2f1fd5e15cce82ef55d60cd7f8fa828cf35ba74330f8d767fcae5c5c2adb7851fa811766c694b9405810879bc4e1ddd78a7c0e03658ad + languageName: node + linkType: hard + +"json-stable-stringify-without-jsonify@npm:^1.0.1": + version: 1.0.1 + resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" + checksum: cff44156ddce9c67c44386ad5cddf91925fe06b1d217f2da9c4910d01f358c6e3989c4d5a02683c7a5667f9727ff05831f7aa8ae66c8ff691c556f0884d49215 + languageName: node + linkType: hard + +"json-stringify-pretty-compact@npm:~3.0.0": + version: 3.0.0 + resolution: "json-stringify-pretty-compact@npm:3.0.0" + checksum: 01ab5c5c8260299414868d96db97f53aef93c290fe469edd9a1363818e795006e01c952fa2fd7b47cbbab506d5768998eccc25e1da4fa2ccfebd1788c6098791 + languageName: node + linkType: hard + +"json5@npm:^2.1.2, json5@npm:^2.2.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 2a7436a93393830bce797d4626275152e37e877b265e94ca69c99e3d20c2b9dab021279146a39cdb700e71b2dd32a4cebd1514cd57cee102b1af906ce5040349 + languageName: node + linkType: hard + +"jsonfile@npm:^6.0.1": + version: 6.1.0 + resolution: "jsonfile@npm:6.1.0" + dependencies: + graceful-fs: ^4.1.6 + universalify: ^2.0.0 + dependenciesMeta: + graceful-fs: + optional: true + checksum: 7af3b8e1ac8fe7f1eccc6263c6ca14e1966fcbc74b618d3c78a0a2075579487547b94f72b7a1114e844a1e15bb00d440e5d1720bfc4612d790a6f285d5ea8354 + languageName: node + linkType: hard + +"jsonpointer@npm:^5.0.1": + version: 5.0.1 + resolution: "jsonpointer@npm:5.0.1" + checksum: 0b40f712900ad0c846681ea2db23b6684b9d5eedf55807b4708c656f5894b63507d0e28ae10aa1bddbea551241035afe62b6df0800fc94c2e2806a7f3adecd7c + languageName: node + linkType: hard + +"keyv@npm:^4.5.3": + version: 4.5.3 + resolution: "keyv@npm:4.5.3" + dependencies: + json-buffer: 3.0.1 + checksum: 3ffb4d5b72b6b4b4af443bbb75ca2526b23c750fccb5ac4c267c6116888b4b65681015c2833cb20d26cf3e6e32dac6b988c77f7f022e1a571b7d90f1442257da + languageName: node + linkType: hard + +"kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": + version: 6.0.3 + resolution: "kind-of@npm:6.0.3" + checksum: 3ab01e7b1d440b22fe4c31f23d8d38b4d9b91d9f291df683476576493d5dfd2e03848a8b05813dd0c3f0e835bc63f433007ddeceb71f05cb25c45ae1b19c6d3b + languageName: node + linkType: hard + +"kleur@npm:^3.0.3": + version: 3.0.3 + resolution: "kleur@npm:3.0.3" + checksum: df82cd1e172f957bae9c536286265a5cdbd5eeca487cb0a3b2a7b41ef959fc61f8e7c0e9aeea9c114ccf2c166b6a8dd45a46fd619c1c569d210ecd2765ad5169 + languageName: node + linkType: hard + +"known-css-properties@npm:^0.28.0": + version: 0.28.0 + resolution: "known-css-properties@npm:0.28.0" + checksum: c9e0d6948e31386e872d348eb955e9db80edd58f9d7f7fc9b072180bfb26708a629d5942d4478f66fc766fb913c4552a220950730cef85f8c3bc9830e33b00c8 + languageName: node + linkType: hard + +"leven@npm:^3.1.0": + version: 3.1.0 + resolution: "leven@npm:3.1.0" + checksum: 638401d534585261b6003db9d99afd244dfe82d75ddb6db5c0df412842d5ab30b2ef18de471aaec70fe69a46f17b4ae3c7f01d8a4e6580ef7adb9f4273ad1e55 + languageName: node + linkType: hard + +"levn@npm:^0.4.1": + version: 0.4.1 + resolution: "levn@npm:0.4.1" + dependencies: + prelude-ls: ^1.2.1 + type-check: ~0.4.0 + checksum: 12c5021c859bd0f5248561bf139121f0358285ec545ebf48bb3d346820d5c61a4309535c7f387ed7d84361cf821e124ce346c6b7cef8ee09a67c1473b46d0fc4 + languageName: node + linkType: hard + +"lib0@npm:^0.2.42, lib0@npm:^0.2.74": + version: 0.2.84 + resolution: "lib0@npm:0.2.84" + dependencies: + isomorphic.js: ^0.2.4 + bin: + 0gentesthtml: bin/gentesthtml.js + 0serve: bin/0serve.js + checksum: 4403435191dec226e3c61aac994cd1f4dbb0c4988e2f600fb5a398d2f99ea85dc060db9756237d9084a936ffdbec141fc13e8e8e1c53db795fb9f7e7602b9c38 + languageName: node + linkType: hard + +"license-webpack-plugin@npm:^2.3.14": + version: 2.3.21 + resolution: "license-webpack-plugin@npm:2.3.21" + dependencies: + "@types/webpack-sources": ^0.1.5 + webpack-sources: ^1.2.0 + peerDependenciesMeta: + webpack: + optional: true + checksum: 6208bd2060d200fbffbcc89702c929d50c5a4a3f2158b046cf813b3f7f728bbbe4611b9fea2d67843bb5e7d64ad9122cc368a19ac73f5c4ad41765e6283bdc0c + languageName: node + linkType: hard + +"lines-and-columns@npm:^1.1.6": + version: 1.2.4 + resolution: "lines-and-columns@npm:1.2.4" + checksum: 0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 + languageName: node + linkType: hard + +"load-json-file@npm:^4.0.0": + version: 4.0.0 + resolution: "load-json-file@npm:4.0.0" + dependencies: + graceful-fs: ^4.1.2 + parse-json: ^4.0.0 + pify: ^3.0.0 + strip-bom: ^3.0.0 + checksum: 8f5d6d93ba64a9620445ee9bde4d98b1eac32cf6c8c2d20d44abfa41a6945e7969456ab5f1ca2fb06ee32e206c9769a20eec7002fe290de462e8c884b6b8b356 + languageName: node + linkType: hard + +"loader-runner@npm:^4.2.0": + version: 4.3.0 + resolution: "loader-runner@npm:4.3.0" + checksum: a90e00dee9a16be118ea43fec3192d0b491fe03a32ed48a4132eb61d498f5536a03a1315531c19d284392a8726a4ecad71d82044c28d7f22ef62e029bf761569 + languageName: node + linkType: hard + +"loader-utils@npm:^2.0.0": + version: 2.0.4 + resolution: "loader-utils@npm:2.0.4" + dependencies: + big.js: ^5.2.2 + emojis-list: ^3.0.0 + json5: ^2.1.2 + checksum: a5281f5fff1eaa310ad5e1164095689443630f3411e927f95031ab4fb83b4a98f388185bb1fe949e8ab8d4247004336a625e9255c22122b815bb9a4c5d8fc3b7 + languageName: node + linkType: hard + +"locate-path@npm:^5.0.0": + version: 5.0.0 + resolution: "locate-path@npm:5.0.0" + dependencies: + p-locate: ^4.1.0 + checksum: 83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30 + languageName: node + linkType: hard + +"locate-path@npm:^6.0.0": + version: 6.0.0 + resolution: "locate-path@npm:6.0.0" + dependencies: + p-locate: ^5.0.0 + checksum: 72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a + languageName: node + linkType: hard + +"lodash-es@npm:^4.17.21": + version: 4.17.21 + resolution: "lodash-es@npm:4.17.21" + checksum: 05cbffad6e2adbb331a4e16fbd826e7faee403a1a04873b82b42c0f22090f280839f85b95393f487c1303c8a3d2a010048bf06151a6cbe03eee4d388fb0a12d2 + languageName: node + linkType: hard + +"lodash.debounce@npm:^4.0.8": + version: 4.0.8 + resolution: "lodash.debounce@npm:4.0.8" + checksum: a3f527d22c548f43ae31c861ada88b2637eb48ac6aa3eb56e82d44917971b8aa96fbb37aa60efea674dc4ee8c42074f90f7b1f772e9db375435f6c83a19b3bc6 + languageName: node + linkType: hard + +"lodash.escape@npm:^4.0.1": + version: 4.0.1 + resolution: "lodash.escape@npm:4.0.1" + checksum: fcb54f457497256964d619d5cccbd80a961916fca60df3fe0fa3e7f052715c2944c0ed5aefb4f9e047d127d44aa2d55555f3350cb42c6549e9e293fb30b41e7f + languageName: node + linkType: hard + +"lodash.memoize@npm:4.x": + version: 4.1.2 + resolution: "lodash.memoize@npm:4.1.2" + checksum: 9ff3942feeccffa4f1fafa88d32f0d24fdc62fd15ded5a74a5f950ff5f0c6f61916157246744c620173dddf38d37095a92327d5fd3861e2063e736a5c207d089 + languageName: node + linkType: hard + +"lodash.merge@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.merge@npm:4.6.2" + checksum: ad580b4bdbb7ca1f7abf7e1bce63a9a0b98e370cf40194b03380a46b4ed799c9573029599caebc1b14e3f24b111aef72b96674a56cfa105e0f5ac70546cdc005 + languageName: node + linkType: hard + +"lodash.mergewith@npm:^4.6.1": + version: 4.6.2 + resolution: "lodash.mergewith@npm:4.6.2" + checksum: a6db2a9339752411f21b956908c404ec1e088e783a65c8b29e30ae5b3b6384f82517662d6f425cc97c2070b546cc2c7daaa8d33f78db7b6e9be06cd834abdeb8 + languageName: node + linkType: hard + +"lodash.truncate@npm:^4.4.2": + version: 4.4.2 + resolution: "lodash.truncate@npm:4.4.2" + checksum: b463d8a382cfb5f0e71c504dcb6f807a7bd379ff1ea216669aa42c52fc28c54e404bfbd96791aa09e6df0de2c1d7b8f1b7f4b1a61f324d38fe98bc535aeee4f5 + languageName: node + linkType: hard + +"lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.7.0": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 + languageName: node + linkType: hard + +"loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": + version: 1.4.0 + resolution: "loose-envify@npm:1.4.0" + dependencies: + js-tokens: ^3.0.0 || ^4.0.0 + bin: + loose-envify: cli.js + checksum: 6517e24e0cad87ec9888f500c5b5947032cdfe6ef65e1c1936a0c48a524b81e65542c9c3edc91c97d5bddc806ee2a985dbc79be89215d613b1de5db6d1cfe6f4 + languageName: node + linkType: hard + +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" + dependencies: + yallist: ^3.0.2 + checksum: c154ae1cbb0c2206d1501a0e94df349653c92c8cbb25236d7e85190bcaf4567a03ac6eb43166fabfa36fd35623694da7233e88d9601fbf411a9a481d85dbd2cb + languageName: node + linkType: hard + +"lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" + dependencies: + yallist: ^4.0.0 + checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 + languageName: node + linkType: hard + +"lru-cache@npm:^7.7.1": + version: 7.18.3 + resolution: "lru-cache@npm:7.18.3" + checksum: e550d772384709deea3f141af34b6d4fa392e2e418c1498c078de0ee63670f1f46f5eee746e8ef7e69e1c895af0d4224e62ee33e66a543a14763b0f2e74c1356 + languageName: node + linkType: hard + +"lru-cache@npm:^9.1.1 || ^10.0.0": + version: 10.0.1 + resolution: "lru-cache@npm:10.0.1" + checksum: 06f8d0e1ceabd76bb6f644a26dbb0b4c471b79c7b514c13c6856113879b3bf369eb7b497dad4ff2b7e2636db202412394865b33c332100876d838ad1372f0181 + languageName: node + linkType: hard + +"make-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "make-dir@npm:4.0.0" + dependencies: + semver: ^7.5.3 + checksum: bf0731a2dd3aab4db6f3de1585cea0b746bb73eb5a02e3d8d72757e376e64e6ada190b1eddcde5b2f24a81b688a9897efd5018737d05e02e2a671dda9cff8a8a + languageName: node + linkType: hard + +"make-error@npm:1.x": + version: 1.3.6 + resolution: "make-error@npm:1.3.6" + checksum: b86e5e0e25f7f777b77fabd8e2cbf15737972869d852a22b7e73c17623928fccb826d8e46b9951501d3f20e51ad74ba8c59ed584f610526a48f8ccf88aaec402 + languageName: node + linkType: hard + +"make-fetch-happen@npm:^11.0.3": + version: 11.1.1 + resolution: "make-fetch-happen@npm:11.1.1" + dependencies: + agentkeepalive: ^4.2.1 + cacache: ^17.0.0 + http-cache-semantics: ^4.1.1 + http-proxy-agent: ^5.0.0 + https-proxy-agent: ^5.0.0 + is-lambda: ^1.0.1 + lru-cache: ^7.7.1 + minipass: ^5.0.0 + minipass-fetch: ^3.0.0 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.4 + negotiator: ^0.6.3 + promise-retry: ^2.0.1 + socks-proxy-agent: ^7.0.0 + ssri: ^10.0.0 + checksum: 7268bf274a0f6dcf0343829489a4506603ff34bd0649c12058753900b0eb29191dce5dba12680719a5d0a983d3e57810f594a12f3c18494e93a1fbc6348a4540 + languageName: node + linkType: hard + +"makeerror@npm:1.0.12": + version: 1.0.12 + resolution: "makeerror@npm:1.0.12" + dependencies: + tmpl: 1.0.5 + checksum: b38a025a12c8146d6eeea5a7f2bf27d51d8ad6064da8ca9405fcf7bf9b54acd43e3b30ddd7abb9b1bfa4ddb266019133313482570ddb207de568f71ecfcf6060 + languageName: node + linkType: hard + +"map-obj@npm:^1.0.0": + version: 1.0.1 + resolution: "map-obj@npm:1.0.1" + checksum: 9949e7baec2a336e63b8d4dc71018c117c3ce6e39d2451ccbfd3b8350c547c4f6af331a4cbe1c83193d7c6b786082b6256bde843db90cb7da2a21e8fcc28afed + languageName: node + linkType: hard + +"map-obj@npm:^4.1.0": + version: 4.3.0 + resolution: "map-obj@npm:4.3.0" + checksum: fbc554934d1a27a1910e842bc87b177b1a556609dd803747c85ece420692380827c6ae94a95cce4407c054fa0964be3bf8226f7f2cb2e9eeee432c7c1985684e + languageName: node + linkType: hard + +"markdown-to-jsx@npm:^7.3.2": + version: 7.3.2 + resolution: "markdown-to-jsx@npm:7.3.2" + peerDependencies: + react: ">= 0.14.0" + checksum: 8885c6343b71570b0a7ec16cd85a49b853a830234790ee7430e2517ea5d8d361ff138bd52147f650790f3e7b3a28a15c755fc16f8856dd01ddf09a6161782e06 + languageName: node + linkType: hard + +"mathml-tag-names@npm:^2.1.3": + version: 2.1.3 + resolution: "mathml-tag-names@npm:2.1.3" + checksum: 1201a25a137d6b9e328facd67912058b8b45b19a6c4cc62641c9476195da28a275ca6e0eca070af5378b905c2b11abc1114676ba703411db0b9ce007de921ad0 + languageName: node + linkType: hard + +"mdn-data@npm:2.0.30": + version: 2.0.30 + resolution: "mdn-data@npm:2.0.30" + checksum: d6ac5ac7439a1607df44b22738ecf83f48e66a0874e4482d6424a61c52da5cde5750f1d1229b6f5fa1b80a492be89465390da685b11f97d62b8adcc6e88189aa + languageName: node + linkType: hard + +"memorystream@npm:^0.3.1": + version: 0.3.1 + resolution: "memorystream@npm:0.3.1" + checksum: f18b42440d24d09516d01466c06adf797df7873f0d40aa7db02e5fb9ed83074e5e65412d0720901d7069363465f82dc4f8bcb44f0cde271567a61426ce6ca2e9 + languageName: node + linkType: hard + +"meow@npm:^10.1.5": + version: 10.1.5 + resolution: "meow@npm:10.1.5" + dependencies: + "@types/minimist": ^1.2.2 + camelcase-keys: ^7.0.0 + decamelize: ^5.0.0 + decamelize-keys: ^1.1.0 + hard-rejection: ^2.1.0 + minimist-options: 4.1.0 + normalize-package-data: ^3.0.2 + read-pkg-up: ^8.0.0 + redent: ^4.0.0 + trim-newlines: ^4.0.2 + type-fest: ^1.2.2 + yargs-parser: ^20.2.9 + checksum: dd5f0caa4af18517813547dc66741dcbf52c4c23def5062578d39b11189fd9457aee5c1f2263a5cd6592a465023df8357e8ac876b685b64dbcf545e3f66c23a7 + languageName: node + linkType: hard + +"merge-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-stream@npm:2.0.0" + checksum: 6fa4dcc8d86629705cea944a4b88ef4cb0e07656ebf223fa287443256414283dd25d91c1cd84c77987f2aec5927af1a9db6085757cb43d90eb170ebf4b47f4f4 + languageName: node + linkType: hard + +"merge2@npm:^1.3.0, merge2@npm:^1.4.1": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 + languageName: node + linkType: hard + +"micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": + version: 4.0.5 + resolution: "micromatch@npm:4.0.5" + dependencies: + braces: ^3.0.2 + picomatch: ^2.3.1 + checksum: 02a17b671c06e8fefeeb6ef996119c1e597c942e632a21ef589154f23898c9c6a9858526246abb14f8bca6e77734aa9dcf65476fca47cedfb80d9577d52843fc + languageName: node + linkType: hard + +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f + languageName: node + linkType: hard + +"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: 1.52.0 + checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 + languageName: node + linkType: hard + +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: d2421a3444848ce7f84bd49115ddacff29c15745db73f54041edc906c14b131a38d05298dae3081667627a59b2eb1ca4b436ff2e1b80f69679522410418b478a + languageName: node + linkType: hard + +"mimic-fn@npm:^4.0.0": + version: 4.0.0 + resolution: "mimic-fn@npm:4.0.0" + checksum: 995dcece15ee29aa16e188de6633d43a3db4611bcf93620e7e62109ec41c79c0f34277165b8ce5e361205049766e371851264c21ac64ca35499acb5421c2ba56 + languageName: node + linkType: hard + +"min-indent@npm:^1.0.1": + version: 1.0.1 + resolution: "min-indent@npm:1.0.1" + checksum: bfc6dd03c5eaf623a4963ebd94d087f6f4bbbfd8c41329a7f09706b0cb66969c4ddd336abeb587bc44bc6f08e13bf90f0b374f9d71f9f01e04adc2cd6f083ef1 + languageName: node + linkType: hard + +"mini-css-extract-plugin@npm:^2.7.0": + version: 2.7.6 + resolution: "mini-css-extract-plugin@npm:2.7.6" + dependencies: + schema-utils: ^4.0.0 + peerDependencies: + webpack: ^5.0.0 + checksum: be6f7cefc6275168eb0a6b8fe977083a18c743c9612c9f00e6c1a62c3393ca7960e93fba1a7ebb09b75f36a0204ad087d772c1ef574bc29c90c0e8175a3c0b83 + languageName: node + linkType: hard + +"mini-svg-data-uri@npm:^1.4.4": + version: 1.4.4 + resolution: "mini-svg-data-uri@npm:1.4.4" + bin: + mini-svg-data-uri: cli.js + checksum: 997f1fbd8d59a70f03761e18626d335197a3479cb9d1ff75678e4b64b864d32a0b8fc18115eabde035e5299b8b4a354a78e57dd6ac10f9d604162a6170898d09 + languageName: node + linkType: hard + +"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: ^1.1.7 + checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a + languageName: node + linkType: hard + +"minimatch@npm:^9.0.1": + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" + dependencies: + brace-expansion: ^2.0.1 + checksum: 253487976bf485b612f16bf57463520a14f512662e592e95c571afdab1442a6a6864b6c88f248ce6fc4ff0b6de04ac7aa6c8bb51e868e99d1d65eb0658a708b5 + languageName: node + linkType: hard + +"minimist-options@npm:4.1.0": + version: 4.1.0 + resolution: "minimist-options@npm:4.1.0" + dependencies: + arrify: ^1.0.1 + is-plain-obj: ^1.1.0 + kind-of: ^6.0.3 + checksum: 8c040b3068811e79de1140ca2b708d3e203c8003eb9a414c1ab3cd467fc5f17c9ca02a5aef23bedc51a7f8bfbe77f87e9a7e31ec81fba304cda675b019496f4e + languageName: node + linkType: hard + +"minimist@npm:^1.2.0, minimist@npm:~1.2.0": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 + languageName: node + linkType: hard + +"minipass-collect@npm:^1.0.2": + version: 1.0.2 + resolution: "minipass-collect@npm:1.0.2" + dependencies: + minipass: ^3.0.0 + checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 + languageName: node + linkType: hard + +"minipass-fetch@npm:^3.0.0": + version: 3.0.4 + resolution: "minipass-fetch@npm:3.0.4" + dependencies: + encoding: ^0.1.13 + minipass: ^7.0.3 + minipass-sized: ^1.0.3 + minizlib: ^2.1.2 + dependenciesMeta: + encoding: + optional: true + checksum: af7aad15d5c128ab1ebe52e043bdf7d62c3c6f0cecb9285b40d7b395e1375b45dcdfd40e63e93d26a0e8249c9efd5c325c65575aceee192883970ff8cb11364a + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: ^3.0.0 + checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: ^3.0.0 + checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: ^3.0.0 + checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 + languageName: node + linkType: hard + +"minipass@npm:^3.0.0": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: ^4.0.0 + checksum: a30d083c8054cee83cdcdc97f97e4641a3f58ae743970457b1489ce38ee1167b3aaf7d815cd39ec7a99b9c40397fd4f686e83750e73e652b21cb516f6d845e48 + languageName: node + linkType: hard + +"minipass@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass@npm:5.0.0" + checksum: 425dab288738853fded43da3314a0b5c035844d6f3097a8e3b5b29b328da8f3c1af6fc70618b32c29ff906284cf6406b6841376f21caaadd0793c1d5a6a620ea + languageName: node + linkType: hard + +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.3": + version: 7.0.3 + resolution: "minipass@npm:7.0.3" + checksum: 6f1614f5b5b55568a46bca5fec0e7c46dac027691db27d0e1923a8192866903144cd962ac772c0e9f89b608ea818b702709c042bce98e190d258847d85461531 + languageName: node + linkType: hard + +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": + version: 2.1.2 + resolution: "minizlib@npm:2.1.2" + dependencies: + minipass: ^3.0.0 + yallist: ^4.0.0 + checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 + languageName: node + linkType: hard + +"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f + languageName: node + linkType: hard + +"ms@npm:2.0.0": + version: 2.0.0 + resolution: "ms@npm:2.0.0" + checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 + languageName: node + linkType: hard + +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f + languageName: node + linkType: hard + +"ms@npm:^2.0.0": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d + languageName: node + linkType: hard + +"nanoid@npm:^3.3.6": + version: 3.3.6 + resolution: "nanoid@npm:3.3.6" + bin: + nanoid: bin/nanoid.cjs + checksum: 7d0eda657002738aa5206107bd0580aead6c95c460ef1bdd0b1a87a9c7ae6277ac2e9b945306aaa5b32c6dcb7feaf462d0f552e7f8b5718abfc6ead5c94a71b3 + languageName: node + linkType: hard + +"natural-compare@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare@npm:1.4.0" + checksum: 23ad088b08f898fc9b53011d7bb78ec48e79de7627e01ab5518e806033861bef68d5b0cd0e2205c2f36690ac9571ff6bcb05eb777ced2eeda8d4ac5b44592c3d + languageName: node + linkType: hard + +"negotiator@npm:^0.6.3": + version: 0.6.3 + resolution: "negotiator@npm:0.6.3" + checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 + languageName: node + linkType: hard + +"neo-async@npm:^2.6.2": + version: 2.6.2 + resolution: "neo-async@npm:2.6.2" + checksum: deac9f8d00eda7b2e5cd1b2549e26e10a0faa70adaa6fdadca701cc55f49ee9018e427f424bac0c790b7c7e2d3068db97f3093f1093975f2acb8f8818b936ed9 + languageName: node + linkType: hard + +"nice-try@npm:^1.0.4": + version: 1.0.5 + resolution: "nice-try@npm:1.0.5" + checksum: 0b4af3b5bb5d86c289f7a026303d192a7eb4417231fe47245c460baeabae7277bcd8fd9c728fb6bd62c30b3e15cd6620373e2cf33353b095d8b403d3e8a15aff + languageName: node + linkType: hard + +"node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.7": + version: 2.7.0 + resolution: "node-fetch@npm:2.7.0" + dependencies: + whatwg-url: ^5.0.0 + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: d76d2f5edb451a3f05b15115ec89fc6be39de37c6089f1b6368df03b91e1633fd379a7e01b7ab05089a25034b2023d959b47e59759cb38d88341b2459e89d6e5 + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 9.4.0 + resolution: "node-gyp@npm:9.4.0" + dependencies: + env-paths: ^2.2.0 + exponential-backoff: ^3.1.1 + glob: ^7.1.4 + graceful-fs: ^4.2.6 + make-fetch-happen: ^11.0.3 + nopt: ^6.0.0 + npmlog: ^6.0.0 + rimraf: ^3.0.2 + semver: ^7.3.5 + tar: ^6.1.2 + which: ^2.0.2 + bin: + node-gyp: bin/node-gyp.js + checksum: 78b404e2e0639d64e145845f7f5a3cb20c0520cdaf6dda2f6e025e9b644077202ea7de1232396ba5bde3fee84cdc79604feebe6ba3ec84d464c85d407bb5da99 + languageName: node + linkType: hard + +"node-int64@npm:^0.4.0": + version: 0.4.0 + resolution: "node-int64@npm:0.4.0" + checksum: d0b30b1ee6d961851c60d5eaa745d30b5c95d94bc0e74b81e5292f7c42a49e3af87f1eb9e89f59456f80645d679202537de751b7d72e9e40ceea40c5e449057e + languageName: node + linkType: hard + +"node-releases@npm:^2.0.13": + version: 2.0.13 + resolution: "node-releases@npm:2.0.13" + checksum: 17ec8f315dba62710cae71a8dad3cd0288ba943d2ece43504b3b1aa8625bf138637798ab470b1d9035b0545996f63000a8a926e0f6d35d0996424f8b6d36dda3 + languageName: node + linkType: hard + +"nopt@npm:^6.0.0": + version: 6.0.0 + resolution: "nopt@npm:6.0.0" + dependencies: + abbrev: ^1.0.0 + bin: + nopt: bin/nopt.js + checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac + languageName: node + linkType: hard + +"normalize-package-data@npm:^2.3.2": + version: 2.5.0 + resolution: "normalize-package-data@npm:2.5.0" + dependencies: + hosted-git-info: ^2.1.4 + resolve: ^1.10.0 + semver: 2 || 3 || 4 || 5 + validate-npm-package-license: ^3.0.1 + checksum: 7999112efc35a6259bc22db460540cae06564aa65d0271e3bdfa86876d08b0e578b7b5b0028ee61b23f1cae9fc0e7847e4edc0948d3068a39a2a82853efc8499 + languageName: node + linkType: hard + +"normalize-package-data@npm:^3.0.2": + version: 3.0.3 + resolution: "normalize-package-data@npm:3.0.3" + dependencies: + hosted-git-info: ^4.0.1 + is-core-module: ^2.5.0 + semver: ^7.3.4 + validate-npm-package-license: ^3.0.1 + checksum: bbcee00339e7c26fdbc760f9b66d429258e2ceca41a5df41f5df06cc7652de8d82e8679ff188ca095cad8eff2b6118d7d866af2b68400f74602fbcbce39c160a + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 + languageName: node + linkType: hard + +"npm-run-all@npm:^4.1.5": + version: 4.1.5 + resolution: "npm-run-all@npm:4.1.5" + dependencies: + ansi-styles: ^3.2.1 + chalk: ^2.4.1 + cross-spawn: ^6.0.5 + memorystream: ^0.3.1 + minimatch: ^3.0.4 + pidtree: ^0.3.0 + read-pkg: ^3.0.0 + shell-quote: ^1.6.1 + string.prototype.padend: ^3.0.0 + bin: + npm-run-all: bin/npm-run-all/index.js + run-p: bin/run-p/index.js + run-s: bin/run-s/index.js + checksum: 373b72c6a36564da13c1642c1fd9bb4dcc756bce7a3648f883772f02661095319820834ff813762d2fee403e9b40c1cd27c8685807c107440f10eb19c006d4a0 + languageName: node + linkType: hard + +"npm-run-path@npm:^4.0.1": + version: 4.0.1 + resolution: "npm-run-path@npm:4.0.1" + dependencies: + path-key: ^3.0.0 + checksum: 5374c0cea4b0bbfdfae62da7bbdf1e1558d338335f4cacf2515c282ff358ff27b2ecb91ffa5330a8b14390ac66a1e146e10700440c1ab868208430f56b5f4d23 + languageName: node + linkType: hard + +"npm-run-path@npm:^5.1.0": + version: 5.1.0 + resolution: "npm-run-path@npm:5.1.0" + dependencies: + path-key: ^4.0.0 + checksum: dc184eb5ec239d6a2b990b43236845332ef12f4e0beaa9701de724aa797fe40b6bbd0157fb7639d24d3ab13f5d5cf22d223a19c6300846b8126f335f788bee66 + languageName: node + linkType: hard + +"npmlog@npm:^6.0.0": + version: 6.0.2 + resolution: "npmlog@npm:6.0.2" + dependencies: + are-we-there-yet: ^3.0.0 + console-control-strings: ^1.1.0 + gauge: ^4.0.3 + set-blocking: ^2.0.0 + checksum: ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a + languageName: node + linkType: hard + +"nwsapi@npm:^2.2.2": + version: 2.2.7 + resolution: "nwsapi@npm:2.2.7" + checksum: cab25f7983acec7e23490fec3ef7be608041b460504229770e3bfcf9977c41d6fe58f518994d3bd9aa3a101f501089a3d4a63536f4ff8ae4b8c4ca23bdbfda4e + languageName: node + linkType: hard + +"object-assign@npm:^4.1.1": + version: 4.1.1 + resolution: "object-assign@npm:4.1.1" + checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f + languageName: node + linkType: hard + +"object-inspect@npm:^1.12.3, object-inspect@npm:^1.9.0": + version: 1.12.3 + resolution: "object-inspect@npm:1.12.3" + checksum: dabfd824d97a5f407e6d5d24810d888859f6be394d8b733a77442b277e0808860555176719c5905e765e3743a7cada6b8b0a3b85e5331c530fd418cc8ae991db + languageName: node + linkType: hard + +"object-keys@npm:^1.1.1": + version: 1.1.1 + resolution: "object-keys@npm:1.1.1" + checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a + languageName: node + linkType: hard + +"object.assign@npm:^4.1.4": + version: 4.1.4 + resolution: "object.assign@npm:4.1.4" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + has-symbols: ^1.0.3 + object-keys: ^1.1.1 + checksum: 76cab513a5999acbfe0ff355f15a6a125e71805fcf53de4e9d4e082e1989bdb81d1e329291e1e4e0ae7719f0e4ef80e88fb2d367ae60500d79d25a6224ac8864 + languageName: node + linkType: hard + +"once@npm:^1.3.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: 1 + checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 + languageName: node + linkType: hard + +"onetime@npm:^5.1.2": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: ^2.1.0 + checksum: 2478859ef817fc5d4e9c2f9e5728512ddd1dbc9fb7829ad263765bb6d3b91ce699d6e2332eef6b7dff183c2f490bd3349f1666427eaba4469fba0ac38dfd0d34 + languageName: node + linkType: hard + +"onetime@npm:^6.0.0": + version: 6.0.0 + resolution: "onetime@npm:6.0.0" + dependencies: + mimic-fn: ^4.0.0 + checksum: 0846ce78e440841335d4e9182ef69d5762e9f38aa7499b19f42ea1c4cd40f0b4446094c455c713f9adac3f4ae86f613bb5e30c99e52652764d06a89f709b3788 + languageName: node + linkType: hard + +"open@npm:^9.1.0": + version: 9.1.0 + resolution: "open@npm:9.1.0" + dependencies: + default-browser: ^4.0.0 + define-lazy-prop: ^3.0.0 + is-inside-container: ^1.0.0 + is-wsl: ^2.2.0 + checksum: 3993c0f61d51fed8ac290e99c9c3cf45d3b6cfb3e2aa2b74cafd312c3486c22fd81df16ac8f3ab91dd8a4e3e729a16fc2480cfc406c4833416cf908acf1ae7c9 + languageName: node + linkType: hard + +"optionator@npm:^0.9.3": + version: 0.9.3 + resolution: "optionator@npm:0.9.3" + 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 + checksum: 09281999441f2fe9c33a5eeab76700795365a061563d66b098923eb719251a42bdbe432790d35064d0816ead9296dbeb1ad51a733edf4167c96bd5d0882e428a + languageName: node + linkType: hard + +"p-limit@npm:^2.2.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" + dependencies: + p-try: ^2.0.0 + checksum: 84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 + languageName: node + linkType: hard + +"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: ^0.1.0 + checksum: 7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 + languageName: node + linkType: hard + +"p-locate@npm:^4.1.0": + version: 4.1.0 + resolution: "p-locate@npm:4.1.0" + dependencies: + p-limit: ^2.2.0 + checksum: 513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870 + languageName: node + linkType: hard + +"p-locate@npm:^5.0.0": + version: 5.0.0 + resolution: "p-locate@npm:5.0.0" + dependencies: + p-limit: ^3.0.2 + checksum: 1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 + languageName: node + linkType: hard + +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: ^3.0.0 + checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c + languageName: node + linkType: hard + +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae + languageName: node + linkType: hard + +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: ^3.0.0 + checksum: 6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff + languageName: node + linkType: hard + +"parse-json@npm:^4.0.0": + version: 4.0.0 + resolution: "parse-json@npm:4.0.0" + dependencies: + error-ex: ^1.3.1 + json-parse-better-errors: ^1.0.1 + checksum: 0fe227d410a61090c247e34fa210552b834613c006c2c64d9a05cfe9e89cf8b4246d1246b1a99524b53b313e9ac024438d0680f67e33eaed7e6f38db64cfe7b5 + languageName: node + linkType: hard + +"parse-json@npm:^5.2.0": + version: 5.2.0 + resolution: "parse-json@npm:5.2.0" + dependencies: + "@babel/code-frame": ^7.0.0 + error-ex: ^1.3.1 + json-parse-even-better-errors: ^2.3.0 + lines-and-columns: ^1.1.6 + checksum: 62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2 + languageName: node + linkType: hard + +"parse-srcset@npm:^1.0.2": + version: 1.0.2 + resolution: "parse-srcset@npm:1.0.2" + checksum: 3a0380380c6082021fcce982f0b89fb8a493ce9dfd7d308e5e6d855201e80db8b90438649b31fdd82a3d6089a8ca17dccddaa2b730a718389af4c037b8539ebf + languageName: node + linkType: hard + +"parse5@npm:^7.0.0, parse5@npm:^7.1.1": + version: 7.1.2 + resolution: "parse5@npm:7.1.2" + dependencies: + entities: ^4.4.0 + checksum: 59465dd05eb4c5ec87b76173d1c596e152a10e290b7abcda1aecf0f33be49646ea74840c69af975d7887543ea45564801736356c568d6b5e71792fd0f4055713 + languageName: node + linkType: hard + +"path-browserify@npm:^1.0.0": + version: 1.0.1 + resolution: "path-browserify@npm:1.0.1" + checksum: c6d7fa376423fe35b95b2d67990060c3ee304fc815ff0a2dc1c6c3cfaff2bd0d572ee67e18f19d0ea3bbe32e8add2a05021132ac40509416459fffee35200699 + languageName: node + linkType: hard + +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 + languageName: node + linkType: hard + +"path-key@npm:^2.0.1": + version: 2.0.1 + resolution: "path-key@npm:2.0.1" + checksum: f7ab0ad42fe3fb8c7f11d0c4f849871e28fbd8e1add65c370e422512fc5887097b9cf34d09c1747d45c942a8c1e26468d6356e2df3f740bf177ab8ca7301ebfd + languageName: node + linkType: hard + +"path-key@npm:^3.0.0, path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 + languageName: node + linkType: hard + +"path-key@npm:^4.0.0": + version: 4.0.0 + resolution: "path-key@npm:4.0.0" + checksum: 8e6c314ae6d16b83e93032c61020129f6f4484590a777eed709c4a01b50e498822b00f76ceaf94bc64dbd90b327df56ceadce27da3d83393790f1219e07721d7 + languageName: node + linkType: hard + +"path-parse@npm:^1.0.7": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a + languageName: node + linkType: hard + +"path-scurry@npm:^1.10.1": + version: 1.10.1 + resolution: "path-scurry@npm:1.10.1" + dependencies: + lru-cache: ^9.1.1 || ^10.0.0 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + checksum: e2557cff3a8fb8bc07afdd6ab163a92587884f9969b05bbbaf6fe7379348bfb09af9ed292af12ed32398b15fb443e81692047b786d1eeb6d898a51eb17ed7d90 + languageName: node + linkType: hard + +"path-type@npm:^3.0.0": + version: 3.0.0 + resolution: "path-type@npm:3.0.0" + dependencies: + pify: ^3.0.0 + checksum: 735b35e256bad181f38fa021033b1c33cfbe62ead42bb2222b56c210e42938eecb272ae1949f3b6db4ac39597a61b44edd8384623ec4d79bfdc9a9c0f12537a6 + languageName: node + linkType: hard + +"path-type@npm:^4.0.0": + version: 4.0.0 + resolution: "path-type@npm:4.0.0" + checksum: 5b1e2daa247062061325b8fdbfd1fb56dde0a448fb1455453276ea18c60685bdad23a445dc148cf87bc216be1573357509b7d4060494a6fd768c7efad833ee45 + languageName: node + linkType: hard + +"path@npm:~0.12.7": + version: 0.12.7 + resolution: "path@npm:0.12.7" + dependencies: + process: ^0.11.1 + util: ^0.10.3 + checksum: 5dedb71e78fc008fcba797defc0b4e1cf06c1f18e0a631e03ba5bb505136f587ff017afc14f9a3d481cbe77aeedff7dc0c1d2ce4d820c1ebf3c4281ca49423a1 + languageName: node + linkType: hard + +"picocolors@npm:^1.0.0": + version: 1.0.0 + resolution: "picocolors@npm:1.0.0" + checksum: a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 + languageName: node + linkType: hard + +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf + languageName: node + linkType: hard + +"pidtree@npm:^0.3.0": + version: 0.3.1 + resolution: "pidtree@npm:0.3.1" + bin: + pidtree: bin/pidtree.js + checksum: eb49025099f1af89a4696f7673351421f13420f3397b963c901fe23a1c9c2ff50f4750321970d4472c0ffbb065e4a6c3c27f75e226cc62284b19e21d32ce7012 + languageName: node + linkType: hard + +"pify@npm:^3.0.0": + version: 3.0.0 + resolution: "pify@npm:3.0.0" + checksum: 6cdcbc3567d5c412450c53261a3f10991665d660961e06605decf4544a61a97a54fefe70a68d5c37080ff9d6f4cf51444c90198d1ba9f9309a6c0d6e9f5c4fde + languageName: node + linkType: hard + +"pirates@npm:^4.0.4": + version: 4.0.6 + resolution: "pirates@npm:4.0.6" + checksum: 46a65fefaf19c6f57460388a5af9ab81e3d7fd0e7bc44ca59d753cb5c4d0df97c6c6e583674869762101836d68675f027d60f841c105d72734df9dfca97cbcc6 + languageName: node + linkType: hard + +"pkg-dir@npm:^4.2.0": + version: 4.2.0 + resolution: "pkg-dir@npm:4.2.0" + dependencies: + find-up: ^4.0.0 + checksum: 9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 + languageName: node + linkType: hard + +"playwright-core@npm:1.37.1": + version: 1.37.1 + resolution: "playwright-core@npm:1.37.1" + bin: + playwright-core: cli.js + checksum: 69f818da2230057584140d5b3af7778a4f4a822b5b18d133abfc5d259128becb943c343a2ddf6b0635277a69f28983e83e2bc3fce23595ececb1e410475b6368 + languageName: node + linkType: hard + +"postcss-modules-extract-imports@npm:^3.0.0": + version: 3.0.0 + resolution: "postcss-modules-extract-imports@npm:3.0.0" + peerDependencies: + postcss: ^8.1.0 + checksum: 4b65f2f1382d89c4bc3c0a1bdc5942f52f3cb19c110c57bd591ffab3a5fee03fcf831604168205b0c1b631a3dce2255c70b61aaae3ef39d69cd7eb450c2552d2 + languageName: node + linkType: hard + +"postcss-modules-local-by-default@npm:^4.0.3": + version: 4.0.3 + resolution: "postcss-modules-local-by-default@npm:4.0.3" + dependencies: + icss-utils: ^5.0.0 + postcss-selector-parser: ^6.0.2 + postcss-value-parser: ^4.1.0 + peerDependencies: + postcss: ^8.1.0 + checksum: 2f8083687f3d6067885f8863dd32dbbb4f779cfcc7e52c17abede9311d84faf6d3ed8760e7c54c6380281732ae1f78e5e56a28baf3c271b33f450a11c9e30485 + languageName: node + linkType: hard + +"postcss-modules-scope@npm:^3.0.0": + version: 3.0.0 + resolution: "postcss-modules-scope@npm:3.0.0" + dependencies: + postcss-selector-parser: ^6.0.4 + peerDependencies: + postcss: ^8.1.0 + checksum: 330b9398dbd44c992c92b0dc612c0626135e2cc840fee41841eb61247a6cfed95af2bd6f67ead9dd9d0bb41f5b0367129d93c6e434fa3e9c58ade391d9a5a138 + languageName: node + linkType: hard + +"postcss-modules-values@npm:^4.0.0": + version: 4.0.0 + resolution: "postcss-modules-values@npm:4.0.0" + dependencies: + icss-utils: ^5.0.0 + peerDependencies: + postcss: ^8.1.0 + checksum: f7f2cdf14a575b60e919ad5ea52fed48da46fe80db2733318d71d523fc87db66c835814940d7d05b5746b0426e44661c707f09bdb83592c16aea06e859409db6 + languageName: node + linkType: hard + +"postcss-resolve-nested-selector@npm:^0.1.1": + version: 0.1.1 + resolution: "postcss-resolve-nested-selector@npm:0.1.1" + checksum: b08fb76ab092a09ee01328bad620a01dcb445ac5eb02dd0ed9ed75217c2f779ecb3bf99a361c46e695689309c08c09f1a1ad7354c8d58c2c2c40d364657fcb08 + languageName: node + linkType: hard + +"postcss-safe-parser@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-safe-parser@npm:6.0.0" + peerDependencies: + postcss: ^8.3.3 + checksum: 06c733eaad83a3954367e7ee02ddfe3796e7a44d4299ccf9239f40964a4daac153c7d77613f32964b5a86c0c6c2f6167738f31d578b73b17cb69d0c4446f0ebe + languageName: node + linkType: hard + +"postcss-selector-parser@npm:^6.0.13, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4": + version: 6.0.13 + resolution: "postcss-selector-parser@npm:6.0.13" + dependencies: + cssesc: ^3.0.0 + util-deprecate: ^1.0.2 + checksum: f89163338a1ce3b8ece8e9055cd5a3165e79a15e1c408e18de5ad8f87796b61ec2d48a2902d179ae0c4b5de10fccd3a325a4e660596549b040bc5ad1b465f096 + languageName: node + linkType: hard + +"postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": + version: 4.2.0 + resolution: "postcss-value-parser@npm:4.2.0" + checksum: 819ffab0c9d51cf0acbabf8996dffbfafbafa57afc0e4c98db88b67f2094cb44488758f06e5da95d7036f19556a4a732525e84289a425f4f6fd8e412a9d7442f + languageName: node + linkType: hard + +"postcss@npm:^8.3.11, postcss@npm:^8.4.21, postcss@npm:^8.4.27": + version: 8.4.29 + resolution: "postcss@npm:8.4.29" + dependencies: + nanoid: ^3.3.6 + picocolors: ^1.0.0 + source-map-js: ^1.0.2 + checksum: dd6daa25e781db9ae5b651d9b7bfde0ec6e60e86a37da69a18eb4773d5ddd51e28fc4ff054fbdc04636a31462e6bf09a1e50986f69ac52b10d46b7457cd36d12 + languageName: node + linkType: hard + +"prelude-ls@npm:^1.2.1": + version: 1.2.1 + resolution: "prelude-ls@npm:1.2.1" + checksum: cd192ec0d0a8e4c6da3bb80e4f62afe336df3f76271ac6deb0e6a36187133b6073a19e9727a1ff108cd8b9982e4768850d413baa71214dd80c7979617dca827a + languageName: node + linkType: hard + +"prettier-linter-helpers@npm:^1.0.0": + version: 1.0.0 + resolution: "prettier-linter-helpers@npm:1.0.0" + dependencies: + fast-diff: ^1.1.2 + checksum: 00ce8011cf6430158d27f9c92cfea0a7699405633f7f1d4a45f07e21bf78e99895911cbcdc3853db3a824201a7c745bd49bfea8abd5fb9883e765a90f74f8392 + languageName: node + linkType: hard + +"prettier@npm:^3.0.0": + version: 3.0.3 + resolution: "prettier@npm:3.0.3" + bin: + prettier: bin/prettier.cjs + checksum: e10b9af02b281f6c617362ebd2571b1d7fc9fb8a3bd17e371754428cda992e5e8d8b7a046e8f7d3e2da1dcd21aa001e2e3c797402ebb6111b5cd19609dd228e0 + languageName: node + linkType: hard + +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" + dependencies: + "@jest/schemas": ^29.6.3 + ansi-styles: ^5.0.0 + react-is: ^18.0.0 + checksum: 032c1602383e71e9c0c02a01bbd25d6759d60e9c7cf21937dde8357aa753da348fcec5def5d1002c9678a8524d5fe099ad98861286550ef44de8808cc61e43b6 + languageName: node + linkType: hard + +"process-nextick-args@npm:~2.0.0": + version: 2.0.1 + resolution: "process-nextick-args@npm:2.0.1" + checksum: 1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf + languageName: node + linkType: hard + +"process@npm:^0.11.1, process@npm:^0.11.10": + version: 0.11.10 + resolution: "process@npm:0.11.10" + checksum: bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c3 + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: ^2.0.2 + retry: ^0.12.0 + checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 + languageName: node + linkType: hard + +"prompts@npm:^2.0.1": + version: 2.4.2 + resolution: "prompts@npm:2.4.2" + dependencies: + kleur: ^3.0.3 + sisteransi: ^1.0.5 + checksum: d8fd1fe63820be2412c13bfc5d0a01909acc1f0367e32396962e737cb2fc52d004f3302475d5ce7d18a1e8a79985f93ff04ee03007d091029c3f9104bffc007d + languageName: node + linkType: hard + +"prop-types@npm:^15.8.1": + version: 15.8.1 + resolution: "prop-types@npm:15.8.1" + dependencies: + loose-envify: ^1.4.0 + object-assign: ^4.1.1 + react-is: ^16.13.1 + checksum: c056d3f1c057cb7ff8344c645450e14f088a915d078dcda795041765047fa080d38e5d626560ccaac94a4e16e3aa15f3557c1a9a8d1174530955e992c675e459 + languageName: node + linkType: hard + +"psl@npm:^1.1.33": + version: 1.9.0 + resolution: "psl@npm:1.9.0" + checksum: 20c4277f640c93d393130673f392618e9a8044c6c7bf61c53917a0fddb4952790f5f362c6c730a9c32b124813e173733f9895add8d26f566ed0ea0654b2e711d + languageName: node + linkType: hard + +"punycode@npm:^2.1.0, punycode@npm:^2.1.1": + version: 2.3.0 + resolution: "punycode@npm:2.3.0" + checksum: 39f760e09a2a3bbfe8f5287cf733ecdad69d6af2fe6f97ca95f24b8921858b91e9ea3c9eeec6e08cede96181b3bb33f95c6ffd8c77e63986508aa2e8159fa200 + languageName: node + linkType: hard + +"pure-rand@npm:^6.0.0": + version: 6.0.3 + resolution: "pure-rand@npm:6.0.3" + checksum: d08701cfd1528c5f9cdca996776c498c92767722561f9b8f9e62645d5025c8a3bf60b90f76f262aaab124e6bb1d58e1b0850722dbca2846a19b708801956e56b + languageName: node + linkType: hard + +"querystringify@npm:^2.1.1": + version: 2.2.0 + resolution: "querystringify@npm:2.2.0" + checksum: 5641ea231bad7ef6d64d9998faca95611ed4b11c2591a8cae741e178a974f6a8e0ebde008475259abe1621cb15e692404e6b6626e927f7b849d5c09392604b15 + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4 + languageName: node + linkType: hard + +"quick-lru@npm:^5.1.1": + version: 5.1.1 + resolution: "quick-lru@npm:5.1.1" + checksum: a516faa25574be7947969883e6068dbe4aa19e8ef8e8e0fd96cddd6d36485e9106d85c0041a27153286b0770b381328f4072aa40d3b18a19f5f7d2b78b94b5ed + languageName: node + linkType: hard + +"randombytes@npm:^2.1.0": + version: 2.1.0 + resolution: "randombytes@npm:2.1.0" + dependencies: + safe-buffer: ^5.1.0 + checksum: d779499376bd4cbb435ef3ab9a957006c8682f343f14089ed5f27764e4645114196e75b7f6abf1cbd84fd247c0cb0651698444df8c9bf30e62120fbbc52269d6 + languageName: node + linkType: hard + +"react-dom@npm:^18.2.0": + version: 18.2.0 + resolution: "react-dom@npm:18.2.0" + dependencies: + loose-envify: ^1.1.0 + scheduler: ^0.23.0 + peerDependencies: + react: ^18.2.0 + checksum: 7d323310bea3a91be2965f9468d552f201b1c27891e45ddc2d6b8f717680c95a75ae0bc1e3f5cf41472446a2589a75aed4483aee8169287909fcd59ad149e8cc + languageName: node + linkType: hard + +"react-is@npm:^16.13.1": + version: 16.13.1 + resolution: "react-is@npm:16.13.1" + checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f + languageName: node + linkType: hard + +"react-is@npm:^18.0.0, react-is@npm:^18.2.0": + version: 18.2.0 + resolution: "react-is@npm:18.2.0" + checksum: e72d0ba81b5922759e4aff17e0252bd29988f9642ed817f56b25a3e217e13eea8a7f2322af99a06edb779da12d5d636e9fda473d620df9a3da0df2a74141d53e + languageName: node + linkType: hard + +"react@npm:^18.2.0": + version: 18.2.0 + resolution: "react@npm:18.2.0" + dependencies: + loose-envify: ^1.1.0 + checksum: 88e38092da8839b830cda6feef2e8505dec8ace60579e46aa5490fc3dc9bba0bd50336507dc166f43e3afc1c42939c09fe33b25fae889d6f402721dcd78fca1b + languageName: node + linkType: hard + +"read-pkg-up@npm:^8.0.0": + version: 8.0.0 + resolution: "read-pkg-up@npm:8.0.0" + dependencies: + find-up: ^5.0.0 + read-pkg: ^6.0.0 + type-fest: ^1.0.1 + checksum: fe4c80401656b40b408884457fffb5a8015c03b1018cfd8e48f8d82a5e9023e24963603aeb2755608d964593e046c15b34d29b07d35af9c7aa478be81805209c + languageName: node + linkType: hard + +"read-pkg@npm:^3.0.0": + version: 3.0.0 + resolution: "read-pkg@npm:3.0.0" + dependencies: + load-json-file: ^4.0.0 + normalize-package-data: ^2.3.2 + path-type: ^3.0.0 + checksum: 398903ebae6c7e9965419a1062924436cc0b6f516c42c4679a90290d2f87448ed8f977e7aa2dbba4aa1ac09248628c43e493ac25b2bc76640e946035200e34c6 + languageName: node + linkType: hard + +"read-pkg@npm:^6.0.0": + version: 6.0.0 + resolution: "read-pkg@npm:6.0.0" + dependencies: + "@types/normalize-package-data": ^2.4.0 + normalize-package-data: ^3.0.2 + parse-json: ^5.2.0 + type-fest: ^1.0.1 + checksum: 0cebdff381128e923815c643074a87011070e5fc352bee575d327d6485da3317fab6d802a7b03deeb0be7be8d3ad1640397b3d5d2f044452caf4e8d1736bf94f + languageName: node + linkType: hard + +"readable-stream@npm:^2.1.4": + version: 2.3.8 + resolution: "readable-stream@npm:2.3.8" + dependencies: + core-util-is: ~1.0.0 + inherits: ~2.0.3 + isarray: ~1.0.0 + process-nextick-args: ~2.0.0 + safe-buffer: ~5.1.1 + string_decoder: ~1.1.1 + util-deprecate: ~1.0.1 + checksum: 65645467038704f0c8aaf026a72fbb588a9e2ef7a75cd57a01702ee9db1c4a1e4b03aaad36861a6a0926546a74d174149c8c207527963e0c2d3eee2f37678a42 + languageName: node + linkType: hard + +"readable-stream@npm:^3.6.0": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: ^2.0.3 + string_decoder: ^1.1.1 + util-deprecate: ^1.0.1 + checksum: bdcbe6c22e846b6af075e32cf8f4751c2576238c5043169a1c221c92ee2878458a816a4ea33f4c67623c0b6827c8a400409bfb3cf0bf3381392d0b1dfb52ac8d + languageName: node + linkType: hard + +"rechoir@npm:^0.8.0": + version: 0.8.0 + resolution: "rechoir@npm:0.8.0" + dependencies: + resolve: ^1.20.0 + checksum: ad3caed8afdefbc33fbc30e6d22b86c35b3d51c2005546f4e79bcc03c074df804b3640ad18945e6bef9ed12caedc035655ec1082f64a5e94c849ff939dc0a788 + languageName: node + linkType: hard + +"redent@npm:^4.0.0": + version: 4.0.0 + resolution: "redent@npm:4.0.0" + dependencies: + indent-string: ^5.0.0 + strip-indent: ^4.0.0 + checksum: 6944e7b1d8f3fd28c2515f5c605b9f7f0ea0f4edddf41890bbbdd4d9ee35abb7540c3b278f03ff827bd278bb6ff4a5bd8692ca406b748c5c1c3ce7355e9fbf8f + languageName: node + linkType: hard + +"regenerate-unicode-properties@npm:^10.1.0": + version: 10.1.0 + resolution: "regenerate-unicode-properties@npm:10.1.0" + dependencies: + regenerate: ^1.4.2 + checksum: b1a8929588433ab8b9dc1a34cf3665b3b472f79f2af6ceae00d905fc496b332b9af09c6718fb28c730918f19a00dc1d7310adbaa9b72a2ec7ad2f435da8ace17 + languageName: node + linkType: hard + +"regenerate@npm:^1.4.2": + version: 1.4.2 + resolution: "regenerate@npm:1.4.2" + checksum: 3317a09b2f802da8db09aa276e469b57a6c0dd818347e05b8862959c6193408242f150db5de83c12c3fa99091ad95fb42a6db2c3329bfaa12a0ea4cbbeb30cb0 + languageName: node + linkType: hard + +"regenerator-runtime@npm:^0.14.0": + version: 0.14.0 + resolution: "regenerator-runtime@npm:0.14.0" + checksum: 1c977ad82a82a4412e4f639d65d22be376d3ebdd30da2c003eeafdaaacd03fc00c2320f18120007ee700900979284fc78a9f00da7fb593f6e6eeebc673fba9a3 + languageName: node + linkType: hard + +"regenerator-transform@npm:^0.15.2": + version: 0.15.2 + resolution: "regenerator-transform@npm:0.15.2" + dependencies: + "@babel/runtime": ^7.8.4 + checksum: 20b6f9377d65954980fe044cfdd160de98df415b4bff38fbade67b3337efaf078308c4fed943067cd759827cc8cfeca9cb28ccda1f08333b85d6a2acbd022c27 + languageName: node + linkType: hard + +"regexp-match-indices@npm:^1.0.2": + version: 1.0.2 + resolution: "regexp-match-indices@npm:1.0.2" + dependencies: + regexp-tree: ^0.1.11 + checksum: 8cc779f6cf8f404ead828d09970a7d4bd66bd78d43ab9eb2b5e65f2ef2ba1ed53536f5b5fa839fb90b350365fb44b6a851c7f16289afc3f37789c113ab2a7916 + languageName: node + linkType: hard + +"regexp-tree@npm:^0.1.11": + version: 0.1.27 + resolution: "regexp-tree@npm:0.1.27" + bin: + regexp-tree: bin/regexp-tree + checksum: 129aebb34dae22d6694ab2ac328be3f99105143737528ab072ef624d599afecbcfae1f5c96a166fa9e5f64fa1ecf30b411c4691e7924c3e11bbaf1712c260c54 + languageName: node + linkType: hard + +"regexp.prototype.flags@npm:^1.5.0": + version: 1.5.0 + resolution: "regexp.prototype.flags@npm:1.5.0" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.2.0 + functions-have-names: ^1.2.3 + checksum: c541687cdbdfff1b9a07f6e44879f82c66bbf07665f9a7544c5fd16acdb3ec8d1436caab01662d2fbcad403f3499d49ab0b77fbc7ef29ef961d98cc4bc9755b4 + languageName: node + linkType: hard + +"regexpu-core@npm:^5.3.1": + version: 5.3.2 + resolution: "regexpu-core@npm:5.3.2" + dependencies: + "@babel/regjsgen": ^0.8.0 + regenerate: ^1.4.2 + regenerate-unicode-properties: ^10.1.0 + regjsparser: ^0.9.1 + unicode-match-property-ecmascript: ^2.0.0 + unicode-match-property-value-ecmascript: ^2.1.0 + checksum: 95bb97088419f5396e07769b7de96f995f58137ad75fac5811fb5fe53737766dfff35d66a0ee66babb1eb55386ef981feaef392f9df6d671f3c124812ba24da2 + languageName: node + linkType: hard + +"regjsparser@npm:^0.9.1": + version: 0.9.1 + resolution: "regjsparser@npm:0.9.1" + dependencies: + jsesc: ~0.5.0 + bin: + regjsparser: bin/parser + checksum: 5e1b76afe8f1d03c3beaf9e0d935dd467589c3625f6d65fb8ffa14f224d783a0fed4bf49c2c1b8211043ef92b6117313419edf055a098ed8342e340586741afc + languageName: node + linkType: hard + +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: fb47e70bf0001fdeabdc0429d431863e9475e7e43ea5f94ad86503d918423c1543361cc5166d713eaa7029dd7a3d34775af04764bebff99ef413111a5af18c80 + languageName: node + linkType: hard + +"require-from-string@npm:^2.0.2": + version: 2.0.2 + resolution: "require-from-string@npm:2.0.2" + checksum: a03ef6895445f33a4015300c426699bc66b2b044ba7b670aa238610381b56d3f07c686251740d575e22f4c87531ba662d06937508f0f3c0f1ddc04db3130560b + languageName: node + linkType: hard + +"requires-port@npm:^1.0.0": + version: 1.0.0 + resolution: "requires-port@npm:1.0.0" + checksum: eee0e303adffb69be55d1a214e415cf42b7441ae858c76dfc5353148644f6fd6e698926fc4643f510d5c126d12a705e7c8ed7e38061113bdf37547ab356797ff + languageName: node + linkType: hard + +"resolve-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-cwd@npm:3.0.0" + dependencies: + resolve-from: ^5.0.0 + checksum: 546e0816012d65778e580ad62b29e975a642989108d9a3c5beabfb2304192fa3c9f9146fbdfe213563c6ff51975ae41bac1d3c6e047dd9572c94863a057b4d81 + languageName: node + linkType: hard + +"resolve-from@npm:^4.0.0": + version: 4.0.0 + resolution: "resolve-from@npm:4.0.0" + checksum: f4ba0b8494846a5066328ad33ef8ac173801a51739eb4d63408c847da9a2e1c1de1e6cbbf72699211f3d13f8fc1325648b169bd15eb7da35688e30a5fb0e4a7f + languageName: node + linkType: hard + +"resolve-from@npm:^5.0.0": + version: 5.0.0 + resolution: "resolve-from@npm:5.0.0" + checksum: 4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf + languageName: node + linkType: hard + +"resolve.exports@npm:^2.0.0": + version: 2.0.2 + resolution: "resolve.exports@npm:2.0.2" + checksum: 1c7778ca1b86a94f8ab4055d196c7d87d1874b96df4d7c3e67bbf793140f0717fd506dcafd62785b079cd6086b9264424ad634fb904409764c3509c3df1653f2 + languageName: node + linkType: hard + +"resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.20.0": + version: 1.22.4 + resolution: "resolve@npm:1.22.4" + dependencies: + is-core-module: ^2.13.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: 23f25174c2736ce24c6d918910e0d1f89b6b38fefa07a995dff864acd7863d59a7f049e691f93b4b2ee29696303390d921552b6d1b841ed4a8101f517e1d0124 + languageName: node + linkType: hard + +"resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.20.0#~builtin": + version: 1.22.4 + resolution: "resolve@patch:resolve@npm%3A1.22.4#~builtin::version=1.22.4&hash=c3c19d" + dependencies: + is-core-module: ^2.13.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: c45f2545fdc4d21883861b032789e20aa67a2f2692f68da320cc84d5724cd02f2923766c5354b3210897e88f1a7b3d6d2c7c22faeead8eed7078e4c783a444bc + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c + languageName: node + linkType: hard + +"reusify@npm:^1.0.4": + version: 1.0.4 + resolution: "reusify@npm:1.0.4" + checksum: c3076ebcc22a6bc252cb0b9c77561795256c22b757f40c0d8110b1300723f15ec0fc8685e8d4ea6d7666f36c79ccc793b1939c748bf36f18f542744a4e379fcc + languageName: node + linkType: hard + +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: ^7.1.3 + bin: + rimraf: bin.js + checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 + languageName: node + linkType: hard + +"rimraf@npm:^5.0.1": + version: 5.0.1 + resolution: "rimraf@npm:5.0.1" + dependencies: + glob: ^10.2.5 + bin: + rimraf: dist/cjs/src/bin.js + checksum: bafce85391349a2d960847980bf9b5caa2a8887f481af630f1ea27e08288217293cec72d75e9a2ba35495c212789f66a7f3d23366ba6197026ab71c535126857 + languageName: node + linkType: hard + +"robust-predicates@npm:^3.0.0": + version: 3.0.2 + resolution: "robust-predicates@npm:3.0.2" + checksum: 36854c1321548ceca96d36ad9d6e0a5a512986029ec6929ad6ed3ec1612c22cc8b46cc72d2c5674af42e8074a119d793f6f0ea3a5b51373e3ab926c64b172d7a + languageName: node + linkType: hard + +"run-applescript@npm:^5.0.0": + version: 5.0.0 + resolution: "run-applescript@npm:5.0.0" + dependencies: + execa: ^5.0.0 + checksum: d00c2dbfa5b2d774de7451194b8b125f40f65fc183de7d9dcae97f57f59433586d3c39b9001e111c38bfa24c3436c99df1bb4066a2a0c90d39a8c4cd6889af77 + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: ^1.2.2 + checksum: cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d + languageName: node + linkType: hard + +"rw@npm:1": + version: 1.3.3 + resolution: "rw@npm:1.3.3" + checksum: c20d82421f5a71c86a13f76121b751553a99cd4a70ea27db86f9b23f33db941f3f06019c30f60d50c356d0bd674c8e74764ac146ea55e217c091bde6fba82aa3 + languageName: node + linkType: hard + +"safe-array-concat@npm:^1.0.0": + version: 1.0.1 + resolution: "safe-array-concat@npm:1.0.1" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.2.1 + has-symbols: ^1.0.3 + isarray: ^2.0.5 + checksum: 001ecf1d8af398251cbfabaf30ed66e3855127fbceee178179524b24160b49d15442f94ed6c0db0b2e796da76bb05b73bf3cc241490ec9c2b741b41d33058581 + languageName: node + linkType: hard + +"safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 + languageName: node + linkType: hard + +"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": + version: 5.1.2 + resolution: "safe-buffer@npm:5.1.2" + checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c + languageName: node + linkType: hard + +"safe-regex-test@npm:^1.0.0": + version: 1.0.0 + resolution: "safe-regex-test@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.1.3 + is-regex: ^1.1.4 + checksum: bc566d8beb8b43c01b94e67de3f070fd2781685e835959bbbaaec91cc53381145ca91f69bd837ce6ec244817afa0a5e974fc4e40a2957f0aca68ac3add1ddd34 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 + languageName: node + linkType: hard + +"sanitize-html@npm:~2.7.3": + version: 2.7.3 + resolution: "sanitize-html@npm:2.7.3" + dependencies: + deepmerge: ^4.2.2 + escape-string-regexp: ^4.0.0 + htmlparser2: ^6.0.0 + is-plain-object: ^5.0.0 + parse-srcset: ^1.0.2 + postcss: ^8.3.11 + checksum: 2399d1fdbbc3a263fb413c1fe1971b3dc2b51abc6cc5cb49490624539d1c57a8fe31e2b21408c118e2a957f4e673e3169b1f9a5807654408f17b130a9d78aed7 + languageName: node + linkType: hard + +"saxes@npm:^6.0.0": + version: 6.0.0 + resolution: "saxes@npm:6.0.0" + dependencies: + xmlchars: ^2.2.0 + checksum: d3fa3e2aaf6c65ed52ee993aff1891fc47d5e47d515164b5449cbf5da2cbdc396137e55590472e64c5c436c14ae64a8a03c29b9e7389fc6f14035cf4e982ef3b + languageName: node + linkType: hard + +"scheduler@npm:^0.23.0": + version: 0.23.0 + resolution: "scheduler@npm:0.23.0" + dependencies: + loose-envify: ^1.1.0 + checksum: d79192eeaa12abef860c195ea45d37cbf2bbf5f66e3c4dcd16f54a7da53b17788a70d109ee3d3dde1a0fd50e6a8fc171f4300356c5aee4fc0171de526bf35f8a + languageName: node + linkType: hard + +"schema-utils@npm:^2.7.0": + version: 2.7.1 + resolution: "schema-utils@npm:2.7.1" + dependencies: + "@types/json-schema": ^7.0.5 + ajv: ^6.12.4 + ajv-keywords: ^3.5.2 + checksum: 32c62fc9e28edd101e1bd83453a4216eb9bd875cc4d3775e4452b541908fa8f61a7bbac8ffde57484f01d7096279d3ba0337078e85a918ecbeb72872fb09fb2b + languageName: node + linkType: hard + +"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": + version: 3.3.0 + resolution: "schema-utils@npm:3.3.0" + dependencies: + "@types/json-schema": ^7.0.8 + ajv: ^6.12.5 + ajv-keywords: ^3.5.2 + checksum: ea56971926fac2487f0757da939a871388891bc87c6a82220d125d587b388f1704788f3706e7f63a7b70e49fc2db974c41343528caea60444afd5ce0fe4b85c0 + languageName: node + linkType: hard + +"schema-utils@npm:^4.0.0": + version: 4.2.0 + resolution: "schema-utils@npm:4.2.0" + dependencies: + "@types/json-schema": ^7.0.9 + ajv: ^8.9.0 + ajv-formats: ^2.1.1 + ajv-keywords: ^5.1.0 + checksum: 26a0463d47683258106e6652e9aeb0823bf0b85843039e068b57da1892f7ae6b6b1094d48e9ed5ba5cbe9f7166469d880858b9d91abe8bd249421eb813850cde + languageName: node + linkType: hard + +"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.4.1, semver@npm:^5.5.0": + version: 5.7.2 + resolution: "semver@npm:5.7.2" + bin: + semver: bin/semver + checksum: fb4ab5e0dd1c22ce0c937ea390b4a822147a9c53dbd2a9a0132f12fe382902beef4fbf12cf51bb955248d8d15874ce8cd89532569756384f994309825f10b686 + languageName: node + linkType: hard + +"semver@npm:^6.3.0, semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: ae47d06de28836adb9d3e25f22a92943477371292d9b665fb023fae278d345d508ca1958232af086d85e0155aee22e313e100971898bbb8d5d89b8b1d4054ca2 + languageName: node + linkType: hard + +"semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4": + version: 7.5.4 + resolution: "semver@npm:7.5.4" + dependencies: + lru-cache: ^6.0.0 + bin: + semver: bin/semver.js + checksum: 12d8ad952fa353b0995bf180cdac205a4068b759a140e5d3c608317098b3575ac2f1e09182206bf2eb26120e1c0ed8fb92c48c592f6099680de56bb071423ca3 + languageName: node + linkType: hard + +"serialize-javascript@npm:^6.0.1": + version: 6.0.1 + resolution: "serialize-javascript@npm:6.0.1" + dependencies: + randombytes: ^2.1.0 + checksum: 3c4f4cb61d0893b988415bdb67243637333f3f574e9e9cc9a006a2ced0b390b0b3b44aef8d51c951272a9002ec50885eefdc0298891bc27eb2fe7510ea87dc4f + languageName: node + linkType: hard + +"set-blocking@npm:^2.0.0": + version: 2.0.0 + resolution: "set-blocking@npm:2.0.0" + checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 + languageName: node + linkType: hard + +"shallow-clone@npm:^3.0.0": + version: 3.0.1 + resolution: "shallow-clone@npm:3.0.1" + dependencies: + kind-of: ^6.0.2 + checksum: 39b3dd9630a774aba288a680e7d2901f5c0eae7b8387fc5c8ea559918b29b3da144b7bdb990d7ccd9e11be05508ac9e459ce51d01fd65e583282f6ffafcba2e7 + languageName: node + linkType: hard + +"shebang-command@npm:^1.2.0": + version: 1.2.0 + resolution: "shebang-command@npm:1.2.0" + dependencies: + shebang-regex: ^1.0.0 + checksum: 9eed1750301e622961ba5d588af2212505e96770ec376a37ab678f965795e995ade7ed44910f5d3d3cb5e10165a1847f52d3348c64e146b8be922f7707958908 + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: ^3.0.0 + checksum: 6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa + languageName: node + linkType: hard + +"shebang-regex@npm:^1.0.0": + version: 1.0.0 + resolution: "shebang-regex@npm:1.0.0" + checksum: 404c5a752cd40f94591dfd9346da40a735a05139dac890ffc229afba610854d8799aaa52f87f7e0c94c5007f2c6af55bdcaeb584b56691926c5eaf41dc8f1372 + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 + languageName: node + linkType: hard + +"shell-quote@npm:^1.6.1": + version: 1.8.1 + resolution: "shell-quote@npm:1.8.1" + checksum: 5f01201f4ef504d4c6a9d0d283fa17075f6770bfbe4c5850b074974c68062f37929ca61700d95ad2ac8822e14e8c4b990ca0e6e9272e64befd74ce5e19f0736b + languageName: node + linkType: hard + +"side-channel@npm:^1.0.4": + version: 1.0.4 + resolution: "side-channel@npm:1.0.4" + dependencies: + call-bind: ^1.0.0 + get-intrinsic: ^1.0.2 + object-inspect: ^1.9.0 + checksum: 351e41b947079c10bd0858364f32bb3a7379514c399edb64ab3dce683933483fc63fb5e4efe0a15a2e8a7e3c436b6a91736ddb8d8c6591b0460a24bb4a1ee245 + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 + languageName: node + linkType: hard + +"signal-exit@npm:^4.0.1": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 64c757b498cb8629ffa5f75485340594d2f8189e9b08700e69199069c8e3070fb3e255f7ab873c05dc0b3cec412aea7402e10a5990cb6a050bd33ba062a6c549 + languageName: node + linkType: hard + +"simulate-event@npm:~1.4.0": + version: 1.4.0 + resolution: "simulate-event@npm:1.4.0" + dependencies: + xtend: ^4.0.1 + checksum: d2cbb62f7a0c22aa1964e4df7a01b717c3c437df40dde70112fc06046cb8c7a03ca582571754653abc7c8c06df43d28c57b4f0bdf7a587094e4d6282357eb506 + languageName: node + linkType: hard + +"sisteransi@npm:^1.0.5": + version: 1.0.5 + resolution: "sisteransi@npm:1.0.5" + checksum: aba6438f46d2bfcef94cf112c835ab395172c75f67453fe05c340c770d3c402363018ae1ab4172a1026a90c47eaccf3af7b6ff6fa749a680c2929bd7fa2b37a4 + languageName: node + linkType: hard + +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c + languageName: node + linkType: hard + +"slice-ansi@npm:^4.0.0": + version: 4.0.0 + resolution: "slice-ansi@npm:4.0.0" + dependencies: + ansi-styles: ^4.0.0 + astral-regex: ^2.0.0 + is-fullwidth-code-point: ^3.0.0 + checksum: 4a82d7f085b0e1b070e004941ada3c40d3818563ac44766cca4ceadd2080427d337554f9f99a13aaeb3b4a94d9964d9466c807b3d7b7541d1ec37ee32d308756 + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^7.0.0": + version: 7.0.0 + resolution: "socks-proxy-agent@npm:7.0.0" + dependencies: + agent-base: ^6.0.2 + debug: ^4.3.3 + socks: ^2.6.2 + checksum: 720554370154cbc979e2e9ce6a6ec6ced205d02757d8f5d93fe95adae454fc187a5cbfc6b022afab850a5ce9b4c7d73e0f98e381879cf45f66317a4895953846 + languageName: node + linkType: hard + +"socks@npm:^2.6.2": + version: 2.7.1 + resolution: "socks@npm:2.7.1" + dependencies: + ip: ^2.0.0 + smart-buffer: ^4.2.0 + checksum: 259d9e3e8e1c9809a7f5c32238c3d4d2a36b39b83851d0f573bfde5f21c4b1288417ce1af06af1452569cd1eb0841169afd4998f0e04ba04656f6b7f0e46d748 + languageName: node + linkType: hard + +"source-list-map@npm:^2.0.0": + version: 2.0.1 + resolution: "source-list-map@npm:2.0.1" + checksum: 806efc6f75e7cd31e4815e7a3aaf75a45c704871ea4075cb2eb49882c6fca28998f44fc5ac91adb6de03b2882ee6fb02f951fdc85e6a22b338c32bfe19557938 + languageName: node + linkType: hard + +"source-map-js@npm:^1.0.1, source-map-js@npm:^1.0.2": + version: 1.0.2 + resolution: "source-map-js@npm:1.0.2" + checksum: c049a7fc4deb9a7e9b481ae3d424cc793cb4845daa690bc5a05d428bf41bf231ced49b4cf0c9e77f9d42fdb3d20d6187619fc586605f5eabe995a316da8d377c + languageName: node + linkType: hard + +"source-map-loader@npm:^1.0.2": + version: 1.1.3 + resolution: "source-map-loader@npm:1.1.3" + dependencies: + abab: ^2.0.5 + iconv-lite: ^0.6.2 + loader-utils: ^2.0.0 + schema-utils: ^3.0.0 + source-map: ^0.6.1 + whatwg-mimetype: ^2.3.0 + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + checksum: 0ca16a1458f206e12925f242ce52913b5f35de657d2ec17fd60ab3de7fa85b72b6707951b7a18899bdf05679d679a8b9edeb660c557aafa66453886d6907e3ec + languageName: node + linkType: hard + +"source-map-loader@npm:~1.0.2": + version: 1.0.2 + resolution: "source-map-loader@npm:1.0.2" + dependencies: + data-urls: ^2.0.0 + iconv-lite: ^0.6.2 + loader-utils: ^2.0.0 + schema-utils: ^2.7.0 + source-map: ^0.6.1 + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + checksum: 0360b536e904f8fea452d0e122b9199661765229dc62a4b8093cc9d14e985f2ddd146355ede6d11acdd0b9bf4639b364e2526afcf9d3218ed45af63aa5eb053f + languageName: node + linkType: hard + +"source-map-support@npm:0.5.13": + version: 0.5.13 + resolution: "source-map-support@npm:0.5.13" + dependencies: + buffer-from: ^1.0.0 + source-map: ^0.6.0 + checksum: 933550047b6c1a2328599a21d8b7666507427c0f5ef5eaadd56b5da0fd9505e239053c66fe181bf1df469a3b7af9d775778eee283cbb7ae16b902ddc09e93a97 + languageName: node + linkType: hard + +"source-map-support@npm:~0.5.20": + version: 0.5.21 + resolution: "source-map-support@npm:0.5.21" + dependencies: + buffer-from: ^1.0.0 + source-map: ^0.6.0 + checksum: 43e98d700d79af1d36f859bdb7318e601dfc918c7ba2e98456118ebc4c4872b327773e5a1df09b0524e9e5063bb18f0934538eace60cca2710d1fa687645d137 + languageName: node + linkType: hard + +"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1": + version: 0.6.1 + resolution: "source-map@npm:0.6.1" + checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 + languageName: node + linkType: hard + +"spdx-correct@npm:^3.0.0": + version: 3.2.0 + resolution: "spdx-correct@npm:3.2.0" + dependencies: + spdx-expression-parse: ^3.0.0 + spdx-license-ids: ^3.0.0 + checksum: e9ae98d22f69c88e7aff5b8778dc01c361ef635580e82d29e5c60a6533cc8f4d820803e67d7432581af0cc4fb49973125076ee3b90df191d153e223c004193b2 + languageName: node + linkType: hard + +"spdx-exceptions@npm:^2.1.0": + version: 2.3.0 + resolution: "spdx-exceptions@npm:2.3.0" + checksum: cb69a26fa3b46305637123cd37c85f75610e8c477b6476fa7354eb67c08128d159f1d36715f19be6f9daf4b680337deb8c65acdcae7f2608ba51931540687ac0 + languageName: node + linkType: hard + +"spdx-expression-parse@npm:^3.0.0": + version: 3.0.1 + resolution: "spdx-expression-parse@npm:3.0.1" + dependencies: + spdx-exceptions: ^2.1.0 + spdx-license-ids: ^3.0.0 + checksum: a1c6e104a2cbada7a593eaa9f430bd5e148ef5290d4c0409899855ce8b1c39652bcc88a725259491a82601159d6dc790bedefc9016c7472f7de8de7361f8ccde + languageName: node + linkType: hard + +"spdx-license-ids@npm:^3.0.0": + version: 3.0.13 + resolution: "spdx-license-ids@npm:3.0.13" + checksum: 3469d85c65f3245a279fa11afc250c3dca96e9e847f2f79d57f466940c5bb8495da08a542646086d499b7f24a74b8d0b42f3fc0f95d50ff99af1f599f6360ad7 + languageName: node + linkType: hard + +"sprintf-js@npm:~1.0.2": + version: 1.0.3 + resolution: "sprintf-js@npm:1.0.3" + checksum: 19d79aec211f09b99ec3099b5b2ae2f6e9cdefe50bc91ac4c69144b6d3928a640bb6ae5b3def70c2e85a2c3d9f5ec2719921e3a59d3ca3ef4b2fd1a4656a0df3 + languageName: node + linkType: hard + +"ssri@npm:^10.0.0": + version: 10.0.5 + resolution: "ssri@npm:10.0.5" + dependencies: + minipass: ^7.0.3 + checksum: 0a31b65f21872dea1ed3f7c200d7bc1c1b91c15e419deca14f282508ba917cbb342c08a6814c7f68ca4ca4116dd1a85da2bbf39227480e50125a1ceffeecb750 + languageName: node + linkType: hard + +"stack-utils@npm:^2.0.3": + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" + dependencies: + escape-string-regexp: ^2.0.0 + checksum: 052bf4d25bbf5f78e06c1d5e67de2e088b06871fa04107ca8d3f0e9d9263326e2942c8bedee3545795fc77d787d443a538345eef74db2f8e35db3558c6f91ff7 + languageName: node + linkType: hard + +"string-length@npm:^4.0.1": + version: 4.0.2 + resolution: "string-length@npm:4.0.2" + dependencies: + char-regex: ^1.0.2 + strip-ansi: ^6.0.0 + checksum: ce85533ef5113fcb7e522bcf9e62cb33871aa99b3729cec5595f4447f660b0cefd542ca6df4150c97a677d58b0cb727a3fe09ac1de94071d05526c73579bf505 + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: ^8.0.0 + is-fullwidth-code-point: ^3.0.0 + strip-ansi: ^6.0.1 + checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb + languageName: node + linkType: hard + +"string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: ^0.2.0 + emoji-regex: ^9.2.2 + strip-ansi: ^7.0.1 + checksum: 7369deaa29f21dda9a438686154b62c2c5f661f8dda60449088f9f980196f7908fc39fdd1803e3e01541970287cf5deae336798337e9319a7055af89dafa7193 + languageName: node + linkType: hard + +"string.prototype.padend@npm:^3.0.0": + version: 3.1.5 + resolution: "string.prototype.padend@npm:3.1.5" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + checksum: fc915e0b6ae1dce07a9f5088429d84fda2c1c0ac9a05bc14a602f173cc2fdef32e4893dfba5656f8f955450c9c16deebdb8d303d27613a367bc6d8508a94cd5e + languageName: node + linkType: hard + +"string.prototype.trim@npm:^1.2.7": + version: 1.2.8 + resolution: "string.prototype.trim@npm:1.2.8" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + checksum: 49eb1a862a53aba73c3fb6c2a53f5463173cb1f4512374b623bcd6b43ad49dd559a06fb5789bdec771a40fc4d2a564411c0a75d35fb27e76bbe738c211ecff07 + languageName: node + linkType: hard + +"string.prototype.trimend@npm:^1.0.6": + version: 1.0.7 + resolution: "string.prototype.trimend@npm:1.0.7" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + checksum: 2375516272fd1ba75992f4c4aa88a7b5f3c7a9ca308d963bcd5645adf689eba6f8a04ebab80c33e30ec0aefc6554181a3a8416015c38da0aa118e60ec896310c + languageName: node + linkType: hard + +"string.prototype.trimstart@npm:^1.0.6": + version: 1.0.7 + resolution: "string.prototype.trimstart@npm:1.0.7" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + checksum: 13d0c2cb0d5ff9e926fa0bec559158b062eed2b68cd5be777ffba782c96b2b492944e47057274e064549b94dd27cf81f48b27a31fee8af5b574cff253e7eb613 + languageName: node + linkType: hard + +"string_decoder@npm:^1.1.1": + version: 1.3.0 + resolution: "string_decoder@npm:1.3.0" + dependencies: + safe-buffer: ~5.2.0 + checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 + languageName: node + linkType: hard + +"string_decoder@npm:~1.1.1": + version: 1.1.1 + resolution: "string_decoder@npm:1.1.1" + dependencies: + safe-buffer: ~5.1.0 + checksum: 9ab7e56f9d60a28f2be697419917c50cac19f3e8e6c28ef26ed5f4852289fe0de5d6997d29becf59028556f2c62983790c1d9ba1e2a3cc401768ca12d5183a5b + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: ^5.0.1 + checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: ^6.0.1 + checksum: 859c73fcf27869c22a4e4d8c6acfe690064659e84bef9458aa6d13719d09ca88dcfd40cbf31fd0be63518ea1a643fe070b4827d353e09533a5b0b9fd4553d64d + languageName: node + linkType: hard + +"strip-bom@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-bom@npm:3.0.0" + checksum: 8d50ff27b7ebe5ecc78f1fe1e00fcdff7af014e73cf724b46fb81ef889eeb1015fc5184b64e81a2efe002180f3ba431bdd77e300da5c6685d702780fbf0c8d5b + languageName: node + linkType: hard + +"strip-bom@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-bom@npm:4.0.0" + checksum: 9dbcfbaf503c57c06af15fe2c8176fb1bf3af5ff65003851a102749f875a6dbe0ab3b30115eccf6e805e9d756830d3e40ec508b62b3f1ddf3761a20ebe29d3f3 + languageName: node + linkType: hard + +"strip-final-newline@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-final-newline@npm:2.0.0" + checksum: 69412b5e25731e1938184b5d489c32e340605bb611d6140344abc3421b7f3c6f9984b21dff296dfcf056681b82caa3bb4cc996a965ce37bcfad663e92eae9c64 + languageName: node + linkType: hard + +"strip-final-newline@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-final-newline@npm:3.0.0" + checksum: 23ee263adfa2070cd0f23d1ac14e2ed2f000c9b44229aec9c799f1367ec001478469560abefd00c5c99ee6f0b31c137d53ec6029c53e9f32a93804e18c201050 + languageName: node + linkType: hard + +"strip-indent@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-indent@npm:4.0.0" + dependencies: + min-indent: ^1.0.1 + checksum: 06cbcd93da721c46bc13caeb1c00af93a9b18146a1c95927672d2decab6a25ad83662772417cea9317a2507fb143253ecc23c4415b64f5828cef9b638a744598 + languageName: node + linkType: hard + +"strip-json-comments@npm:^3.1.1": + version: 3.1.1 + resolution: "strip-json-comments@npm:3.1.1" + checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 + languageName: node + linkType: hard + +"style-loader@npm:^3.3.1, style-loader@npm:~3.3.1": + version: 3.3.3 + resolution: "style-loader@npm:3.3.3" + peerDependencies: + webpack: ^5.0.0 + checksum: f59c953f56f6a935bd6a1dfa409f1128fed2b66b48ce4a7a75b85862a7156e5e90ab163878962762f528ec4d510903d828da645e143fbffd26f055dc1c094078 + languageName: node + linkType: hard + +"style-mod@npm:^4.0.0, style-mod@npm:^4.1.0": + version: 4.1.0 + resolution: "style-mod@npm:4.1.0" + checksum: 8402b14ca11113a3640d46b3cf7ba49f05452df7846bc5185a3535d9b6a64a3019e7fb636b59ccbb7816aeb0725b24723e77a85b05612a9360e419958e13b4e6 + languageName: node + linkType: hard + +"style-search@npm:^0.1.0": + version: 0.1.0 + resolution: "style-search@npm:0.1.0" + checksum: 3cfefe335033aad6d47da0725cb48f5db91a73935954c77eab77d9e415e6668cdb406da4a4f7ef9f1aca77853cf5ba7952c45e869caa5bd6439691d88098d468 + languageName: node + linkType: hard + +"stylelint-config-recommended@npm:^13.0.0": + version: 13.0.0 + resolution: "stylelint-config-recommended@npm:13.0.0" + peerDependencies: + stylelint: ^15.10.0 + checksum: a56eb6d1a7c7f3a7a172b54bc34218859ba22a5a06816fb4d0964f66cb83cf372062f2c97830e994ad68243548e15fc49abf28887c3261ab1b471b3aa69f8e82 + languageName: node + linkType: hard + +"stylelint-config-standard@npm:^34.0.0": + version: 34.0.0 + resolution: "stylelint-config-standard@npm:34.0.0" + dependencies: + stylelint-config-recommended: ^13.0.0 + peerDependencies: + stylelint: ^15.10.0 + checksum: 536249800c04b48a9c354067765f042713982e8222be17bb897a27d26546e50adfb87e6f1e4541807d720de3554345da99ab470e13e8d7ab0ab326c73ae3df61 + languageName: node + linkType: hard + +"stylelint-csstree-validator@npm:^3.0.0": + version: 3.0.0 + resolution: "stylelint-csstree-validator@npm:3.0.0" + dependencies: + css-tree: ^2.3.1 + peerDependencies: + stylelint: ">=7.0.0 <16.0.0" + checksum: e518c8c17714022946b7637c23a6816fd2ccdd6052a19c5a138b3f7ce9b913ead9c612ac4401e102f14800a19967dbfd4b588b44cbf3f3c6a5984bef7bda4017 + languageName: node + linkType: hard + +"stylelint-prettier@npm:^4.0.0": + version: 4.0.2 + resolution: "stylelint-prettier@npm:4.0.2" + dependencies: + prettier-linter-helpers: ^1.0.0 + peerDependencies: + prettier: ">=3.0.0" + stylelint: ">=15.8.0" + checksum: b60112c10b8f31456211d65b4c17238fdaf46ee9f80ab035621f2eb86b47505a4b9582d99f4334dfe370cc8104de870f7fcc256737d0f2e68f4357239f739054 + languageName: node + linkType: hard + +"stylelint@npm:^15.10.1": + version: 15.10.3 + resolution: "stylelint@npm:15.10.3" + dependencies: + "@csstools/css-parser-algorithms": ^2.3.1 + "@csstools/css-tokenizer": ^2.2.0 + "@csstools/media-query-list-parser": ^2.1.4 + "@csstools/selector-specificity": ^3.0.0 + balanced-match: ^2.0.0 + colord: ^2.9.3 + cosmiconfig: ^8.2.0 + css-functions-list: ^3.2.0 + css-tree: ^2.3.1 + debug: ^4.3.4 + fast-glob: ^3.3.1 + fastest-levenshtein: ^1.0.16 + file-entry-cache: ^6.0.1 + global-modules: ^2.0.0 + globby: ^11.1.0 + globjoin: ^0.1.4 + html-tags: ^3.3.1 + ignore: ^5.2.4 + import-lazy: ^4.0.0 + imurmurhash: ^0.1.4 + is-plain-object: ^5.0.0 + known-css-properties: ^0.28.0 + mathml-tag-names: ^2.1.3 + meow: ^10.1.5 + micromatch: ^4.0.5 + normalize-path: ^3.0.0 + picocolors: ^1.0.0 + postcss: ^8.4.27 + postcss-resolve-nested-selector: ^0.1.1 + postcss-safe-parser: ^6.0.0 + postcss-selector-parser: ^6.0.13 + postcss-value-parser: ^4.2.0 + resolve-from: ^5.0.0 + string-width: ^4.2.3 + strip-ansi: ^6.0.1 + style-search: ^0.1.0 + supports-hyperlinks: ^3.0.0 + svg-tags: ^1.0.0 + table: ^6.8.1 + write-file-atomic: ^5.0.1 + bin: + stylelint: bin/stylelint.mjs + checksum: eb70dd0e4d500141f4868ddb7403ad7eb8732b02a3f2fe3907d0859369cedd395b60b0075da758b5be07de771c586b1bf64de4eead8159d46b0d16beff827e67 + languageName: node + linkType: hard + +"supports-color@npm:^5.3.0": + version: 5.5.0 + resolution: "supports-color@npm:5.5.0" + dependencies: + has-flag: ^3.0.0 + checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac + languageName: node + linkType: hard + +"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0, supports-color@npm:^7.2.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: ^4.0.0 + checksum: 3dda818de06ebbe5b9653e07842d9479f3555ebc77e9a0280caf5a14fb877ffee9ed57007c3b78f5a6324b8dbeec648d9e97a24e2ed9fdb81ddc69ea07100f4a + languageName: node + linkType: hard + +"supports-color@npm:^8.0.0": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: ^4.0.0 + checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 + languageName: node + linkType: hard + +"supports-hyperlinks@npm:^3.0.0": + version: 3.0.0 + resolution: "supports-hyperlinks@npm:3.0.0" + dependencies: + has-flag: ^4.0.0 + supports-color: ^7.0.0 + checksum: 41021305de5255b10d821bf93c7a781f783e1693d0faec293d7fc7ccf17011b90bde84b0295fa92ba75c6c390351fe84fdd18848cad4bf656e464a958243c3e7 + languageName: node + linkType: hard + +"supports-preserve-symlinks-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "supports-preserve-symlinks-flag@npm:1.0.0" + checksum: 53b1e247e68e05db7b3808b99b892bd36fb096e6fba213a06da7fab22045e97597db425c724f2bbd6c99a3c295e1e73f3e4de78592289f38431049e1277ca0ae + languageName: node + linkType: hard + +"svg-tags@npm:^1.0.0": + version: 1.0.0 + resolution: "svg-tags@npm:1.0.0" + checksum: 407e5ef87cfa2fb81c61d738081c2decd022ce13b922d035b214b49810630bf5d1409255a4beb3a940b77b32f6957806deff16f1bf0ce1ab11c7a184115a0b7f + languageName: node + linkType: hard + +"symbol-tree@npm:^3.2.4": + version: 3.2.4 + resolution: "symbol-tree@npm:3.2.4" + checksum: 6e8fc7e1486b8b54bea91199d9535bb72f10842e40c79e882fc94fb7b14b89866adf2fd79efa5ebb5b658bc07fb459ccce5ac0e99ef3d72f474e74aaf284029d + languageName: node + linkType: hard + +"synckit@npm:^0.8.5": + version: 0.8.5 + resolution: "synckit@npm:0.8.5" + dependencies: + "@pkgr/utils": ^2.3.1 + tslib: ^2.5.0 + checksum: 8a9560e5d8f3d94dc3cf5f7b9c83490ffa30d320093560a37b88f59483040771fd1750e76b9939abfbb1b5a23fd6dfbae77f6b338abffe7cae7329cd9b9bb86b + languageName: node + linkType: hard + +"systeminformation@npm:^5.8.6": + version: 5.21.4 + resolution: "systeminformation@npm:5.21.4" + bin: + systeminformation: lib/cli.js + checksum: 2324456d1fee85efd3f5408d989afc29f4c8e1cc071f9c1082fc500cc3a4acb7d3be4e5706e706acf1558a4637bd8db028cafd5dcb3ccfd11514177ff0b870aa + conditions: (os=darwin | os=linux | os=win32 | os=freebsd | os=openbsd | os=netbsd | os=sunos | os=android) + languageName: node + linkType: hard + +"table@npm:^6.8.1": + version: 6.8.1 + resolution: "table@npm:6.8.1" + dependencies: + ajv: ^8.0.1 + lodash.truncate: ^4.4.2 + slice-ansi: ^4.0.0 + string-width: ^4.2.3 + strip-ansi: ^6.0.1 + checksum: 08249c7046125d9d0a944a6e96cfe9ec66908d6b8a9db125531be6eb05fa0de047fd5542e9d43b4f987057f00a093b276b8d3e19af162a9c40db2681058fd306 + languageName: node + linkType: hard + +"tapable@npm:^2.1.1, tapable@npm:^2.2.0": + version: 2.2.1 + resolution: "tapable@npm:2.2.1" + checksum: 3b7a1b4d86fa940aad46d9e73d1e8739335efd4c48322cb37d073eb6f80f5281889bf0320c6d8ffcfa1a0dd5bfdbd0f9d037e252ef972aca595330538aac4d51 + languageName: node + linkType: hard + +"tar@npm:^6.1.11, tar@npm:^6.1.2": + version: 6.2.0 + resolution: "tar@npm:6.2.0" + dependencies: + chownr: ^2.0.0 + fs-minipass: ^2.0.0 + minipass: ^5.0.0 + minizlib: ^2.1.1 + mkdirp: ^1.0.3 + yallist: ^4.0.0 + checksum: db4d9fe74a2082c3a5016630092c54c8375ff3b280186938cfd104f2e089c4fd9bad58688ef6be9cf186a889671bf355c7cda38f09bbf60604b281715ca57f5c + languageName: node + linkType: hard + +"terser-webpack-plugin@npm:^5.3.7": + version: 5.3.9 + resolution: "terser-webpack-plugin@npm:5.3.9" + dependencies: + "@jridgewell/trace-mapping": ^0.3.17 + jest-worker: ^27.4.5 + schema-utils: ^3.1.1 + serialize-javascript: ^6.0.1 + terser: ^5.16.8 + peerDependencies: + webpack: ^5.1.0 + peerDependenciesMeta: + "@swc/core": + optional: true + esbuild: + optional: true + uglify-js: + optional: true + checksum: 41705713d6f9cb83287936b21e27c658891c78c4392159f5148b5623f0e8c48559869779619b058382a4c9758e7820ea034695e57dc7c474b4962b79f553bc5f + languageName: node + linkType: hard + +"terser@npm:^5.16.8": + version: 5.19.4 + resolution: "terser@npm:5.19.4" + dependencies: + "@jridgewell/source-map": ^0.3.3 + acorn: ^8.8.2 + commander: ^2.20.0 + source-map-support: ~0.5.20 + bin: + terser: bin/terser + checksum: 09273ce7d3fbe8fea0ec2603ad1c06cc304838bdac42bbfe77835b0b0b6c4a894054575ca518fe16c95d5c401574a8c703f4fde97da45f1c972ea568e6ecafda + languageName: node + linkType: hard + +"test-exclude@npm:^6.0.0": + version: 6.0.0 + resolution: "test-exclude@npm:6.0.0" + dependencies: + "@istanbuljs/schema": ^0.1.2 + glob: ^7.1.4 + minimatch: ^3.0.4 + checksum: 3b34a3d77165a2cb82b34014b3aba93b1c4637a5011807557dc2f3da826c59975a5ccad765721c4648b39817e3472789f9b0fa98fc854c5c1c7a1e632aacdc28 + languageName: node + linkType: hard + +"text-table@npm:^0.2.0": + version: 0.2.0 + resolution: "text-table@npm:0.2.0" + checksum: b6937a38c80c7f84d9c11dd75e49d5c44f71d95e810a3250bd1f1797fc7117c57698204adf676b71497acc205d769d65c16ae8fa10afad832ae1322630aef10a + languageName: node + linkType: hard + +"titleize@npm:^3.0.0": + version: 3.0.0 + resolution: "titleize@npm:3.0.0" + checksum: 71fbbeabbfb36ccd840559f67f21e356e1d03da2915b32d2ae1a60ddcc13a124be2739f696d2feb884983441d159a18649e8d956648d591bdad35c430a6b6d28 + languageName: node + linkType: hard + +"tmpl@npm:1.0.5": + version: 1.0.5 + resolution: "tmpl@npm:1.0.5" + checksum: cd922d9b853c00fe414c5a774817be65b058d54a2d01ebb415840960406c669a0fc632f66df885e24cb022ec812739199ccbdb8d1164c3e513f85bfca5ab2873 + languageName: node + linkType: hard + +"to-fast-properties@npm:^2.0.0": + version: 2.0.0 + resolution: "to-fast-properties@npm:2.0.0" + checksum: be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: ^7.0.0 + checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed + languageName: node + linkType: hard + +"topojson-client@npm:^3.1.0": + version: 3.1.0 + resolution: "topojson-client@npm:3.1.0" + dependencies: + commander: 2 + bin: + topo2geo: bin/topo2geo + topomerge: bin/topomerge + topoquantize: bin/topoquantize + checksum: 8c029a4f18324ace0b8b55dd90edbd40c9e3c6de18bafbb5da37ca20ebf20e26fbd4420891acb3c2c264e214185f7557871f5651a9eee517028663be98d836de + languageName: node + linkType: hard + +"tough-cookie@npm:^4.1.2": + version: 4.1.3 + resolution: "tough-cookie@npm:4.1.3" + dependencies: + psl: ^1.1.33 + punycode: ^2.1.1 + universalify: ^0.2.0 + url-parse: ^1.5.3 + checksum: c9226afff36492a52118432611af083d1d8493a53ff41ec4ea48e5b583aec744b989e4280bcf476c910ec1525a89a4a0f1cae81c08b18fb2ec3a9b3a72b91dcc + languageName: node + linkType: hard + +"tr46@npm:^2.1.0": + version: 2.1.0 + resolution: "tr46@npm:2.1.0" + dependencies: + punycode: ^2.1.1 + checksum: ffe6049b9dca3ae329b059aada7f515b0f0064c611b39b51ff6b53897e954650f6f63d9319c6c008d36ead477c7b55e5f64c9dc60588ddc91ff720d64eb710b3 + languageName: node + linkType: hard + +"tr46@npm:^3.0.0": + version: 3.0.0 + resolution: "tr46@npm:3.0.0" + dependencies: + punycode: ^2.1.1 + checksum: 44c3cc6767fb800490e6e9fd64fd49041aa4e49e1f6a012b34a75de739cc9ed3a6405296072c1df8b6389ae139c5e7c6496f659cfe13a04a4bff3a1422981270 + languageName: node + linkType: hard + +"tr46@npm:~0.0.3": + version: 0.0.3 + resolution: "tr46@npm:0.0.3" + checksum: 726321c5eaf41b5002e17ffbd1fb7245999a073e8979085dacd47c4b4e8068ff5777142fc6726d6ca1fd2ff16921b48788b87225cbc57c72636f6efa8efbffe3 + languageName: node + linkType: hard + +"trim-newlines@npm:^4.0.2": + version: 4.1.1 + resolution: "trim-newlines@npm:4.1.1" + checksum: 5b09f8e329e8f33c1111ef26906332ba7ba7248cde3e26fc054bb3d69f2858bf5feedca9559c572ff91f33e52977c28e0d41c387df6a02a633cbb8c2d8238627 + languageName: node + linkType: hard + +"ts-api-utils@npm:^1.0.1": + version: 1.0.3 + resolution: "ts-api-utils@npm:1.0.3" + peerDependencies: + typescript: ">=4.2.0" + checksum: 441cc4489d65fd515ae6b0f4eb8690057add6f3b6a63a36073753547fb6ce0c9ea0e0530220a0b282b0eec535f52c4dfc315d35f8a4c9a91c0def0707a714ca6 + languageName: node + linkType: hard + +"ts-jest@npm:^29.1.0": + version: 29.1.1 + resolution: "ts-jest@npm:29.1.1" + dependencies: + bs-logger: 0.x + fast-json-stable-stringify: 2.x + jest-util: ^29.0.0 + json5: ^2.2.3 + lodash.memoize: 4.x + make-error: 1.x + semver: ^7.5.3 + yargs-parser: ^21.0.1 + peerDependencies: + "@babel/core": ">=7.0.0-beta.0 <8" + "@jest/types": ^29.0.0 + babel-jest: ^29.0.0 + jest: ^29.0.0 + typescript: ">=4.3 <6" + peerDependenciesMeta: + "@babel/core": + optional: true + "@jest/types": + optional: true + babel-jest: + optional: true + esbuild: + optional: true + bin: + ts-jest: cli.js + checksum: a8c9e284ed4f819526749f6e4dc6421ec666f20ab44d31b0f02b4ed979975f7580b18aea4813172d43e39b29464a71899f8893dd29b06b4a351a3af8ba47b402 + languageName: node + linkType: hard + +"tslib@npm:^2.5.0, tslib@npm:^2.6.0": + version: 2.6.2 + resolution: "tslib@npm:2.6.2" + checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad + languageName: node + linkType: hard + +"tslib@npm:~2.5.0": + version: 2.5.3 + resolution: "tslib@npm:2.5.3" + checksum: 88902b309afaf83259131c1e13da1dceb0ad1682a213143a1346a649143924d78cf3760c448b84d796938fd76127183894f8d85cbb3bf9c4fddbfcc140c0003c + languageName: node + linkType: hard + +"type-check@npm:^0.4.0, type-check@npm:~0.4.0": + version: 0.4.0 + resolution: "type-check@npm:0.4.0" + dependencies: + prelude-ls: ^1.2.1 + checksum: ec688ebfc9c45d0c30412e41ca9c0cdbd704580eb3a9ccf07b9b576094d7b86a012baebc95681999dd38f4f444afd28504cb3a89f2ef16b31d4ab61a0739025a + languageName: node + linkType: hard + +"type-detect@npm:4.0.8": + version: 4.0.8 + resolution: "type-detect@npm:4.0.8" + checksum: 62b5628bff67c0eb0b66afa371bd73e230399a8d2ad30d852716efcc4656a7516904570cd8631a49a3ce57c10225adf5d0cbdcb47f6b0255fe6557c453925a15 + languageName: node + linkType: hard + +"type-fest@npm:^0.20.2": + version: 0.20.2 + resolution: "type-fest@npm:0.20.2" + checksum: 4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73 + languageName: node + linkType: hard + +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: e6b32a3b3877f04339bae01c193b273c62ba7bfc9e325b8703c4ee1b32dc8fe4ef5dfa54bf78265e069f7667d058e360ae0f37be5af9f153b22382cd55a9afe0 + languageName: node + linkType: hard + +"type-fest@npm:^1.0.1, type-fest@npm:^1.2.1, type-fest@npm:^1.2.2": + version: 1.4.0 + resolution: "type-fest@npm:1.4.0" + checksum: b011c3388665b097ae6a109a437a04d6f61d81b7357f74cbcb02246f2f5bd72b888ae33631b99871388122ba0a87f4ff1c94078e7119ff22c70e52c0ff828201 + languageName: node + linkType: hard + +"typed-array-buffer@npm:^1.0.0": + version: 1.0.0 + resolution: "typed-array-buffer@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.2.1 + is-typed-array: ^1.1.10 + checksum: 3e0281c79b2a40cd97fe715db803884301993f4e8c18e8d79d75fd18f796e8cd203310fec8c7fdb5e6c09bedf0af4f6ab8b75eb3d3a85da69328f28a80456bd3 + languageName: node + linkType: hard + +"typed-array-byte-length@npm:^1.0.0": + version: 1.0.0 + resolution: "typed-array-byte-length@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + for-each: ^0.3.3 + has-proto: ^1.0.1 + is-typed-array: ^1.1.10 + checksum: b03db16458322b263d87a702ff25388293f1356326c8a678d7515767ef563ef80e1e67ce648b821ec13178dd628eb2afdc19f97001ceae7a31acf674c849af94 + languageName: node + linkType: hard + +"typed-array-byte-offset@npm:^1.0.0": + version: 1.0.0 + resolution: "typed-array-byte-offset@npm:1.0.0" + dependencies: + available-typed-arrays: ^1.0.5 + call-bind: ^1.0.2 + for-each: ^0.3.3 + has-proto: ^1.0.1 + is-typed-array: ^1.1.10 + checksum: 04f6f02d0e9a948a95fbfe0d5a70b002191fae0b8fe0fe3130a9b2336f043daf7a3dda56a31333c35a067a97e13f539949ab261ca0f3692c41603a46a94e960b + languageName: node + linkType: hard + +"typed-array-length@npm:^1.0.4": + version: 1.0.4 + resolution: "typed-array-length@npm:1.0.4" + dependencies: + call-bind: ^1.0.2 + for-each: ^0.3.3 + is-typed-array: ^1.1.9 + checksum: 2228febc93c7feff142b8c96a58d4a0d7623ecde6c7a24b2b98eb3170e99f7c7eff8c114f9b283085cd59dcd2bd43aadf20e25bba4b034a53c5bb292f71f8956 + languageName: node + linkType: hard + +"typescript@npm:~5.0.2": + version: 5.0.4 + resolution: "typescript@npm:5.0.4" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 82b94da3f4604a8946da585f7d6c3025fff8410779e5bde2855ab130d05e4fd08938b9e593b6ebed165bda6ad9292b230984f10952cf82f0a0ca07bbeaa08172 + languageName: node + linkType: hard + +"typescript@patch:typescript@~5.0.2#~builtin": + version: 5.0.4 + resolution: "typescript@patch:typescript@npm%3A5.0.4#~builtin::version=5.0.4&hash=85af82" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: bb309d320c59a26565fb3793dba550576ab861018ff3fd1b7fccabbe46ae4a35546bc45f342c0a0b6f265c801ccdf64ffd68f548f117ceb7f0eac4b805cd52a9 + languageName: node + linkType: hard + +"typestyle@npm:^2.0.4": + version: 2.4.0 + resolution: "typestyle@npm:2.4.0" + dependencies: + csstype: 3.0.10 + free-style: 3.1.0 + checksum: 8b4f02c24f67b594f98507b15a753dabd4db5eb0af007e1d310527c64030e11e9464b25b5a6bc65fb5eec9a4459a8336050121ecc29063ac87b8b47a6d698893 + languageName: node + linkType: hard + +"unbox-primitive@npm:^1.0.2": + version: 1.0.2 + resolution: "unbox-primitive@npm:1.0.2" + dependencies: + call-bind: ^1.0.2 + has-bigints: ^1.0.2 + has-symbols: ^1.0.3 + which-boxed-primitive: ^1.0.2 + checksum: b7a1cf5862b5e4b5deb091672ffa579aa274f648410009c81cca63fed3b62b610c4f3b773f912ce545bb4e31edc3138975b5bc777fc6e4817dca51affb6380e9 + languageName: node + linkType: hard + +"unicode-canonical-property-names-ecmascript@npm:^2.0.0": + version: 2.0.0 + resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" + checksum: 39be078afd014c14dcd957a7a46a60061bc37c4508ba146517f85f60361acf4c7539552645ece25de840e17e293baa5556268d091ca6762747fdd0c705001a45 + languageName: node + linkType: hard + +"unicode-match-property-ecmascript@npm:^2.0.0": + version: 2.0.0 + resolution: "unicode-match-property-ecmascript@npm:2.0.0" + dependencies: + unicode-canonical-property-names-ecmascript: ^2.0.0 + unicode-property-aliases-ecmascript: ^2.0.0 + checksum: 1f34a7434a23df4885b5890ac36c5b2161a809887000be560f56ad4b11126d433c0c1c39baf1016bdabed4ec54829a6190ee37aa24919aa116dc1a5a8a62965a + languageName: node + linkType: hard + +"unicode-match-property-value-ecmascript@npm:^2.1.0": + version: 2.1.0 + resolution: "unicode-match-property-value-ecmascript@npm:2.1.0" + checksum: 8d6f5f586b9ce1ed0e84a37df6b42fdba1317a05b5df0c249962bd5da89528771e2d149837cad11aa26bcb84c35355cb9f58a10c3d41fa3b899181ece6c85220 + languageName: node + linkType: hard + +"unicode-property-aliases-ecmascript@npm:^2.0.0": + version: 2.1.0 + resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" + checksum: 243524431893649b62cc674d877bd64ef292d6071dd2fd01ab4d5ad26efbc104ffcd064f93f8a06b7e4ec54c172bf03f6417921a0d8c3a9994161fe1f88f815b + languageName: node + linkType: hard + +"unique-filename@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-filename@npm:3.0.0" + dependencies: + unique-slug: ^4.0.0 + checksum: 8e2f59b356cb2e54aab14ff98a51ac6c45781d15ceaab6d4f1c2228b780193dc70fae4463ce9e1df4479cb9d3304d7c2043a3fb905bdeca71cc7e8ce27e063df + languageName: node + linkType: hard + +"unique-slug@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-slug@npm:4.0.0" + dependencies: + imurmurhash: ^0.1.4 + checksum: 0884b58365af59f89739e6f71e3feacb5b1b41f2df2d842d0757933620e6de08eff347d27e9d499b43c40476cbaf7988638d3acb2ffbcb9d35fd035591adfd15 + languageName: node + linkType: hard + +"universalify@npm:^0.2.0": + version: 0.2.0 + resolution: "universalify@npm:0.2.0" + checksum: e86134cb12919d177c2353196a4cc09981524ee87abf621f7bc8d249dbbbebaec5e7d1314b96061497981350df786e4c5128dbf442eba104d6e765bc260678b5 + languageName: node + linkType: hard + +"universalify@npm:^2.0.0": + version: 2.0.0 + resolution: "universalify@npm:2.0.0" + checksum: 2406a4edf4a8830aa6813278bab1f953a8e40f2f63a37873ffa9a3bc8f9745d06cc8e88f3572cb899b7e509013f7f6fcc3e37e8a6d914167a5381d8440518c44 + languageName: node + linkType: hard + +"untildify@npm:^4.0.0": + version: 4.0.0 + resolution: "untildify@npm:4.0.0" + checksum: 39ced9c418a74f73f0a56e1ba4634b4d959422dff61f4c72a8e39f60b99380c1b45ed776fbaa0a4101b157e4310d873ad7d114e8534ca02609b4916bb4187fb9 + languageName: node + linkType: hard + +"update-browserslist-db@npm:^1.0.11": + version: 1.0.11 + resolution: "update-browserslist-db@npm:1.0.11" + dependencies: + escalade: ^3.1.1 + picocolors: ^1.0.0 + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: b98327518f9a345c7cad5437afae4d2ae7d865f9779554baf2a200fdf4bac4969076b679b1115434bd6557376bdd37ca7583d0f9b8f8e302d7d4cc1e91b5f231 + languageName: node + linkType: hard + +"uri-js@npm:^4.2.2": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" + dependencies: + punycode: ^2.1.0 + checksum: 7167432de6817fe8e9e0c9684f1d2de2bb688c94388f7569f7dbdb1587c9f4ca2a77962f134ec90be0cc4d004c939ff0d05acc9f34a0db39a3c797dada262633 + languageName: node + linkType: hard + +"url-parse@npm:^1.5.3, url-parse@npm:~1.5.4": + version: 1.5.10 + resolution: "url-parse@npm:1.5.10" + dependencies: + querystringify: ^2.1.1 + requires-port: ^1.0.0 + checksum: fbdba6b1d83336aca2216bbdc38ba658d9cfb8fc7f665eb8b17852de638ff7d1a162c198a8e4ed66001ddbf6c9888d41e4798912c62b4fd777a31657989f7bdf + languageName: node + linkType: hard + +"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 + languageName: node + linkType: hard + +"util@npm:^0.10.3": + version: 0.10.4 + resolution: "util@npm:0.10.4" + dependencies: + inherits: 2.0.3 + checksum: 913f9a90d05a60e91f91af01b8bd37e06bca4cc02d7b49e01089f9d5b78be2fffd61fb1a41b517de7238c5fc7337fa939c62d1fb4eb82e014894c7bee6637aaf + languageName: node + linkType: hard + +"uuid@npm:^8.3.2": + version: 8.3.2 + resolution: "uuid@npm:8.3.2" + bin: + uuid: dist/bin/uuid + checksum: 5575a8a75c13120e2f10e6ddc801b2c7ed7d8f3c8ac22c7ed0c7b2ba6383ec0abda88c905085d630e251719e0777045ae3236f04c812184b7c765f63a70e58df + languageName: node + linkType: hard + +"v8-to-istanbul@npm:^9.0.1": + version: 9.1.0 + resolution: "v8-to-istanbul@npm:9.1.0" + dependencies: + "@jridgewell/trace-mapping": ^0.3.12 + "@types/istanbul-lib-coverage": ^2.0.1 + convert-source-map: ^1.6.0 + checksum: 2069d59ee46cf8d83b4adfd8a5c1a90834caffa9f675e4360f1157ffc8578ef0f763c8f32d128334424159bb6b01f3876acd39cd13297b2769405a9da241f8d1 + languageName: node + linkType: hard + +"validate-npm-package-license@npm:^3.0.1": + version: 3.0.4 + resolution: "validate-npm-package-license@npm:3.0.4" + dependencies: + spdx-correct: ^3.0.0 + spdx-expression-parse: ^3.0.0 + checksum: 35703ac889d419cf2aceef63daeadbe4e77227c39ab6287eeb6c1b36a746b364f50ba22e88591f5d017bc54685d8137bc2d328d0a896e4d3fd22093c0f32a9ad + languageName: node + linkType: hard + +"validate.io-array@npm:^1.0.3": + version: 1.0.6 + resolution: "validate.io-array@npm:1.0.6" + checksum: 54eca83ebc702e3e46499f9d9e77287a95ae25c4e727cd2fafee29c7333b3a36cca0c5d8f090b9406262786de80750fba85e7e7ef41e20bf8cc67d5570de449b + languageName: node + linkType: hard + +"validate.io-function@npm:^1.0.2": + version: 1.0.2 + resolution: "validate.io-function@npm:1.0.2" + checksum: e4cce2479a20cb7c42e8630c777fb107059c27bc32925f769e3a73ca5fd62b4892d897b3c80227e14d5fcd1c5b7d05544e0579d63e59f14034c0052cda7f7c44 + languageName: node + linkType: hard + +"validate.io-integer-array@npm:^1.0.0": + version: 1.0.0 + resolution: "validate.io-integer-array@npm:1.0.0" + dependencies: + validate.io-array: ^1.0.3 + validate.io-integer: ^1.0.4 + checksum: 5f6d7fab8df7d2bf546a05e830201768464605539c75a2c2417b632b4411a00df84b462f81eac75e1be95303e7e0ac92f244c137424739f4e15cd21c2eb52c7f + languageName: node + linkType: hard + +"validate.io-integer@npm:^1.0.4": + version: 1.0.5 + resolution: "validate.io-integer@npm:1.0.5" + dependencies: + validate.io-number: ^1.0.3 + checksum: 88b3f8bb5a5277a95305d64abbfc437079220ce4f57a148cc6113e7ccec03dd86b10a69d413982602aa90a62b8d516148a78716f550dcd3aff863ac1c2a7a5e6 + languageName: node + linkType: hard + +"validate.io-number@npm:^1.0.3": + version: 1.0.3 + resolution: "validate.io-number@npm:1.0.3" + checksum: 42418aeb6c969efa745475154fe576809b02eccd0961aad0421b090d6e7a12d23a3e28b0d5dddd2c6347c1a6bdccb82bba5048c716131cd20207244d50e07282 + languageName: node + linkType: hard + +"vega-canvas@npm:^1.2.6, vega-canvas@npm:^1.2.7": + version: 1.2.7 + resolution: "vega-canvas@npm:1.2.7" + checksum: 6ff92fcdf0c359f2f662909c859a7f4cb4a502436136ab2f4c02373c47a621996ec0eea23e2108f11d62a618be301de86cd8528b5058c2e207a53ddd7ff58d1b + languageName: node + linkType: hard + +"vega-crossfilter@npm:~4.1.1": + version: 4.1.1 + resolution: "vega-crossfilter@npm:4.1.1" + dependencies: + d3-array: ^3.2.2 + vega-dataflow: ^5.7.5 + vega-util: ^1.17.1 + checksum: e399f7e92d7ba273ad5c1a9e29d362a9ec7feaeacb976eff3aa205b318382fb37a9fac3150ec1cb806364cd2b2cb54d5f23aea3285db684df2b4c27836422464 + languageName: node + linkType: hard + +"vega-dataflow@npm:^5.7.3, vega-dataflow@npm:^5.7.5, vega-dataflow@npm:~5.7.5": + version: 5.7.5 + resolution: "vega-dataflow@npm:5.7.5" + dependencies: + vega-format: ^1.1.1 + vega-loader: ^4.5.1 + vega-util: ^1.17.1 + checksum: 917ed63e88b0871169a883f68da127a404d88e50c9ed6fa3f063a706016b064594fb804a2bf99f09bc4a899819cac320bdde12467edc861af1acc024552dd202 + languageName: node + linkType: hard + +"vega-encode@npm:~4.9.2": + version: 4.9.2 + resolution: "vega-encode@npm:4.9.2" + dependencies: + d3-array: ^3.2.2 + d3-interpolate: ^3.0.1 + vega-dataflow: ^5.7.5 + vega-scale: ^7.3.0 + vega-util: ^1.17.1 + checksum: fcba123d2efb865b4f6cf8e9d64e0752ebae163dcfe61013f4874f7fe6fce3003ea9dd83b89db3ffab2a1530532a7c902dd24dfec226eb53d08dcf69189f308d + languageName: node + linkType: hard + +"vega-event-selector@npm:^3.0.1, vega-event-selector@npm:~3.0.1": + version: 3.0.1 + resolution: "vega-event-selector@npm:3.0.1" + checksum: 66d09b5800a19a9b0c75f28811b140a1a2e70e84be6d6f87c568cdbce6e17c8e195f130f4e3de5d6dc737142d1f46f4fe7645177e154582cc8ba27c6845b54e8 + languageName: node + linkType: hard + +"vega-expression@npm:^5.0.1, vega-expression@npm:^5.1.0, vega-expression@npm:~5.1.0": + version: 5.1.0 + resolution: "vega-expression@npm:5.1.0" + dependencies: + "@types/estree": ^1.0.0 + vega-util: ^1.17.1 + checksum: 0355ebb6edd8f2ccc2dcf277a29b42b13f971725443212ce8a64cb8a02049f75f0add7ca9afcd3bc6744b93be791b526e7f983d9080d5052e9b0ca55bd488ae5 + languageName: node + linkType: hard + +"vega-force@npm:~4.2.0": + version: 4.2.0 + resolution: "vega-force@npm:4.2.0" + dependencies: + d3-force: ^3.0.0 + vega-dataflow: ^5.7.5 + vega-util: ^1.17.1 + checksum: 8a371ca8d0892bc3e932cc279bbf54fe8b88e2b384c42f8df9877c801191953f3ee3e2f516f675a69ecb052ed081232dfb3438989620e8ad5c2a316ccee60277 + languageName: node + linkType: hard + +"vega-format@npm:^1.1.1, vega-format@npm:~1.1.1": + version: 1.1.1 + resolution: "vega-format@npm:1.1.1" + dependencies: + d3-array: ^3.2.2 + d3-format: ^3.1.0 + d3-time-format: ^4.1.0 + vega-time: ^2.1.1 + vega-util: ^1.17.1 + checksum: d506acb8611a6340ff419ebf308a758a54aaf3cf141863553df83980dcf8dc7bf806bee257d11a52d43682d159d7be03ab8a92bdd4d018d8c9f39a70c45cb197 + languageName: node + linkType: hard + +"vega-functions@npm:^5.13.1, vega-functions@npm:~5.13.2": + version: 5.13.2 + resolution: "vega-functions@npm:5.13.2" + dependencies: + d3-array: ^3.2.2 + d3-color: ^3.1.0 + d3-geo: ^3.1.0 + vega-dataflow: ^5.7.5 + vega-expression: ^5.1.0 + vega-scale: ^7.3.0 + vega-scenegraph: ^4.10.2 + vega-selections: ^5.4.1 + vega-statistics: ^1.8.1 + vega-time: ^2.1.1 + vega-util: ^1.17.1 + checksum: 178498cf93c3d9ef392fb57a5c7992dbb9118c546a6acb4cff9783f911fb30dbf50634cbfd6e3a9bc358c4aec9a571bd55f9cf3de551213cd386f152ac882986 + languageName: node + linkType: hard + +"vega-geo@npm:~4.4.1": + version: 4.4.1 + resolution: "vega-geo@npm:4.4.1" + dependencies: + d3-array: ^3.2.2 + d3-color: ^3.1.0 + d3-geo: ^3.1.0 + vega-canvas: ^1.2.7 + vega-dataflow: ^5.7.5 + vega-projection: ^1.6.0 + vega-statistics: ^1.8.1 + vega-util: ^1.17.1 + checksum: e9c62d9134c2449a1a80cd5cb71ed6dc455d893a36fdcb1a696bcae3897670c32687cf14a0f366b0ec76905e5be406131dc671e5d607ffcbef74e94b8c697007 + languageName: node + linkType: hard + +"vega-hierarchy@npm:~4.1.1": + version: 4.1.1 + resolution: "vega-hierarchy@npm:4.1.1" + dependencies: + d3-hierarchy: ^3.1.2 + vega-dataflow: ^5.7.5 + vega-util: ^1.17.1 + checksum: beb23948922f1b52bf03b836d71d3a5a36db3a6bfe2af74b6a5fc45a2e2e877226313e2389772be62a459728467618175d8c02a07e88330844fdec45fd5f69ac + languageName: node + linkType: hard + +"vega-label@npm:~1.2.1": + version: 1.2.1 + resolution: "vega-label@npm:1.2.1" + dependencies: + vega-canvas: ^1.2.6 + vega-dataflow: ^5.7.3 + vega-scenegraph: ^4.9.2 + vega-util: ^1.15.2 + checksum: 2704c99328ead677441e746acd8f4529301437d08b2758933fc13353d2eab9af353e4ebcc4ff1f09f41d600401b097e2df3c9e8e56d4861e5216222dd9e29185 + languageName: node + linkType: hard + +"vega-lite@npm:^5.6.1": + version: 5.14.1 + resolution: "vega-lite@npm:5.14.1" + dependencies: + "@types/clone": ~2.1.1 + clone: ~2.1.2 + fast-deep-equal: ~3.1.3 + fast-json-stable-stringify: ~2.1.0 + json-stringify-pretty-compact: ~3.0.0 + tslib: ~2.5.0 + vega-event-selector: ~3.0.1 + vega-expression: ~5.1.0 + vega-util: ~1.17.2 + yargs: ~17.7.2 + peerDependencies: + vega: ^5.24.0 + bin: + vl2pdf: bin/vl2pdf + vl2png: bin/vl2png + vl2svg: bin/vl2svg + vl2vg: bin/vl2vg + checksum: 0870a72a9703d0665f7a63f5b3e28f2118175de492eddc49b31e9fdec369adeec62895e857e06180e91fc96585ec308045b902b1ef0fb2c09174f26fcb42de9e + languageName: node + linkType: hard + +"vega-loader@npm:^4.5.1, vega-loader@npm:~4.5.1": + version: 4.5.1 + resolution: "vega-loader@npm:4.5.1" + dependencies: + d3-dsv: ^3.0.1 + node-fetch: ^2.6.7 + topojson-client: ^3.1.0 + vega-format: ^1.1.1 + vega-util: ^1.17.1 + checksum: 95f6eebc75a97665cf34faaea431934047e1b2e9d7532f48f62dab4884d606a7d9da53962e1631a5790a7a867f720581852a3db9be1a7f667882062f6c102ee0 + languageName: node + linkType: hard + +"vega-parser@npm:~6.2.0": + version: 6.2.0 + resolution: "vega-parser@npm:6.2.0" + dependencies: + vega-dataflow: ^5.7.5 + vega-event-selector: ^3.0.1 + vega-functions: ^5.13.1 + vega-scale: ^7.3.0 + vega-util: ^1.17.1 + checksum: 19872153c16aab30c4df338e0df7bd331e0bf74c7c6afce5428df555b9bdb0c4acf76b54092cacd4726a1349912ea803c90e1b30d53f4a02044e0559873969a7 + languageName: node + linkType: hard + +"vega-projection@npm:^1.6.0, vega-projection@npm:~1.6.0": + version: 1.6.0 + resolution: "vega-projection@npm:1.6.0" + dependencies: + d3-geo: ^3.1.0 + d3-geo-projection: ^4.0.0 + vega-scale: ^7.3.0 + checksum: 9c52848e294ff68051fe9f44fa536656c4e6be3d474bd3359e21aa154ab282755eaee624ac31b1ca01816227900e1d81a6d191e36f46e47525ed6648397f0fa0 + languageName: node + linkType: hard + +"vega-regression@npm:~1.2.0": + version: 1.2.0 + resolution: "vega-regression@npm:1.2.0" + dependencies: + d3-array: ^3.2.2 + vega-dataflow: ^5.7.3 + vega-statistics: ^1.9.0 + vega-util: ^1.15.2 + checksum: 5f79db18c7849b465550e00ca8fec9d896aa3cf6d6279daac8b862beb632d841dcb6a93136d6b827c37e3d1cbd2bb2f7dec58f96c572763870c2d38f2cc4e0b3 + languageName: node + linkType: hard + +"vega-runtime@npm:^6.1.4, vega-runtime@npm:~6.1.4": + version: 6.1.4 + resolution: "vega-runtime@npm:6.1.4" + dependencies: + vega-dataflow: ^5.7.5 + vega-util: ^1.17.1 + checksum: a1da40ddb3109f1ced8e61d2e7b52784fbb29936ee4c47cb5630dbbeb12ef6e0c3cd3cd189c34377f82402bf19c61dd148d90330fec743b8667635ac48e4ba29 + languageName: node + linkType: hard + +"vega-scale@npm:^7.3.0, vega-scale@npm:~7.3.0": + version: 7.3.0 + resolution: "vega-scale@npm:7.3.0" + dependencies: + d3-array: ^3.2.2 + d3-interpolate: ^3.0.1 + d3-scale: ^4.0.2 + vega-time: ^2.1.1 + vega-util: ^1.17.1 + checksum: 8e434f27a51a913dd18374ec0d2bc33758eda7db1ee6342721644f977e705268b8df6b3e89813774d776d03a0cd24f91d4d59f9e80951f67dfbbf8637f5a69ad + languageName: node + linkType: hard + +"vega-scenegraph@npm:^4.10.2, vega-scenegraph@npm:^4.9.2, vega-scenegraph@npm:~4.10.2": + version: 4.10.2 + resolution: "vega-scenegraph@npm:4.10.2" + dependencies: + d3-path: ^3.1.0 + d3-shape: ^3.2.0 + vega-canvas: ^1.2.7 + vega-loader: ^4.5.1 + vega-scale: ^7.3.0 + vega-util: ^1.17.1 + checksum: 6caf3e298297b918c8b6a72f019e51e2bfbaecd316e4d1c37d855ac9366d177cdbf16e9c8857c5ccde128bcd9645af7ee7dc81111bcd743d192e1a3b9a9d7185 + languageName: node + linkType: hard + +"vega-selections@npm:^5.4.1": + version: 5.4.1 + resolution: "vega-selections@npm:5.4.1" + dependencies: + d3-array: 3.2.2 + vega-expression: ^5.0.1 + vega-util: ^1.17.1 + checksum: c594d41ec3886af94976e4dc4e152bea9b3975a22d435aa38dac2aab105851cb83fd4aa0f1e81a47f8bc0bea1677af93816331e3ed084ab3ec2e51b3544c109f + languageName: node + linkType: hard + +"vega-statistics@npm:^1.7.9, vega-statistics@npm:^1.8.1, vega-statistics@npm:^1.9.0, vega-statistics@npm:~1.9.0": + version: 1.9.0 + resolution: "vega-statistics@npm:1.9.0" + dependencies: + d3-array: ^3.2.2 + checksum: bbf2ea088c5a6a662c6aed1bf57996c06a82a98228730ada8a97e57824a6ed391999ea974f16dcde6e73bf88799976d91aff748842848d38ab45dbb9fafba3f9 + languageName: node + linkType: hard + +"vega-time@npm:^2.1.1, vega-time@npm:~2.1.1": + version: 2.1.1 + resolution: "vega-time@npm:2.1.1" + dependencies: + d3-array: ^3.2.2 + d3-time: ^3.1.0 + vega-util: ^1.17.1 + checksum: 3d6a50f779be4b5e7f27bd2aae766035c29e59e03e62d2e96b94a2f759ed3104c1102c1006dd416e7b819ee501880ae7a722c2fa9aabf9efac86503c1aada14a + languageName: node + linkType: hard + +"vega-transforms@npm:~4.10.2": + version: 4.10.2 + resolution: "vega-transforms@npm:4.10.2" + dependencies: + d3-array: ^3.2.2 + vega-dataflow: ^5.7.5 + vega-statistics: ^1.8.1 + vega-time: ^2.1.1 + vega-util: ^1.17.1 + checksum: 2dbe4c767542a5dc4dbb453fd1317b00912e47dbdb3de637259b2552497dd8039c20c795318ad57341eb0d30b69712c55a2da16dc9ad2329a68c35fb75b4fee6 + languageName: node + linkType: hard + +"vega-typings@npm:~0.24.0": + version: 0.24.2 + resolution: "vega-typings@npm:0.24.2" + dependencies: + "@types/geojson": 7946.0.4 + vega-event-selector: ^3.0.1 + vega-expression: ^5.0.1 + vega-util: ^1.17.1 + checksum: 9c06430b2c8a5e6a8b29448333aa95b0946aa69c181933f52eb69f0e3594a0f308be7760f0febe13253a0b7414721841fce790b2b3812a7fb3b0a3f0391e6ace + languageName: node + linkType: hard + +"vega-util@npm:^1.15.2, vega-util@npm:^1.17.1, vega-util@npm:~1.17.2": + version: 1.17.2 + resolution: "vega-util@npm:1.17.2" + checksum: 5d681cb1a6ffda7af1b74df7c1c46a32f1d874daef54f9c9c65c7d7c7bfc4271dc6d9b1c1c7a853b14eb6e4cc8ec811b0132cd3ea25fa85259eac92e1b4f07fa + languageName: node + linkType: hard + +"vega-view-transforms@npm:~4.5.9": + version: 4.5.9 + resolution: "vega-view-transforms@npm:4.5.9" + dependencies: + vega-dataflow: ^5.7.5 + vega-scenegraph: ^4.10.2 + vega-util: ^1.17.1 + checksum: aeeaf3c2f1a02b1303c16a586dbcb20f208c101d06d7e988e18ab71fb67d87be5d8ff228ebf25971535d6e41dc816168cfa68b8676e7250df07a40aefdea32a7 + languageName: node + linkType: hard + +"vega-view@npm:~5.11.1": + version: 5.11.1 + resolution: "vega-view@npm:5.11.1" + dependencies: + d3-array: ^3.2.2 + d3-timer: ^3.0.1 + vega-dataflow: ^5.7.5 + vega-format: ^1.1.1 + vega-functions: ^5.13.1 + vega-runtime: ^6.1.4 + vega-scenegraph: ^4.10.2 + vega-util: ^1.17.1 + checksum: 82ddc74593b3a359d0b3458bc06573673ff9bf13f84020cb36fb4676c5d7f547e9650eb6faaa76799fbcedd27bcd266603dbd08c420e2d2229cc6b9f48a4a66d + languageName: node + linkType: hard + +"vega-voronoi@npm:~4.2.1": + version: 4.2.1 + resolution: "vega-voronoi@npm:4.2.1" + dependencies: + d3-delaunay: ^6.0.2 + vega-dataflow: ^5.7.5 + vega-util: ^1.17.1 + checksum: f618174ad5f451c507a80e373288bb2c0da7a8a908d62f885bc77b354c4334504ae2d1042742f68ad419ade7b548aeca9ca1042ae5541bebd7f5297afc23bb35 + languageName: node + linkType: hard + +"vega-wordcloud@npm:~4.1.4": + version: 4.1.4 + resolution: "vega-wordcloud@npm:4.1.4" + dependencies: + vega-canvas: ^1.2.7 + vega-dataflow: ^5.7.5 + vega-scale: ^7.3.0 + vega-statistics: ^1.8.1 + vega-util: ^1.17.1 + checksum: 34d1882651d3a2f34ce40a6eaeed700de126f627cdf041ec2bcc7ada46d7b4b68a38a2974236eec87ee876d9abd095af7ab17e7698b0e2fbc831460767969d7a + languageName: node + linkType: hard + +"vega@npm:^5.20.0": + version: 5.25.0 + resolution: "vega@npm:5.25.0" + dependencies: + vega-crossfilter: ~4.1.1 + vega-dataflow: ~5.7.5 + vega-encode: ~4.9.2 + vega-event-selector: ~3.0.1 + vega-expression: ~5.1.0 + vega-force: ~4.2.0 + vega-format: ~1.1.1 + vega-functions: ~5.13.2 + vega-geo: ~4.4.1 + vega-hierarchy: ~4.1.1 + vega-label: ~1.2.1 + vega-loader: ~4.5.1 + vega-parser: ~6.2.0 + vega-projection: ~1.6.0 + vega-regression: ~1.2.0 + vega-runtime: ~6.1.4 + vega-scale: ~7.3.0 + vega-scenegraph: ~4.10.2 + vega-statistics: ~1.9.0 + vega-time: ~2.1.1 + vega-transforms: ~4.10.2 + vega-typings: ~0.24.0 + vega-util: ~1.17.2 + vega-view: ~5.11.1 + vega-view-transforms: ~4.5.9 + vega-voronoi: ~4.2.1 + vega-wordcloud: ~4.1.4 + checksum: ddc7b1f2a70c72b842e111d32bdd8ff050992a50e385e8ddc6e35c02e7c481a652383c81c547b7ebfd31cda04ab9f9acf0a8cc47c6bd19b91765b254aac30d24 + languageName: node + linkType: hard + +"vscode-jsonrpc@npm:8.1.0, vscode-jsonrpc@npm:^8.0.2": + version: 8.1.0 + resolution: "vscode-jsonrpc@npm:8.1.0" + checksum: 8980037cc0014802e6ac1e5dfcff9a65e8292727096dfd23c92d2039c0c45de74a00d6ee06938cf1a671286dd8258a5f418cf048c26ad0fcb0c44f96c9e0f278 + languageName: node + linkType: hard + +"vscode-jsonrpc@npm:^6.0.0": + version: 6.0.0 + resolution: "vscode-jsonrpc@npm:6.0.0" + checksum: 3a67a56f287e8c449f2d9752eedf91e704dc7b9a326f47fb56ac07667631deb45ca52192e9bccb2ab108764e48409d70fa64b930d46fc3822f75270b111c5f53 + languageName: node + linkType: hard + +"vscode-languageserver-protocol@npm:^3.17.0": + version: 3.17.3 + resolution: "vscode-languageserver-protocol@npm:3.17.3" + dependencies: + vscode-jsonrpc: 8.1.0 + vscode-languageserver-types: 3.17.3 + checksum: ffea508b2efd7f4853f1cef5e5eac58672f0ae71a9ec275ad37a4a2a24cdc3ff023f941e759951aee01c79da3f3279f10e034f19d875f081eb387181241bd836 + languageName: node + linkType: hard + +"vscode-languageserver-types@npm:3.17.3": + version: 3.17.3 + resolution: "vscode-languageserver-types@npm:3.17.3" + checksum: fbc8221297261f659a6482875ff2a419dc9d55965dc53745797da569ff9f819cd832e6f2699017baadd946548bbfe212e3f6971f3d960f12dc0ee9c629dacc07 + languageName: node + linkType: hard + +"vscode-ws-jsonrpc@npm:~1.0.2": + version: 1.0.2 + resolution: "vscode-ws-jsonrpc@npm:1.0.2" + dependencies: + vscode-jsonrpc: ^8.0.2 + checksum: eb2fdb5c96f124326505f06564dfc6584318b748fd6e39b4c0ba16a0d383d13ba0e9433596abdb841428dfc2a5501994c3206723d1cb38c6af5fcac1faf4be26 + languageName: node + linkType: hard + +"w3c-keyname@npm:^2.2.4": + version: 2.2.8 + resolution: "w3c-keyname@npm:2.2.8" + checksum: 95bafa4c04fa2f685a86ca1000069c1ec43ace1f8776c10f226a73296caeddd83f893db885c2c220ebeb6c52d424e3b54d7c0c1e963bbf204038ff1a944fbb07 + languageName: node + linkType: hard + +"w3c-xmlserializer@npm:^4.0.0": + version: 4.0.0 + resolution: "w3c-xmlserializer@npm:4.0.0" + dependencies: + xml-name-validator: ^4.0.0 + checksum: eba070e78deb408ae8defa4d36b429f084b2b47a4741c4a9be3f27a0a3d1845e277e3072b04391a138f7e43776842627d1334e448ff13ff90ad9fb1214ee7091 + languageName: node + linkType: hard + +"walker@npm:^1.0.8": + version: 1.0.8 + resolution: "walker@npm:1.0.8" + dependencies: + makeerror: 1.0.12 + checksum: ad7a257ea1e662e57ef2e018f97b3c02a7240ad5093c392186ce0bcf1f1a60bbadd520d073b9beb921ed99f64f065efb63dfc8eec689a80e569f93c1c5d5e16c + languageName: node + linkType: hard + +"watchpack@npm:^2.4.0": + version: 2.4.0 + resolution: "watchpack@npm:2.4.0" + dependencies: + glob-to-regexp: ^0.4.1 + graceful-fs: ^4.1.2 + checksum: 23d4bc58634dbe13b86093e01c6a68d8096028b664ab7139d58f0c37d962d549a940e98f2f201cecdabd6f9c340338dc73ef8bf094a2249ef582f35183d1a131 + languageName: node + linkType: hard + +"webidl-conversions@npm:^3.0.0": + version: 3.0.1 + resolution: "webidl-conversions@npm:3.0.1" + checksum: c92a0a6ab95314bde9c32e1d0a6dfac83b578f8fa5f21e675bc2706ed6981bc26b7eb7e6a1fab158e5ce4adf9caa4a0aee49a52505d4d13c7be545f15021b17c + languageName: node + linkType: hard + +"webidl-conversions@npm:^6.1.0": + version: 6.1.0 + resolution: "webidl-conversions@npm:6.1.0" + checksum: 1f526507aa491f972a0c1409d07f8444e1d28778dfa269a9971f2e157182f3d496dc33296e4ed45b157fdb3bf535bb90c90bf10c50dcf1dd6caacb2a34cc84fb + languageName: node + linkType: hard + +"webidl-conversions@npm:^7.0.0": + version: 7.0.0 + resolution: "webidl-conversions@npm:7.0.0" + checksum: f05588567a2a76428515333eff87200fae6c83c3948a7482ebb109562971e77ef6dc49749afa58abb993391227c5697b3ecca52018793e0cb4620a48f10bd21b + languageName: node + linkType: hard + +"webpack-cli@npm:^5.0.1": + version: 5.1.4 + resolution: "webpack-cli@npm:5.1.4" + dependencies: + "@discoveryjs/json-ext": ^0.5.0 + "@webpack-cli/configtest": ^2.1.1 + "@webpack-cli/info": ^2.0.2 + "@webpack-cli/serve": ^2.0.5 + colorette: ^2.0.14 + commander: ^10.0.1 + cross-spawn: ^7.0.3 + envinfo: ^7.7.3 + fastest-levenshtein: ^1.0.12 + import-local: ^3.0.2 + interpret: ^3.1.1 + rechoir: ^0.8.0 + webpack-merge: ^5.7.3 + peerDependencies: + webpack: 5.x.x + peerDependenciesMeta: + "@webpack-cli/generators": + optional: true + webpack-bundle-analyzer: + optional: true + webpack-dev-server: + optional: true + bin: + webpack-cli: bin/cli.js + checksum: 3a4ad0d0342a6815c850ee4633cc2a8a5dae04f918e7847f180bf24ab400803cf8a8943707ffbed03eb20fe6ce647f996f60a2aade87b0b4a9954da3da172ce0 + languageName: node + linkType: hard + +"webpack-merge@npm:^5.7.3, webpack-merge@npm:^5.8.0": + version: 5.9.0 + resolution: "webpack-merge@npm:5.9.0" + dependencies: + clone-deep: ^4.0.1 + wildcard: ^2.0.0 + checksum: 64fe2c23aacc5f19684452a0e84ec02c46b990423aee6fcc5c18d7d471155bd14e9a6adb02bd3656eb3e0ac2532c8e97d69412ad14c97eeafe32fa6d10050872 + languageName: node + linkType: hard + +"webpack-sources@npm:^1.2.0": + version: 1.4.3 + resolution: "webpack-sources@npm:1.4.3" + dependencies: + source-list-map: ^2.0.0 + source-map: ~0.6.1 + checksum: 37463dad8d08114930f4bc4882a9602941f07c9f0efa9b6bc78738cd936275b990a596d801ef450d022bb005b109b9f451dd087db2f3c9baf53e8e22cf388f79 + languageName: node + linkType: hard + +"webpack-sources@npm:^3.2.3": + version: 3.2.3 + resolution: "webpack-sources@npm:3.2.3" + checksum: 989e401b9fe3536529e2a99dac8c1bdc50e3a0a2c8669cbafad31271eadd994bc9405f88a3039cd2e29db5e6d9d0926ceb7a1a4e7409ece021fe79c37d9c4607 + languageName: node + linkType: hard + +"webpack@npm:^5.76.1": + version: 5.88.2 + resolution: "webpack@npm:5.88.2" + dependencies: + "@types/eslint-scope": ^3.7.3 + "@types/estree": ^1.0.0 + "@webassemblyjs/ast": ^1.11.5 + "@webassemblyjs/wasm-edit": ^1.11.5 + "@webassemblyjs/wasm-parser": ^1.11.5 + acorn: ^8.7.1 + acorn-import-assertions: ^1.9.0 + browserslist: ^4.14.5 + chrome-trace-event: ^1.0.2 + enhanced-resolve: ^5.15.0 + es-module-lexer: ^1.2.1 + eslint-scope: 5.1.1 + events: ^3.2.0 + glob-to-regexp: ^0.4.1 + graceful-fs: ^4.2.9 + json-parse-even-better-errors: ^2.3.1 + loader-runner: ^4.2.0 + mime-types: ^2.1.27 + neo-async: ^2.6.2 + schema-utils: ^3.2.0 + tapable: ^2.1.1 + terser-webpack-plugin: ^5.3.7 + watchpack: ^2.4.0 + webpack-sources: ^3.2.3 + peerDependenciesMeta: + webpack-cli: + optional: true + bin: + webpack: bin/webpack.js + checksum: 79476a782da31a21f6dd38fbbd06b68da93baf6a62f0d08ca99222367f3b8668f5a1f2086b7bb78e23172e31fa6df6fa7ab09b25e827866c4fc4dc2b30443ce2 + languageName: node + linkType: hard + +"whatwg-encoding@npm:^2.0.0": + version: 2.0.0 + resolution: "whatwg-encoding@npm:2.0.0" + dependencies: + iconv-lite: 0.6.3 + checksum: 7087810c410aa9b689cbd6af8773341a53cdc1f3aae2a882c163bd5522ec8ca4cdfc269aef417a5792f411807d5d77d50df4c24e3abb00bb60192858a40cc675 + languageName: node + linkType: hard + +"whatwg-mimetype@npm:^2.3.0": + version: 2.3.0 + resolution: "whatwg-mimetype@npm:2.3.0" + checksum: 23eb885940bcbcca4ff841c40a78e9cbb893ec42743993a42bf7aed16085b048b44b06f3402018931687153550f9a32d259dfa524e4f03577ab898b6965e5383 + languageName: node + linkType: hard + +"whatwg-mimetype@npm:^3.0.0": + version: 3.0.0 + resolution: "whatwg-mimetype@npm:3.0.0" + checksum: ce08bbb36b6aaf64f3a84da89707e3e6a31e5ab1c1a2379fd68df79ba712a4ab090904f0b50e6693b0dafc8e6343a6157e40bf18fdffd26e513cf95ee2a59824 + languageName: node + linkType: hard + +"whatwg-url@npm:^11.0.0": + version: 11.0.0 + resolution: "whatwg-url@npm:11.0.0" + dependencies: + tr46: ^3.0.0 + webidl-conversions: ^7.0.0 + checksum: ed4826aaa57e66bb3488a4b25c9cd476c46ba96052747388b5801f137dd740b73fde91ad207d96baf9f17fbcc80fc1a477ad65181b5eb5fa718d27c69501d7af + languageName: node + linkType: hard + +"whatwg-url@npm:^5.0.0": + version: 5.0.0 + resolution: "whatwg-url@npm:5.0.0" + dependencies: + tr46: ~0.0.3 + webidl-conversions: ^3.0.0 + checksum: b8daed4ad3356cc4899048a15b2c143a9aed0dfae1f611ebd55073310c7b910f522ad75d727346ad64203d7e6c79ef25eafd465f4d12775ca44b90fa82ed9e2c + languageName: node + linkType: hard + +"whatwg-url@npm:^8.0.0": + version: 8.7.0 + resolution: "whatwg-url@npm:8.7.0" + dependencies: + lodash: ^4.7.0 + tr46: ^2.1.0 + webidl-conversions: ^6.1.0 + checksum: a87abcc6cefcece5311eb642858c8fdb234e51ec74196bfacf8def2edae1bfbffdf6acb251646ed6301f8cee44262642d8769c707256125a91387e33f405dd1e + languageName: node + linkType: hard + +"which-boxed-primitive@npm:^1.0.2": + version: 1.0.2 + resolution: "which-boxed-primitive@npm:1.0.2" + dependencies: + is-bigint: ^1.0.1 + is-boolean-object: ^1.1.0 + is-number-object: ^1.0.4 + is-string: ^1.0.5 + is-symbol: ^1.0.3 + checksum: 53ce774c7379071729533922adcca47220228405e1895f26673bbd71bdf7fb09bee38c1d6399395927c6289476b5ae0629863427fd151491b71c4b6cb04f3a5e + languageName: node + linkType: hard + +"which-typed-array@npm:^1.1.10, which-typed-array@npm:^1.1.11": + version: 1.1.11 + resolution: "which-typed-array@npm:1.1.11" + dependencies: + available-typed-arrays: ^1.0.5 + call-bind: ^1.0.2 + for-each: ^0.3.3 + gopd: ^1.0.1 + has-tostringtag: ^1.0.0 + checksum: 711ffc8ef891ca6597b19539075ec3e08bb9b4c2ca1f78887e3c07a977ab91ac1421940505a197758fb5939aa9524976d0a5bbcac34d07ed6faa75cedbb17206 + languageName: node + linkType: hard + +"which@npm:^1.2.9, which@npm:^1.3.1": + version: 1.3.1 + resolution: "which@npm:1.3.1" + dependencies: + isexe: ^2.0.0 + bin: + which: ./bin/which + checksum: f2e185c6242244b8426c9df1510e86629192d93c1a986a7d2a591f2c24869e7ffd03d6dac07ca863b2e4c06f59a4cc9916c585b72ee9fa1aa609d0124df15e04 + languageName: node + linkType: hard + +"which@npm:^2.0.1, which@npm:^2.0.2": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: ^2.0.0 + bin: + node-which: ./bin/node-which + checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 + languageName: node + linkType: hard + +"wide-align@npm:^1.1.5": + version: 1.1.5 + resolution: "wide-align@npm:1.1.5" + dependencies: + string-width: ^1.0.2 || 2 || 3 || 4 + checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 + languageName: node + linkType: hard + +"wildcard@npm:^2.0.0": + version: 2.0.1 + resolution: "wildcard@npm:2.0.1" + checksum: e0c60a12a219e4b12065d1199802d81c27b841ed6ad6d9d28240980c73ceec6f856771d575af367cbec2982d9ae7838759168b551776577f155044f5a5ba843c + languageName: node + linkType: hard + +"worker-loader@npm:^3.0.2": + version: 3.0.8 + resolution: "worker-loader@npm:3.0.8" + dependencies: + loader-utils: ^2.0.0 + schema-utils: ^3.0.0 + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + checksum: 84f4a7eeb2a1d8b9704425837e017c91eedfae67ac89e0b866a2dcf283323c1dcabe0258196278b7d5fd0041392da895c8a0c59ddf3a94f1b2e003df68ddfec3 + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: ^4.0.0 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: ^6.1.0 + string-width: ^5.0.1 + strip-ansi: ^7.0.1 + checksum: 371733296dc2d616900ce15a0049dca0ef67597d6394c57347ba334393599e800bab03c41d4d45221b6bc967b8c453ec3ae4749eff3894202d16800fdfe0e238 + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 + languageName: node + linkType: hard + +"write-file-atomic@npm:^4.0.2": + version: 4.0.2 + resolution: "write-file-atomic@npm:4.0.2" + dependencies: + imurmurhash: ^0.1.4 + signal-exit: ^3.0.7 + checksum: 5da60bd4eeeb935eec97ead3df6e28e5917a6bd317478e4a85a5285e8480b8ed96032bbcc6ecd07b236142a24f3ca871c924ec4a6575e623ec1b11bf8c1c253c + languageName: node + linkType: hard + +"write-file-atomic@npm:^5.0.1": + version: 5.0.1 + resolution: "write-file-atomic@npm:5.0.1" + dependencies: + imurmurhash: ^0.1.4 + signal-exit: ^4.0.1 + checksum: 8dbb0e2512c2f72ccc20ccedab9986c7d02d04039ed6e8780c987dc4940b793339c50172a1008eed7747001bfacc0ca47562668a069a7506c46c77d7ba3926a9 + languageName: node + linkType: hard + +"ws@npm:^8.11.0": + version: 8.14.1 + resolution: "ws@npm:8.14.1" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 9e310be2b0ff69e1f87d8c6d093ecd17a1ed4c37f281d17c35e8c30e2bd116401775b3d503249651374e6e0e1e9905db62fff096b694371c77561aee06bc3466 + languageName: node + linkType: hard + +"xml-name-validator@npm:^4.0.0": + version: 4.0.0 + resolution: "xml-name-validator@npm:4.0.0" + checksum: af100b79c29804f05fa35aa3683e29a321db9b9685d5e5febda3fa1e40f13f85abc40f45a6b2bf7bee33f68a1dc5e8eaef4cec100a304a9db565e6061d4cb5ad + languageName: node + linkType: hard + +"xml@npm:^1.0.1": + version: 1.0.1 + resolution: "xml@npm:1.0.1" + checksum: 11b5545ef3f8fec3fa29ce251f50ad7b6c97c103ed4d851306ec23366f5fa4699dd6a942262df52313a0cd1840ab26256da253c023bad3309d8ce46fe6020ca0 + languageName: node + linkType: hard + +"xmlchars@npm:^2.2.0": + version: 2.2.0 + resolution: "xmlchars@npm:2.2.0" + checksum: 8c70ac94070ccca03f47a81fcce3b271bd1f37a591bf5424e787ae313fcb9c212f5f6786e1fa82076a2c632c0141552babcd85698c437506dfa6ae2d58723062 + languageName: node + linkType: hard + +"xtend@npm:^4.0.1": + version: 4.0.2 + resolution: "xtend@npm:4.0.2" + checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a + languageName: node + linkType: hard + +"y-protocols@npm:^1.0.5": + version: 1.0.5 + resolution: "y-protocols@npm:1.0.5" + dependencies: + lib0: ^0.2.42 + checksum: d19404a4ebafcf3761c28b881abe8c32ab6e457db0e5ffc7dbb749cbc2c3bb98e003a43f3e8eba7f245b2698c76f2c4cdd1c2db869f8ec0c6ef94736d9a88652 + languageName: node + linkType: hard + +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 54f0fb95621ee60898a38c572c515659e51cc9d9f787fb109cef6fde4befbe1c4602dc999d30110feee37456ad0f1660fa2edcfde6a9a740f86a290999550d30 + languageName: node + linkType: hard + +"yallist@npm:^3.0.2": + version: 3.1.1 + resolution: "yallist@npm:3.1.1" + checksum: 48f7bb00dc19fc635a13a39fe547f527b10c9290e7b3e836b9a8f1ca04d4d342e85714416b3c2ab74949c9c66f9cebb0473e6bc353b79035356103b47641285d + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 + languageName: node + linkType: hard + +"yargs-parser@npm:^20.2.9": + version: 20.2.9 + resolution: "yargs-parser@npm:20.2.9" + checksum: 8bb69015f2b0ff9e17b2c8e6bfe224ab463dd00ca211eece72a4cd8a906224d2703fb8a326d36fdd0e68701e201b2a60ed7cf81ce0fd9b3799f9fe7745977ae3 + languageName: node + linkType: hard + +"yargs-parser@npm:^21.0.1, yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c + languageName: node + linkType: hard + +"yargs@npm:^17.3.1, yargs@npm:~17.7.2": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: ^8.0.1 + escalade: ^3.1.1 + get-caller-file: ^2.0.5 + require-directory: ^2.1.1 + string-width: ^4.2.3 + y18n: ^5.0.5 + yargs-parser: ^21.1.1 + checksum: 73b572e863aa4a8cbef323dd911d79d193b772defd5a51aab0aca2d446655216f5002c42c5306033968193bdbf892a7a4c110b0d77954a7fdf563e653967b56a + languageName: node + linkType: hard + +"yjs@npm:^13.5.0, yjs@npm:^13.5.40": + version: 13.6.7 + resolution: "yjs@npm:13.6.7" + dependencies: + lib0: ^0.2.74 + checksum: 8e89257c8b565ab97cf3354fca2ce0b6bc3d1abe90b9d45a218a94b35da372c88d2411b353ed8ca03a6619004c4da76c96f7c203c38506c3758c9f8c1a730ca4 + languageName: node + linkType: hard + +"yocto-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "yocto-queue@npm:0.1.0" + checksum: f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 + languageName: node + linkType: hard From 47bacb68e65a7df85529e0e4f1dac88111646065 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 14 Sep 2023 07:40:06 -0400 Subject: [PATCH 005/100] add to notebook toolbar --- .../connect_jupyterlab/package.json | 4 +- .../connect_jupyterlab/schema/plugin.json | 16 +++++++ .../connect_jupyterlab/src/index.ts | 45 +++++++++++++++---- .../connect_jupyterlab/style/base.css | 9 ++++ .../jupyterlab/connect_jupyterlab/yarn.lock | 1 + 5 files changed, 65 insertions(+), 10 deletions(-) create mode 100644 extensions/jupyterlab/connect_jupyterlab/schema/plugin.json diff --git a/extensions/jupyterlab/connect_jupyterlab/package.json b/extensions/jupyterlab/connect_jupyterlab/package.json index 1d4dbe993..561019063 100644 --- a/extensions/jupyterlab/connect_jupyterlab/package.json +++ b/extensions/jupyterlab/connect_jupyterlab/package.json @@ -59,6 +59,7 @@ }, "dependencies": { "@jupyterlab/application": "^4.0.0", + "@jupyterlab/apputils": "^4.1.5", "@jupyterlab/coreutils": "^6.0.0", "@jupyterlab/services": "^7.0.0" }, @@ -110,7 +111,8 @@ } }, "extension": true, - "outputDir": "connect_jupyterlab/labextension" + "outputDir": "connect_jupyterlab/labextension", + "schemaDir": "schema" }, "eslintIgnore": [ "node_modules", diff --git a/extensions/jupyterlab/connect_jupyterlab/schema/plugin.json b/extensions/jupyterlab/connect_jupyterlab/schema/plugin.json new file mode 100644 index 000000000..fe113990b --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/schema/plugin.json @@ -0,0 +1,16 @@ +{ + "jupyter.lab.toolbars": { + "Notebook": [ + { + "name": "posit-publish", + "command": "posit:publish", + "args": { "origin": "toolbar" } + } + ] + }, + "title": "@rstudio/posit-publish", + "description": "@rstudio/posit-publish settings.", + "type": "object", + "properties": {}, + "additionalProperties": false + } diff --git a/extensions/jupyterlab/connect_jupyterlab/src/index.ts b/extensions/jupyterlab/connect_jupyterlab/src/index.ts index 34c941d1f..6413a5422 100644 --- a/extensions/jupyterlab/connect_jupyterlab/src/index.ts +++ b/extensions/jupyterlab/connect_jupyterlab/src/index.ts @@ -3,6 +3,10 @@ import { JupyterFrontEndPlugin } from '@jupyterlab/application'; +import { + ICommandPalette, +} from '@jupyterlab/apputils'; + import { requestAPI } from './handler'; /** @@ -12,18 +16,41 @@ const plugin: JupyterFrontEndPlugin = { id: 'connect_jupyterlab:plugin', description: 'A JupyterLab extension for publishing to Posit Connect.', autoStart: true, - activate: (app: JupyterFrontEnd) => { + requires: [ICommandPalette], + activate: ( + app: JupyterFrontEnd, + palette: ICommandPalette) => { console.log('JupyterLab extension connect_jupyterlab is activated!'); + const { commands } = app; - requestAPI('get-example') - .then(data => { - console.log(data); - }) - .catch(reason => { - console.error( - `The connect_jupyterlab server extension appears to be missing.\n${reason}` + const command = 'posit:publish'; + + // Add a command + commands.addCommand(command, { + label: 'Publish', + caption: 'Publish to Posit Connect', + iconClass: 'rsc-icon', + execute: (args: any) => { + console.log( + `${command} command has been called from ${args['origin']}.` ); - }); + } + }); + + // Add the command to the command palette + const category = 'notebook'; + palette.addItem({ command, category, args: { origin: 'palette' } }); + + // Example API request, doesn't belong here. + requestAPI('get-example') + .then(data => { + console.log(data); + }) + .catch(reason => { + console.error( + `The connect_jupyterlab server extension appears to be missing.\n${reason}` + ); + }); } }; diff --git a/extensions/jupyterlab/connect_jupyterlab/style/base.css b/extensions/jupyterlab/connect_jupyterlab/style/base.css index e11f45777..0da569c1d 100644 --- a/extensions/jupyterlab/connect_jupyterlab/style/base.css +++ b/extensions/jupyterlab/connect_jupyterlab/style/base.css @@ -3,3 +3,12 @@ https://jupyterlab.readthedocs.io/en/stable/developer/css.html */ + +.rsc-icon { + font-size: 18px; + /* make the existing icon transparent so it is not visible */ + color: transparent; + /* add a background-image. size 40 x 36 */ + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAkCAYAAAD7PHgWAAACUUlEQVR42mNgGAWjYBSMVDDzPyvD9GfBDDOez2OY+fwikH4HxH8Ypj9/BRQ/CmR3MUx/ajgwjpv+PIFhxosnQEf8JwLvpZ9D59/nAFq4kkiHIePfQA/l09Zxq66wMcx4tosMxyHhl/q0jNYeHBbfAMo1MEx74QekHRhmvXABpsl4oPh0IP6AonbaSz0aOQ6YhmY8/4vmsG/AzJDOUP+fCae+ya+lgOqOAx38lGHmiwrahd6M55vQHPeTYdZz+wEqPp6HouDpz2LBxQeyA2c+L0XRAwrFGc/sgBkhl2H6iyRgdCvRMrQIJfabQAexwNXPeqIGFDuHpuYvMD1OA2cs+jvwWRpc7bznokCxx3jUz6O3A38wTHrLh1D7rI2A+n/UL1rwWTjz+UZUtS/OEwxx9PRKMZj2UBAnBtUkqBnqNhFpthGufvYLRSD/LhA/g9bdMPwaKn6YyqH9Yj1BB05/HoYUO+UE1D+ksgNfuhKw8BFD32NOJAdeoa8DIdFcj8Oyd8DawxxRGz1zJyI5PKRR4f7MDZyBIOnoCpA9mWHqU1nUhgZGWXkYGuUwXEfb6hBvUng2ASO0QI0KmoA5j4XAITTj+VpwriTURJv+bCKWqDxGy9CYg2TRB6AD2oEOdmSY+VoSWAwJQDzw1AgcXTOe38fiuO/A+lqHlg6kpNH6D9xdoHF/xAxo0RsyHAfsUD1LpU+in/1EBhitayB1LVGOuwqMdhv6505QEx6SCe5gcdRriCeeBTGs+s88CPrJ7/gZpj1VB+PZL8VHBw5GwSigEwAAO8Vb1WEAypEAAAAASUVORK5CYII=); + background-size: contain; +} diff --git a/extensions/jupyterlab/connect_jupyterlab/yarn.lock b/extensions/jupyterlab/connect_jupyterlab/yarn.lock index 4f4ef0b74..d4ed9c1e8 100644 --- a/extensions/jupyterlab/connect_jupyterlab/yarn.lock +++ b/extensions/jupyterlab/connect_jupyterlab/yarn.lock @@ -5069,6 +5069,7 @@ __metadata: resolution: "connect_jupyterlab@workspace:." dependencies: "@jupyterlab/application": ^4.0.0 + "@jupyterlab/apputils": ^4.1.5 "@jupyterlab/builder": ^4.0.0 "@jupyterlab/coreutils": ^6.0.0 "@jupyterlab/services": ^7.0.0 From 7100d21bb79e78f97c6d42ddcbc4d475733826bd Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 14 Sep 2023 12:37:11 -0400 Subject: [PATCH 006/100] handler cleanup --- .../connect_jupyterlab/handlers.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py index 368c89441..ab2ed42a9 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py @@ -4,21 +4,20 @@ from jupyter_server.utils import url_path_join import tornado + class RouteHandler(APIHandler): - # The following decorator should be present on all verb methods (head, get, post, - # patch, put, delete, options) to ensure only authorized user can request the - # Jupyter server + # The following decorator should be present on all verb methods + # (head, get, post, patch, put, delete, options) to ensure + # only authorized user can request the Jupyter server @tornado.web.authenticated - def get(self): - self.finish(json.dumps({ - "data": "This is /connect-jupyterlab/get-example endpoint!" - })) + def post(self): + self.finish(json.dumps({"data": "POST /connect-jupyterlab/publish endpoint!"})) def setup_handlers(web_app): host_pattern = ".*$" base_url = web_app.settings["base_url"] - route_pattern = url_path_join(base_url, "connect-jupyterlab", "get-example") + route_pattern = url_path_join(base_url, "connect-jupyterlab", "publish") handlers = [(route_pattern, RouteHandler)] web_app.add_handlers(host_pattern, handlers) From 7fdd29b6d3d0441a41a4dbfe3746a33f559091fb Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Fri, 15 Sep 2023 15:06:22 -0400 Subject: [PATCH 007/100] get python path and version and call API --- .../connect_jupyterlab/handlers.py | 9 +- .../connect_jupyterlab/src/index.ts | 122 ++++++++++++++---- 2 files changed, 102 insertions(+), 29 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py index ab2ed42a9..cdff1fe5b 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py @@ -6,13 +6,16 @@ class RouteHandler(APIHandler): - # The following decorator should be present on all verb methods - # (head, get, post, patch, put, delete, options) to ensure - # only authorized user can request the Jupyter server @tornado.web.authenticated def post(self): + """post initiates the publishing process. Details TBD.""" self.finish(json.dumps({"data": "POST /connect-jupyterlab/publish endpoint!"})) + @tornado.web.authenticated + def get(self): + """get returns the status of the publishing process. Details TBD.""" + self.finish(json.dumps({"data": "GET /connect-jupyterlab/publish endpoint!"})) + def setup_handlers(web_app): host_pattern = ".*$" diff --git a/extensions/jupyterlab/connect_jupyterlab/src/index.ts b/extensions/jupyterlab/connect_jupyterlab/src/index.ts index 6413a5422..1960119d3 100644 --- a/extensions/jupyterlab/connect_jupyterlab/src/index.ts +++ b/extensions/jupyterlab/connect_jupyterlab/src/index.ts @@ -3,12 +3,101 @@ import { JupyterFrontEndPlugin } from '@jupyterlab/application'; -import { - ICommandPalette, -} from '@jupyterlab/apputils'; - +import { ICommandPalette, SessionContext } from '@jupyterlab/apputils'; +import { KernelMessage, ServiceManager } from '@jupyterlab/services'; +import { JSONObject } from '@lumino/coreutils'; import { requestAPI } from './handler'; +const command = 'posit:publish'; + +async function runPython( + code: string, + expression: string, + manager: ServiceManager.IManager +): Promise { + const requestContent: KernelMessage.IExecuteRequestMsg['content'] = { + code, + user_expressions: { + value: expression + }, + stop_on_error: false + }; + + const sessionContext = new SessionContext({ + sessionManager: manager.sessions, + specsManager: manager.kernelspecs, + name: 'Kernel Output', + kernelPreference: { + autoStartDefault: true + } + }); + + await sessionContext.initialize(); + const kernel = sessionContext.session?.kernel; + if (!kernel) { + throw new Error('Session has no kernel.'); + } + const future = kernel.requestExecute(requestContent, false); + const reply = await future.done; + const content = reply.content; + + if (!content) { + throw new Error('Running python code: no content returned.'); + } + if (content.status !== 'ok') { + throw new Error('Running python code: status = ' + content.status); + } + const value = content.user_expressions['value'] as JSONObject; + if (value['status'] !== 'ok') { + throw new Error('Running python code: value status = ' + value['status']); + } + const data = value['data'] as JSONObject; + const actualExpressionValue = data['text/plain'] as string; + // remove quotes enclosing the string + return actualExpressionValue.slice(1, -1); +} + +async function getRunningPythonPath( + manager: ServiceManager.IManager +): Promise { + return await runPython('import sys', 'sys.executable', manager); +} + +async function getRunningPythonVersion( + manager: ServiceManager.IManager +): Promise { + return await runPython( + 'import sys', + '".".join(map(str, sys.version_info[:3]))', + manager + ); +} + +async function getPublishStatus(): Promise { + try { + const data = await requestAPI('publish'); + console.log(data); + return data; + } catch (reason) { + console.error( + `The connect_jupyterlab server extension appears to be missing.\n${reason}` + ); + return {}; + } +} + +function makePublishCommand(manager: ServiceManager.IManager) { + return async function (args: any) { + console.log(`${command} command has been called from ${args['origin']}.`); + const pythonPath = await getRunningPythonPath(manager); + console.log('Kernel python path is', pythonPath); + const pythonVersion = await getRunningPythonVersion(manager); + console.log('Python version is', pythonVersion); + const status = await getPublishStatus(); + console.log('deployment status: ', status); + }; +} + /** * Initialization data for the connect_jupyterlab extension. */ @@ -17,40 +106,21 @@ const plugin: JupyterFrontEndPlugin = { description: 'A JupyterLab extension for publishing to Posit Connect.', autoStart: true, requires: [ICommandPalette], - activate: ( - app: JupyterFrontEnd, - palette: ICommandPalette) => { + activate: (app: JupyterFrontEnd, palette: ICommandPalette) => { console.log('JupyterLab extension connect_jupyterlab is activated!'); - const { commands } = app; - - const command = 'posit:publish'; + const { serviceManager, commands } = app; // Add a command commands.addCommand(command, { label: 'Publish', caption: 'Publish to Posit Connect', iconClass: 'rsc-icon', - execute: (args: any) => { - console.log( - `${command} command has been called from ${args['origin']}.` - ); - } + execute: makePublishCommand(serviceManager) }); // Add the command to the command palette const category = 'notebook'; palette.addItem({ command, category, args: { origin: 'palette' } }); - - // Example API request, doesn't belong here. - requestAPI('get-example') - .then(data => { - console.log(data); - }) - .catch(reason => { - console.error( - `The connect_jupyterlab server extension appears to be missing.\n${reason}` - ); - }); } }; From dd396064ae1f34a237aeec16ec5640c90598d311 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Tue, 19 Sep 2023 10:23:54 -0400 Subject: [PATCH 008/100] cleanup --- .../connect_jupyterlab/__init__.py | 21 ++++++++------- .../connect_jupyterlab/handlers.py | 1 + .../connect_jupyterlab/src/index.ts | 27 ++++++++++++------- 3 files changed, 29 insertions(+), 20 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/__init__.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/__init__.py index 58409d60b..964a509fc 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/__init__.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/__init__.py @@ -3,24 +3,24 @@ except ImportError: # Fallback when using the package in dev mode without installing # in editable mode with pip. It is highly recommended to install - # the package from a stable release or in editable mode: https://pip.pypa.io/en/stable/topics/local-project-installs/#editable-installs + # the package from a stable release or in editable mode: + # https://pip.pypa.io/en/stable/topics/local-project-installs/#editable-installs import warnings + warnings.warn("Importing 'connect_jupyterlab' outside a proper installation.") __version__ = "dev" + from .handlers import setup_handlers +PACKAGE_NAME = "connect_jupyterlab" + def _jupyter_labextension_paths(): - return [{ - "src": "labextension", - "dest": "connect_jupyterlab" - }] + return [{"src": "labextension", "dest": PACKAGE_NAME}] def _jupyter_server_extension_points(): - return [{ - "module": "connect_jupyterlab" - }] + return [{"module": PACKAGE_NAME}] def _load_jupyter_server_extension(server_app): @@ -32,5 +32,6 @@ def _load_jupyter_server_extension(server_app): JupyterLab application instance """ setup_handlers(server_app.web_app) - name = "connect_jupyterlab" - server_app.log.info(f"Registered {name} server extension") + server_app.log.info( + f"Registered {PACKAGE_NAME} server extension, version {__version__}" + ) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py index cdff1fe5b..2e4a9fa92 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py @@ -9,6 +9,7 @@ class RouteHandler(APIHandler): @tornado.web.authenticated def post(self): """post initiates the publishing process. Details TBD.""" + self.log.info("Launching publishing UI") self.finish(json.dumps({"data": "POST /connect-jupyterlab/publish endpoint!"})) @tornado.web.authenticated diff --git a/extensions/jupyterlab/connect_jupyterlab/src/index.ts b/extensions/jupyterlab/connect_jupyterlab/src/index.ts index 1960119d3..04b7c0855 100644 --- a/extensions/jupyterlab/connect_jupyterlab/src/index.ts +++ b/extensions/jupyterlab/connect_jupyterlab/src/index.ts @@ -8,7 +8,8 @@ import { KernelMessage, ServiceManager } from '@jupyterlab/services'; import { JSONObject } from '@lumino/coreutils'; import { requestAPI } from './handler'; -const command = 'posit:publish'; +const PACKAGE_NAME = 'connect_jupyterlab'; +const COMMAND_NAME = 'posit:publish'; async function runPython( code: string, @@ -80,7 +81,7 @@ async function getPublishStatus(): Promise { return data; } catch (reason) { console.error( - `The connect_jupyterlab server extension appears to be missing.\n${reason}` + `The ${PACKAGE_NAME} server extension appears to be missing.\n${reason}` ); return {}; } @@ -88,30 +89,32 @@ async function getPublishStatus(): Promise { function makePublishCommand(manager: ServiceManager.IManager) { return async function (args: any) { - console.log(`${command} command has been called from ${args['origin']}.`); + console.log( + `${COMMAND_NAME} command has been called from ${args['origin']}.` + ); const pythonPath = await getRunningPythonPath(manager); console.log('Kernel python path is', pythonPath); const pythonVersion = await getRunningPythonVersion(manager); - console.log('Python version is', pythonVersion); + console.log('Kernel python version is', pythonVersion); const status = await getPublishStatus(); - console.log('deployment status: ', status); + console.log('Publishing status: ', status); }; } /** - * Initialization data for the connect_jupyterlab extension. + * Initialization data for the extension. */ const plugin: JupyterFrontEndPlugin = { - id: 'connect_jupyterlab:plugin', + id: `${PACKAGE_NAME}:plugin`, description: 'A JupyterLab extension for publishing to Posit Connect.', autoStart: true, requires: [ICommandPalette], activate: (app: JupyterFrontEnd, palette: ICommandPalette) => { - console.log('JupyterLab extension connect_jupyterlab is activated!'); + console.log(`Activating JupyterLab extension ${PACKAGE_NAME}`); const { serviceManager, commands } = app; // Add a command - commands.addCommand(command, { + commands.addCommand(COMMAND_NAME, { label: 'Publish', caption: 'Publish to Posit Connect', iconClass: 'rsc-icon', @@ -120,7 +123,11 @@ const plugin: JupyterFrontEndPlugin = { // Add the command to the command palette const category = 'notebook'; - palette.addItem({ command, category, args: { origin: 'palette' } }); + palette.addItem({ + command: COMMAND_NAME, + category, + args: { origin: 'palette' } + }); } }; From 9788b7d481b5e21e29af47492094a35bcae581e2 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Wed, 20 Sep 2023 16:20:21 -0400 Subject: [PATCH 009/100] wip --- .../connect_jupyterlab/.vscode/settings.json | 6 + .../connect_jupyterlab/launch.py | 0 .../connect_jupyterlab/notebooks/Add.ipynb | 54 ++ .../notebooks/Untitled.ipynb | 33 ++ .../connect_jupyterlab/notebooks/app.py | 0 .../connect_jupyterlab/package.json | 7 +- .../connect_jupyterlab/src/index.ts | 206 +++++-- .../connect_jupyterlab/style/base.css | 6 + .../jupyterlab/connect_jupyterlab/yarn.lock | 518 ++++++++++++++++++ 9 files changed, 782 insertions(+), 48 deletions(-) create mode 100644 extensions/jupyterlab/connect_jupyterlab/.vscode/settings.json create mode 100644 extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/launch.py create mode 100644 extensions/jupyterlab/connect_jupyterlab/notebooks/Add.ipynb create mode 100644 extensions/jupyterlab/connect_jupyterlab/notebooks/Untitled.ipynb create mode 100644 extensions/jupyterlab/connect_jupyterlab/notebooks/app.py diff --git a/extensions/jupyterlab/connect_jupyterlab/.vscode/settings.json b/extensions/jupyterlab/connect_jupyterlab/.vscode/settings.json new file mode 100644 index 000000000..d99f2f30c --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "[python]": { + "editor.defaultFormatter": "ms-python.black-formatter" + }, + "python.formatting.provider": "none" +} \ No newline at end of file diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/launch.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/launch.py new file mode 100644 index 000000000..e69de29bb diff --git a/extensions/jupyterlab/connect_jupyterlab/notebooks/Add.ipynb b/extensions/jupyterlab/connect_jupyterlab/notebooks/Add.ipynb new file mode 100644 index 000000000..60bb63309 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/notebooks/Add.ipynb @@ -0,0 +1,54 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "id": "b9ae1306-70c8-41b7-a600-ff81e75e1cb4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "5" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "2+3" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "afe23670-b0f6-4ba1-8ef9-b0db1980adc8", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/extensions/jupyterlab/connect_jupyterlab/notebooks/Untitled.ipynb b/extensions/jupyterlab/connect_jupyterlab/notebooks/Untitled.ipynb new file mode 100644 index 000000000..ab57a7909 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/notebooks/Untitled.ipynb @@ -0,0 +1,33 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "e8b70b01-652b-481c-95eb-7827d56a2743", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/extensions/jupyterlab/connect_jupyterlab/notebooks/app.py b/extensions/jupyterlab/connect_jupyterlab/notebooks/app.py new file mode 100644 index 000000000..e69de29bb diff --git a/extensions/jupyterlab/connect_jupyterlab/package.json b/extensions/jupyterlab/connect_jupyterlab/package.json index 561019063..fbcf96242 100644 --- a/extensions/jupyterlab/connect_jupyterlab/package.json +++ b/extensions/jupyterlab/connect_jupyterlab/package.json @@ -61,7 +61,12 @@ "@jupyterlab/application": "^4.0.0", "@jupyterlab/apputils": "^4.1.5", "@jupyterlab/coreutils": "^6.0.0", - "@jupyterlab/services": "^7.0.0" + "@jupyterlab/docmanager": "^4.0.6", + "@jupyterlab/notebook": "^4.0.6", + "@jupyterlab/services": "^7.0.0", + "@jupyterlab/ui-components": "^4.0.6", + "@lumino/coreutils": "^2.1.2", + "@lumino/widgets": "^2.3.0" }, "devDependencies": { "@jupyterlab/builder": "^4.0.0", diff --git a/extensions/jupyterlab/connect_jupyterlab/src/index.ts b/extensions/jupyterlab/connect_jupyterlab/src/index.ts index 04b7c0855..daac0e58a 100644 --- a/extensions/jupyterlab/connect_jupyterlab/src/index.ts +++ b/extensions/jupyterlab/connect_jupyterlab/src/index.ts @@ -3,9 +3,15 @@ import { JupyterFrontEndPlugin } from '@jupyterlab/application'; -import { ICommandPalette, SessionContext } from '@jupyterlab/apputils'; -import { KernelMessage, ServiceManager } from '@jupyterlab/services'; +import { ICommandPalette } from '@jupyterlab/apputils'; +import { IDocumentManager } from '@jupyterlab/docmanager'; +import { INotebookTracker, NotebookPanel } from '@jupyterlab/notebook'; +import { KernelMessage } from '@jupyterlab/services'; +import { IKernelConnection } from '@jupyterlab/services/lib/kernel/kernel'; +import { LabIcon } from '@jupyterlab/ui-components'; import { JSONObject } from '@lumino/coreutils'; +import { Widget } from '@lumino/widgets'; + import { requestAPI } from './handler'; const PACKAGE_NAME = 'connect_jupyterlab'; @@ -14,7 +20,7 @@ const COMMAND_NAME = 'posit:publish'; async function runPython( code: string, expression: string, - manager: ServiceManager.IManager + kernel: IKernelConnection ): Promise { const requestContent: KernelMessage.IExecuteRequestMsg['content'] = { code, @@ -24,23 +30,9 @@ async function runPython( stop_on_error: false }; - const sessionContext = new SessionContext({ - sessionManager: manager.sessions, - specsManager: manager.kernelspecs, - name: 'Kernel Output', - kernelPreference: { - autoStartDefault: true - } - }); - - await sessionContext.initialize(); - const kernel = sessionContext.session?.kernel; - if (!kernel) { - throw new Error('Session has no kernel.'); - } const future = kernel.requestExecute(requestContent, false); - const reply = await future.done; - const content = reply.content; + const replyMessage = await future.done; + const content = replyMessage.content; if (!content) { throw new Error('Running python code: no content returned.'); @@ -58,46 +50,161 @@ async function runPython( return actualExpressionValue.slice(1, -1); } -async function getRunningPythonPath( - manager: ServiceManager.IManager -): Promise { - return await runPython('import sys', 'sys.executable', manager); +async function getKernel( + notebookPanel: NotebookPanel +): Promise { + const sessionContext = notebookPanel.sessionContext; + const kernel = sessionContext.session?.kernel; + if (!kernel) { + throw new Error('Session has no kernel.'); + } + const kernelLanguage = (await kernel.info).language_info.name; + console.info('Kernel language:', kernelLanguage); + if (kernelLanguage !== 'python') { + throw new Error( + "Can't publish this notebook because it doesn't use the Python kernel" + ); + } + console.debug('Using kernel', kernel.id); + return kernel; +} + +async function getKernelPythonPath(kernel: IKernelConnection): Promise { + return await runPython('import sys', 'sys.executable', kernel); } -async function getRunningPythonVersion( - manager: ServiceManager.IManager +async function getKernelPythonVersion( + kernel: IKernelConnection ): Promise { return await runPython( 'import sys', '".".join(map(str, sys.version_info[:3]))', - manager + kernel ); } -async function getPublishStatus(): Promise { - try { - const data = await requestAPI('publish'); - console.log(data); - return data; - } catch (reason) { - console.error( - `The ${PACKAGE_NAME} server extension appears to be missing.\n${reason}` - ); - return {}; +class PublishStatus { + busy: boolean = false; +} + +async function getPublishStatus(): Promise { + const data = await requestAPI('publish'); + console.log(data); + return data; +} + +class PublishResponse { + url: string = ''; +} + +async function launchAgent( + notebookPath: string, + pythonPath: string, + pythonVersion: string +): Promise { + const data = await requestAPI('publish', { + body: JSON.stringify({ + notebookPath: notebookPath, + pythonPath: pythonPath, + pythonVersion: pythonVersion + }), + method: 'POST' + }); + console.log(data); + return data; +} + +class IFrameWidget extends Widget { + static unique = 0; + + constructor(notebookPath: string, url: string) { + super(); + IFrameWidget.unique++; + this.id = 'posit-publishing-ui-' + IFrameWidget.unique; + this.title.label = 'Publish ' + notebookPath.split('/').at(-1); + this.title.closable = true; + this.title.icon = LabIcon.resolveElement({ iconClass: 'rsc-icon' }); + this.addClass('jp-posit-publishing-view'); + + const iframe = document.createElement('iframe'); + iframe.src = url; + iframe.width = '100%'; + iframe.height = '100%'; + this.node.appendChild(iframe); } } -function makePublishCommand(manager: ServiceManager.IManager) { - return async function (args: any) { - console.log( - `${COMMAND_NAME} command has been called from ${args['origin']}.` - ); - const pythonPath = await getRunningPythonPath(manager); +function makePublishCommand( + notebookTracker: INotebookTracker, + docManager: IDocumentManager, + shell: JupyterFrontEnd.IShell +) { + const uiWidgets = new Map(); + let notebookPanel: NotebookPanel | null = null; + + notebookTracker.currentChanged.connect((_, panel) => { + console.log(panel); + notebookPanel = panel; + }); + + async function publish(calledFrom: string) { + console.log(`${COMMAND_NAME} command has been called from ${calledFrom}.`); + if (!notebookPanel) { + throw new Error( + "Can't publish because there isn't currently a notebook panel open." + ); + } + const context = docManager.contextForWidget(notebookPanel); + if (!context) { + throw new Error('Error getting context for the notebook panel.'); + } + const notebookPath = context.path; + if (!notebookPath) { + throw new Error('Error getting the notebook path.'); + } + const kernel = await getKernel(notebookPanel); + const pythonPath = await getKernelPythonPath(kernel); console.log('Kernel python path is', pythonPath); - const pythonVersion = await getRunningPythonVersion(manager); + const pythonVersion = await getKernelPythonVersion(kernel); console.log('Kernel python version is', pythonVersion); const status = await getPublishStatus(); console.log('Publishing status: ', status); + if (status.busy) { + throw new Error( + "Can't publish because there is already a publishing session open." + ); + } + try { + const agentInfo = await launchAgent( + notebookPath, + pythonPath, + pythonVersion + ); + console.log(agentInfo); + // const url = agentInfo.url; + const url = 'http://localhost:3939'; + console.log(`Publishing agent serving at ${url}`); + + // The widget is a singleton; if it's open, activate it. + let widget = uiWidgets.get(notebookPath); + if (widget && shell.contains(widget)) { + shell.activateById(widget.id); + } else { + widget = new IFrameWidget(notebookPath, url); + uiWidgets.set(notebookPath, widget); + shell.add(widget, 'main'); + } + } catch (err) { + throw new Error(`Error launching the publishing agent: ${err}`); + } + } + return async function (args: any) { + try { + await publish(args['origin']); + } catch (err) { + // TODO, obv + alert(err); + } }; } @@ -108,17 +215,22 @@ const plugin: JupyterFrontEndPlugin = { id: `${PACKAGE_NAME}:plugin`, description: 'A JupyterLab extension for publishing to Posit Connect.', autoStart: true, - requires: [ICommandPalette], - activate: (app: JupyterFrontEnd, palette: ICommandPalette) => { + requires: [ICommandPalette, IDocumentManager, INotebookTracker], + activate: async ( + app: JupyterFrontEnd, + palette: ICommandPalette, + docManager: IDocumentManager, + notebookTracker: INotebookTracker + ) => { console.log(`Activating JupyterLab extension ${PACKAGE_NAME}`); - const { serviceManager, commands } = app; + const { commands, shell } = app; // Add a command commands.addCommand(COMMAND_NAME, { label: 'Publish', caption: 'Publish to Posit Connect', iconClass: 'rsc-icon', - execute: makePublishCommand(serviceManager) + execute: makePublishCommand(notebookTracker, docManager, shell) }); // Add the command to the command palette diff --git a/extensions/jupyterlab/connect_jupyterlab/style/base.css b/extensions/jupyterlab/connect_jupyterlab/style/base.css index 0da569c1d..262edd7a8 100644 --- a/extensions/jupyterlab/connect_jupyterlab/style/base.css +++ b/extensions/jupyterlab/connect_jupyterlab/style/base.css @@ -12,3 +12,9 @@ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAkCAYAAAD7PHgWAAACUUlEQVR42mNgGAWjYBSMVDDzPyvD9GfBDDOez2OY+fwikH4HxH8Ypj9/BRQ/CmR3MUx/ajgwjpv+PIFhxosnQEf8JwLvpZ9D59/nAFq4kkiHIePfQA/l09Zxq66wMcx4tosMxyHhl/q0jNYeHBbfAMo1MEx74QekHRhmvXABpsl4oPh0IP6AonbaSz0aOQ6YhmY8/4vmsG/AzJDOUP+fCae+ya+lgOqOAx38lGHmiwrahd6M55vQHPeTYdZz+wEqPp6HouDpz2LBxQeyA2c+L0XRAwrFGc/sgBkhl2H6iyRgdCvRMrQIJfabQAexwNXPeqIGFDuHpuYvMD1OA2cs+jvwWRpc7bznokCxx3jUz6O3A38wTHrLh1D7rI2A+n/UL1rwWTjz+UZUtS/OEwxx9PRKMZj2UBAnBtUkqBnqNhFpthGufvYLRSD/LhA/g9bdMPwaKn6YyqH9Yj1BB05/HoYUO+UE1D+ksgNfuhKw8BFD32NOJAdeoa8DIdFcj8Oyd8DawxxRGz1zJyI5PKRR4f7MDZyBIOnoCpA9mWHqU1nUhgZGWXkYGuUwXEfb6hBvUng2ASO0QI0KmoA5j4XAITTj+VpwriTURJv+bCKWqDxGy9CYg2TRB6AD2oEOdmSY+VoSWAwJQDzw1AgcXTOe38fiuO/A+lqHlg6kpNH6D9xdoHF/xAxo0RsyHAfsUD1LpU+in/1EBhitayB1LVGOuwqMdhv6505QEx6SCe5gcdRriCeeBTGs+s88CPrJ7/gZpj1VB+PZL8VHBw5GwSigEwAAO8Vb1WEAypEAAAAASUVORK5CYII=); background-size: contain; } + +.jp-posit-publishing-view { + width: 100%; + height: 100%; + border-width: 0px; +} diff --git a/extensions/jupyterlab/connect_jupyterlab/yarn.lock b/extensions/jupyterlab/connect_jupyterlab/yarn.lock index d4ed9c1e8..bb18b6dc3 100644 --- a/extensions/jupyterlab/connect_jupyterlab/yarn.lock +++ b/extensions/jupyterlab/connect_jupyterlab/yarn.lock @@ -2110,6 +2110,35 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/apputils@npm:^4.1.6": + version: 4.1.6 + resolution: "@jupyterlab/apputils@npm:4.1.6" + dependencies: + "@jupyterlab/coreutils": ^6.0.6 + "@jupyterlab/observables": ^5.0.6 + "@jupyterlab/rendermime-interfaces": ^3.8.6 + "@jupyterlab/services": ^7.0.6 + "@jupyterlab/settingregistry": ^4.0.6 + "@jupyterlab/statedb": ^4.0.6 + "@jupyterlab/statusbar": ^4.0.6 + "@jupyterlab/translation": ^4.0.6 + "@jupyterlab/ui-components": ^4.0.6 + "@lumino/algorithm": ^2.0.1 + "@lumino/commands": ^2.1.3 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/domutils": ^2.0.1 + "@lumino/messaging": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/virtualdom": ^2.0.1 + "@lumino/widgets": ^2.3.0 + "@types/react": ^18.0.26 + react: ^18.2.0 + sanitize-html: ~2.7.3 + checksum: 40fb43f5a6464c665f1b941d164f3366ab8ea906fed72894ccf026ebeebf0734409edb6546a151ac267cbd4f945e23474251aed644f7f0f0dbf2548b9230ae22 + languageName: node + linkType: hard + "@jupyterlab/attachments@npm:^4.0.5": version: 4.0.5 resolution: "@jupyterlab/attachments@npm:4.0.5" @@ -2124,6 +2153,20 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/attachments@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/attachments@npm:4.0.6" + dependencies: + "@jupyterlab/nbformat": ^4.0.6 + "@jupyterlab/observables": ^5.0.6 + "@jupyterlab/rendermime": ^4.0.6 + "@jupyterlab/rendermime-interfaces": ^3.8.6 + "@lumino/disposable": ^2.1.2 + "@lumino/signaling": ^2.1.2 + checksum: b7efd01d6a0b7f28a4ee8114723cdc33267f1c1f84763b71a04e783024a87f639e442be74eda5afecff7eea5750d094f4da8a46ee711ec1298645eb92252c7ee + languageName: node + linkType: hard + "@jupyterlab/builder@npm:^4.0.0": version: 4.0.5 resolution: "@jupyterlab/builder@npm:4.0.5" @@ -2201,6 +2244,42 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/cells@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/cells@npm:4.0.6" + dependencies: + "@codemirror/state": ^6.2.0 + "@codemirror/view": ^6.9.6 + "@jupyter/ydoc": ^1.0.2 + "@jupyterlab/apputils": ^4.1.6 + "@jupyterlab/attachments": ^4.0.6 + "@jupyterlab/codeeditor": ^4.0.6 + "@jupyterlab/codemirror": ^4.0.6 + "@jupyterlab/coreutils": ^6.0.6 + "@jupyterlab/documentsearch": ^4.0.6 + "@jupyterlab/filebrowser": ^4.0.6 + "@jupyterlab/nbformat": ^4.0.6 + "@jupyterlab/observables": ^5.0.6 + "@jupyterlab/outputarea": ^4.0.6 + "@jupyterlab/rendermime": ^4.0.6 + "@jupyterlab/services": ^7.0.6 + "@jupyterlab/toc": ^6.0.6 + "@jupyterlab/translation": ^4.0.6 + "@jupyterlab/ui-components": ^4.0.6 + "@lumino/algorithm": ^2.0.1 + "@lumino/coreutils": ^2.1.2 + "@lumino/domutils": ^2.0.1 + "@lumino/dragdrop": ^2.1.3 + "@lumino/messaging": ^2.0.1 + "@lumino/polling": ^2.1.2 + "@lumino/signaling": ^2.1.2 + "@lumino/virtualdom": ^2.0.1 + "@lumino/widgets": ^2.3.0 + react: ^18.2.0 + checksum: b0bb039c05ee0d83f40b5ccb0efa27d90723808c50821f8b8abedc8770387916bbc46d8a886102bf353b58e434cf33849981f782f1dbb3658835cce219940f33 + languageName: node + linkType: hard + "@jupyterlab/codeeditor@npm:^4.0.5": version: 4.0.5 resolution: "@jupyterlab/codeeditor@npm:4.0.5" @@ -2224,6 +2303,29 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/codeeditor@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/codeeditor@npm:4.0.6" + dependencies: + "@codemirror/state": ^6.2.0 + "@jupyter/ydoc": ^1.0.2 + "@jupyterlab/coreutils": ^6.0.6 + "@jupyterlab/nbformat": ^4.0.6 + "@jupyterlab/observables": ^5.0.6 + "@jupyterlab/statusbar": ^4.0.6 + "@jupyterlab/translation": ^4.0.6 + "@jupyterlab/ui-components": ^4.0.6 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/dragdrop": ^2.1.3 + "@lumino/messaging": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/widgets": ^2.3.0 + react: ^18.2.0 + checksum: 831d330273280781dbdc223325d575ac373c0db17fab208f327bce4e1c2286c62f8264d1d612da1a762bc006cd81dfb0eb5108dd3bd8f8298f9be8ecac98b2ca + languageName: node + linkType: hard + "@jupyterlab/codemirror@npm:^4.0.5": version: 4.0.5 resolution: "@jupyterlab/codemirror@npm:4.0.5" @@ -2266,6 +2368,48 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/codemirror@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/codemirror@npm:4.0.6" + dependencies: + "@codemirror/autocomplete": ^6.5.1 + "@codemirror/commands": ^6.2.3 + "@codemirror/lang-cpp": ^6.0.2 + "@codemirror/lang-css": ^6.1.1 + "@codemirror/lang-html": ^6.4.3 + "@codemirror/lang-java": ^6.0.1 + "@codemirror/lang-javascript": ^6.1.7 + "@codemirror/lang-json": ^6.0.1 + "@codemirror/lang-markdown": ^6.1.1 + "@codemirror/lang-php": ^6.0.1 + "@codemirror/lang-python": ^6.1.3 + "@codemirror/lang-rust": ^6.0.1 + "@codemirror/lang-sql": ^6.4.1 + "@codemirror/lang-wast": ^6.0.1 + "@codemirror/lang-xml": ^6.0.2 + "@codemirror/language": ^6.6.0 + "@codemirror/legacy-modes": ^6.3.2 + "@codemirror/search": ^6.3.0 + "@codemirror/state": ^6.2.0 + "@codemirror/view": ^6.9.6 + "@jupyter/ydoc": ^1.0.2 + "@jupyterlab/codeeditor": ^4.0.6 + "@jupyterlab/coreutils": ^6.0.6 + "@jupyterlab/documentsearch": ^4.0.6 + "@jupyterlab/nbformat": ^4.0.6 + "@jupyterlab/translation": ^4.0.6 + "@lezer/common": ^1.0.2 + "@lezer/generator": ^1.2.2 + "@lezer/highlight": ^1.1.4 + "@lezer/markdown": ^1.0.2 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/signaling": ^2.1.2 + yjs: ^13.5.40 + checksum: fdd0c4655e8597b1beb985b84b82dcfe29b4c8d0ae7e7ff3b0aecdbc94bc2b94ec0b617b3d59d7739e271e76433b2e624672d94ec64cfa4efc628cab92418175 + languageName: node + linkType: hard + "@jupyterlab/console@npm:^4.0.5": version: 4.0.5 resolution: "@jupyterlab/console@npm:4.0.5" @@ -2307,6 +2451,20 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/coreutils@npm:^6.0.6": + version: 6.0.6 + resolution: "@jupyterlab/coreutils@npm:6.0.6" + dependencies: + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/signaling": ^2.1.2 + minimist: ~1.2.0 + path-browserify: ^1.0.0 + url-parse: ~1.5.4 + checksum: cf3cfbc7c48cae20549f5514a949b253c2f9d67c79db107ab0a81c2b7a9c08e28f9fd264e3d944a05a8cb1bbb9676c6b4163b75c28788d1cb3a3cc523d44d802 + languageName: node + linkType: hard + "@jupyterlab/debugger@npm:^4.0.5": version: 4.0.5 resolution: "@jupyterlab/debugger@npm:4.0.5" @@ -2367,6 +2525,29 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/docmanager@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/docmanager@npm:4.0.6" + dependencies: + "@jupyterlab/apputils": ^4.1.6 + "@jupyterlab/coreutils": ^6.0.6 + "@jupyterlab/docregistry": ^4.0.6 + "@jupyterlab/services": ^7.0.6 + "@jupyterlab/statusbar": ^4.0.6 + "@jupyterlab/translation": ^4.0.6 + "@jupyterlab/ui-components": ^4.0.6 + "@lumino/algorithm": ^2.0.1 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/messaging": ^2.0.1 + "@lumino/properties": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/widgets": ^2.3.0 + react: ^18.2.0 + checksum: 25d3f694ae8664ca6c54bfcd36d8913caba9455fea68ed3df23963ce9723254c1f2c38fb6a93e267187f095392507d40cd2a4181c30173306c1c0b962e001b93 + languageName: node + linkType: hard + "@jupyterlab/docregistry@npm:^4.0.5": version: 4.0.5 resolution: "@jupyterlab/docregistry@npm:4.0.5" @@ -2392,6 +2573,31 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/docregistry@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/docregistry@npm:4.0.6" + dependencies: + "@jupyter/ydoc": ^1.0.2 + "@jupyterlab/apputils": ^4.1.6 + "@jupyterlab/codeeditor": ^4.0.6 + "@jupyterlab/coreutils": ^6.0.6 + "@jupyterlab/observables": ^5.0.6 + "@jupyterlab/rendermime": ^4.0.6 + "@jupyterlab/rendermime-interfaces": ^3.8.6 + "@jupyterlab/services": ^7.0.6 + "@jupyterlab/translation": ^4.0.6 + "@jupyterlab/ui-components": ^4.0.6 + "@lumino/algorithm": ^2.0.1 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/messaging": ^2.0.1 + "@lumino/properties": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/widgets": ^2.3.0 + checksum: 57de3751ea04037f27596ffe782392fb4840f3fba1776a64bb7b0dc5936a3cee4de115b2133147cda23a697d3da7802daaec0effae10be329d6c774f102091ee + languageName: node + linkType: hard + "@jupyterlab/documentsearch@npm:^4.0.5": version: 4.0.5 resolution: "@jupyterlab/documentsearch@npm:4.0.5" @@ -2410,6 +2616,24 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/documentsearch@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/documentsearch@npm:4.0.6" + dependencies: + "@jupyterlab/apputils": ^4.1.6 + "@jupyterlab/translation": ^4.0.6 + "@jupyterlab/ui-components": ^4.0.6 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/messaging": ^2.0.1 + "@lumino/polling": ^2.1.2 + "@lumino/signaling": ^2.1.2 + "@lumino/widgets": ^2.3.0 + react: ^18.2.0 + checksum: e6cf3533cdae29ca2f81147b26b056718df16998f6d89274d90cffcc70eab705634a7e36d353e9dcaea38640b490315b4ae683e937755547f42b8a5623bc914a + languageName: node + linkType: hard + "@jupyterlab/filebrowser@npm:^4.0.5": version: 4.0.5 resolution: "@jupyterlab/filebrowser@npm:4.0.5" @@ -2438,6 +2662,34 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/filebrowser@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/filebrowser@npm:4.0.6" + dependencies: + "@jupyterlab/apputils": ^4.1.6 + "@jupyterlab/coreutils": ^6.0.6 + "@jupyterlab/docmanager": ^4.0.6 + "@jupyterlab/docregistry": ^4.0.6 + "@jupyterlab/services": ^7.0.6 + "@jupyterlab/statedb": ^4.0.6 + "@jupyterlab/statusbar": ^4.0.6 + "@jupyterlab/translation": ^4.0.6 + "@jupyterlab/ui-components": ^4.0.6 + "@lumino/algorithm": ^2.0.1 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/domutils": ^2.0.1 + "@lumino/dragdrop": ^2.1.3 + "@lumino/messaging": ^2.0.1 + "@lumino/polling": ^2.1.2 + "@lumino/signaling": ^2.1.2 + "@lumino/virtualdom": ^2.0.1 + "@lumino/widgets": ^2.3.0 + react: ^18.2.0 + checksum: abe7eca4072a9c3d1f7a756840d0ad209403928b958fe09dfd81fbb693cb18c91c64027157babe1e7353a556b11c070716326b16ee2eb629089399906a3467be + languageName: node + linkType: hard + "@jupyterlab/fileeditor@npm:^4.0.5": version: 4.0.5 resolution: "@jupyterlab/fileeditor@npm:4.0.5" @@ -2511,6 +2763,27 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/lsp@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/lsp@npm:4.0.6" + dependencies: + "@jupyterlab/apputils": ^4.1.6 + "@jupyterlab/codeeditor": ^4.0.6 + "@jupyterlab/coreutils": ^6.0.6 + "@jupyterlab/docregistry": ^4.0.6 + "@jupyterlab/services": ^7.0.6 + "@jupyterlab/translation": ^4.0.6 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/signaling": ^2.1.2 + lodash.mergewith: ^4.6.1 + vscode-jsonrpc: ^6.0.0 + vscode-languageserver-protocol: ^3.17.0 + vscode-ws-jsonrpc: ~1.0.2 + checksum: 7a20f402bd2777e5ec36efe3193357ae59a8d619516ccf34bb569afe68d32df2af2c77479216826a08fd6dc16952e1430f2465e1fd9878bf092ca8773e5e2d1e + languageName: node + linkType: hard + "@jupyterlab/nbformat@npm:^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0, @jupyterlab/nbformat@npm:^4.0.5": version: 4.0.5 resolution: "@jupyterlab/nbformat@npm:4.0.5" @@ -2520,6 +2793,15 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/nbformat@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/nbformat@npm:4.0.6" + dependencies: + "@lumino/coreutils": ^2.1.2 + checksum: 43ace863be98a82875a55a947828b9b987cff35bb484e6cb6474c97f60aadbf31027c5f2fdf81b4ee2d108dc735b92c15c9b35cded765b0e476ebf0c8fd670f6 + languageName: node + linkType: hard + "@jupyterlab/notebook@npm:^4.0.5": version: 4.0.5 resolution: "@jupyterlab/notebook@npm:4.0.5" @@ -2556,6 +2838,42 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/notebook@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/notebook@npm:4.0.6" + dependencies: + "@jupyter/ydoc": ^1.0.2 + "@jupyterlab/apputils": ^4.1.6 + "@jupyterlab/cells": ^4.0.6 + "@jupyterlab/codeeditor": ^4.0.6 + "@jupyterlab/codemirror": ^4.0.6 + "@jupyterlab/coreutils": ^6.0.6 + "@jupyterlab/docregistry": ^4.0.6 + "@jupyterlab/documentsearch": ^4.0.6 + "@jupyterlab/lsp": ^4.0.6 + "@jupyterlab/nbformat": ^4.0.6 + "@jupyterlab/observables": ^5.0.6 + "@jupyterlab/rendermime": ^4.0.6 + "@jupyterlab/services": ^7.0.6 + "@jupyterlab/settingregistry": ^4.0.6 + "@jupyterlab/statusbar": ^4.0.6 + "@jupyterlab/toc": ^6.0.6 + "@jupyterlab/translation": ^4.0.6 + "@jupyterlab/ui-components": ^4.0.6 + "@lumino/algorithm": ^2.0.1 + "@lumino/coreutils": ^2.1.2 + "@lumino/domutils": ^2.0.1 + "@lumino/dragdrop": ^2.1.3 + "@lumino/messaging": ^2.0.1 + "@lumino/properties": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/virtualdom": ^2.0.1 + "@lumino/widgets": ^2.3.0 + react: ^18.2.0 + checksum: 9ffb5f39b5e6d34fc2df2662c790121fda3880a271f0606bd56f3bcff416b43b1697640d43f0a30231fcf24a935e193ca9b5bf016d34675ede0e02e1185afffb + languageName: node + linkType: hard + "@jupyterlab/observables@npm:^5.0.5": version: 5.0.5 resolution: "@jupyterlab/observables@npm:5.0.5" @@ -2569,6 +2887,19 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/observables@npm:^5.0.6": + version: 5.0.6 + resolution: "@jupyterlab/observables@npm:5.0.6" + dependencies: + "@lumino/algorithm": ^2.0.1 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/messaging": ^2.0.1 + "@lumino/signaling": ^2.1.2 + checksum: 23232972e6a049b2addeae1d445bc3a10bb6c9a3dd4794225a0344aaa1ff62421ee300ef8803a19a3f068d2bba2de8b9a8dec719a7f47019fbd77c8d5dafb7a0 + languageName: node + linkType: hard + "@jupyterlab/outputarea@npm:^4.0.5": version: 4.0.5 resolution: "@jupyterlab/outputarea@npm:4.0.5" @@ -2591,6 +2922,28 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/outputarea@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/outputarea@npm:4.0.6" + dependencies: + "@jupyterlab/apputils": ^4.1.6 + "@jupyterlab/nbformat": ^4.0.6 + "@jupyterlab/observables": ^5.0.6 + "@jupyterlab/rendermime": ^4.0.6 + "@jupyterlab/rendermime-interfaces": ^3.8.6 + "@jupyterlab/services": ^7.0.6 + "@jupyterlab/translation": ^4.0.6 + "@lumino/algorithm": ^2.0.1 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/messaging": ^2.0.1 + "@lumino/properties": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/widgets": ^2.3.0 + checksum: 2691fe7e4bdff895c821e970edbc19867107dbd8150aa7f32c7f3a4a7608f9ae9c7862dc5887fdca6983b9d6a947e05f23bbf5160c7c99eef93a0abf20d085a4 + languageName: node + linkType: hard + "@jupyterlab/rendermime-interfaces@npm:^3.8.5": version: 3.8.5 resolution: "@jupyterlab/rendermime-interfaces@npm:3.8.5" @@ -2601,6 +2954,16 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/rendermime-interfaces@npm:^3.8.6": + version: 3.8.6 + resolution: "@jupyterlab/rendermime-interfaces@npm:3.8.6" + dependencies: + "@lumino/coreutils": ^1.11.0 || ^2.1.2 + "@lumino/widgets": ^1.37.2 || ^2.3.0 + checksum: 84ba0c3979e6ace6246e00248d1248075afb112f55be202257bb89a553b235d36ca82879c56f46f58285a5fc6d39914e93fea203c53245e0ac8d1b5ef838bb50 + languageName: node + linkType: hard + "@jupyterlab/rendermime@npm:^4.0.5": version: 4.0.5 resolution: "@jupyterlab/rendermime@npm:4.0.5" @@ -2621,6 +2984,26 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/rendermime@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/rendermime@npm:4.0.6" + dependencies: + "@jupyterlab/apputils": ^4.1.6 + "@jupyterlab/coreutils": ^6.0.6 + "@jupyterlab/nbformat": ^4.0.6 + "@jupyterlab/observables": ^5.0.6 + "@jupyterlab/rendermime-interfaces": ^3.8.6 + "@jupyterlab/services": ^7.0.6 + "@jupyterlab/translation": ^4.0.6 + "@lumino/coreutils": ^2.1.2 + "@lumino/messaging": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/widgets": ^2.3.0 + lodash.escape: ^4.0.1 + checksum: 8f44601ccd6abe9985f8f713dcabf48ae38246b8b5a17a3963ebfe298dc2a03cc49d1f99c6d3bfeadbe1eb74803d0b3138c01347693a99166d7d70cb832c400b + languageName: node + linkType: hard + "@jupyterlab/services@npm:^7.0.0, @jupyterlab/services@npm:^7.0.5": version: 7.0.5 resolution: "@jupyterlab/services@npm:7.0.5" @@ -2640,6 +3023,25 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/services@npm:^7.0.6": + version: 7.0.6 + resolution: "@jupyterlab/services@npm:7.0.6" + dependencies: + "@jupyter/ydoc": ^1.0.2 + "@jupyterlab/coreutils": ^6.0.6 + "@jupyterlab/nbformat": ^4.0.6 + "@jupyterlab/settingregistry": ^4.0.6 + "@jupyterlab/statedb": ^4.0.6 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/polling": ^2.1.2 + "@lumino/properties": ^2.0.1 + "@lumino/signaling": ^2.1.2 + ws: ^8.11.0 + checksum: 6e12ef309559977209e61ce3ec8ca74aa486d54f50d8f38211b684055fb2335a21c2ae6e846d2863e48524bffd7d6ac4d36dfc9f7ca610ae4b1c60752fa6c3a8 + languageName: node + linkType: hard + "@jupyterlab/settingregistry@npm:^4.0.5": version: 4.0.5 resolution: "@jupyterlab/settingregistry@npm:4.0.5" @@ -2659,6 +3061,25 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/settingregistry@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/settingregistry@npm:4.0.6" + dependencies: + "@jupyterlab/nbformat": ^4.0.6 + "@jupyterlab/statedb": ^4.0.6 + "@lumino/commands": ^2.1.3 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/signaling": ^2.1.2 + "@rjsf/utils": ^5.1.0 + ajv: ^8.12.0 + json5: ^2.2.3 + peerDependencies: + react: ">=16" + checksum: 70b6fc44a25e0d4ec36501c1418fe2764b9a9415f892df0901c43480b608a1621141ec8045183dfbca5aedf11ebaf1518dd76e2e96373b9ebe0efa6586ce856d + languageName: node + linkType: hard + "@jupyterlab/statedb@npm:^4.0.5": version: 4.0.5 resolution: "@jupyterlab/statedb@npm:4.0.5" @@ -2672,6 +3093,19 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/statedb@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/statedb@npm:4.0.6" + dependencies: + "@lumino/commands": ^2.1.3 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/properties": ^2.0.1 + "@lumino/signaling": ^2.1.2 + checksum: de507d094afcce7f7d12f9dc846788765616140b2f75ea22997f780056baaaadae0cf9683471a1d96c61d448b38860640c823302aeef0d5e5d7c9cf598074328 + languageName: node + linkType: hard + "@jupyterlab/statusbar@npm:^4.0.5": version: 4.0.5 resolution: "@jupyterlab/statusbar@npm:4.0.5" @@ -2688,6 +3122,22 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/statusbar@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/statusbar@npm:4.0.6" + dependencies: + "@jupyterlab/ui-components": ^4.0.6 + "@lumino/algorithm": ^2.0.1 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/messaging": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/widgets": ^2.3.0 + react: ^18.2.0 + checksum: c5d579b101e19670182d87de0d601fc9c73c40b5a81120e18e6cd7853ee9fd744fa31524f24b2c92cb587bb2d6aa54c08f6e257d868426a73d968e48b1101b7c + languageName: node + linkType: hard + "@jupyterlab/testing@npm:^4.0.5": version: 4.0.5 resolution: "@jupyterlab/testing@npm:4.0.5" @@ -2747,6 +3197,27 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/toc@npm:^6.0.6": + version: 6.0.6 + resolution: "@jupyterlab/toc@npm:6.0.6" + dependencies: + "@jupyterlab/apputils": ^4.1.6 + "@jupyterlab/coreutils": ^6.0.6 + "@jupyterlab/docregistry": ^4.0.6 + "@jupyterlab/observables": ^5.0.6 + "@jupyterlab/rendermime": ^4.0.6 + "@jupyterlab/translation": ^4.0.6 + "@jupyterlab/ui-components": ^4.0.6 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/messaging": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/widgets": ^2.3.0 + react: ^18.2.0 + checksum: d8d955a00e6678c50f73f18205dd79d77c752c3b0d33699554cdb77c3501657708c699642889975c97b58a85704c3bca40de01019ce087f188681bb843f35c3a + languageName: node + linkType: hard + "@jupyterlab/translation@npm:^4.0.5": version: 4.0.5 resolution: "@jupyterlab/translation@npm:4.0.5" @@ -2760,6 +3231,19 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/translation@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/translation@npm:4.0.6" + dependencies: + "@jupyterlab/coreutils": ^6.0.6 + "@jupyterlab/rendermime-interfaces": ^3.8.6 + "@jupyterlab/services": ^7.0.6 + "@jupyterlab/statedb": ^4.0.6 + "@lumino/coreutils": ^2.1.2 + checksum: 490243a26898bbdcc1909e8e1649be90580c6d4502417590fd1b3ca24db5aeff2323e567dbfb1d528c56df89ed2e7717753ece784134f9e409d14df92bf25682 + languageName: node + linkType: hard + "@jupyterlab/ui-components@npm:^4.0.5": version: 4.0.5 resolution: "@jupyterlab/ui-components@npm:4.0.5" @@ -2789,6 +3273,35 @@ __metadata: languageName: node linkType: hard +"@jupyterlab/ui-components@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/ui-components@npm:4.0.6" + dependencies: + "@jupyterlab/coreutils": ^6.0.6 + "@jupyterlab/observables": ^5.0.6 + "@jupyterlab/rendermime-interfaces": ^3.8.6 + "@jupyterlab/translation": ^4.0.6 + "@lumino/algorithm": ^2.0.1 + "@lumino/commands": ^2.1.3 + "@lumino/coreutils": ^2.1.2 + "@lumino/disposable": ^2.1.2 + "@lumino/messaging": ^2.0.1 + "@lumino/polling": ^2.1.2 + "@lumino/properties": ^2.0.1 + "@lumino/signaling": ^2.1.2 + "@lumino/virtualdom": ^2.0.1 + "@lumino/widgets": ^2.3.0 + "@rjsf/core": ^5.1.0 + "@rjsf/utils": ^5.1.0 + react: ^18.2.0 + react-dom: ^18.2.0 + typestyle: ^2.0.4 + peerDependencies: + react: ^18.2.0 + checksum: 02997c3c35c15c0eda6a0d49fe9cfd12a3c5194c026b2ae8d8e53c7af80b769ba1598e7c24283450bacae7b8fab838d18f6c614d686c98d3d43e68f1f00b2528 + languageName: node + linkType: hard + "@lezer/common@npm:^1.0.0, @lezer/common@npm:^1.0.2": version: 1.0.4 resolution: "@lezer/common@npm:1.0.4" @@ -5072,8 +5585,13 @@ __metadata: "@jupyterlab/apputils": ^4.1.5 "@jupyterlab/builder": ^4.0.0 "@jupyterlab/coreutils": ^6.0.0 + "@jupyterlab/docmanager": ^4.0.6 + "@jupyterlab/notebook": ^4.0.6 "@jupyterlab/services": ^7.0.0 "@jupyterlab/testutils": ^4.0.0 + "@jupyterlab/ui-components": ^4.0.6 + "@lumino/coreutils": ^2.1.2 + "@lumino/widgets": ^2.3.0 "@types/jest": ^29.2.0 "@types/json-schema": ^7.0.11 "@types/react": ^18.0.26 From 1fb7f40c420821dc1b2cd52ed42c42b527a5377b Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 21 Sep 2023 07:58:29 -0400 Subject: [PATCH 010/100] disable gitignore until we get a handle on performance --- internal/bundles/gitignore/walker.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/internal/bundles/gitignore/walker.go b/internal/bundles/gitignore/walker.go index 0638a84ec..66503cd24 100644 --- a/internal/bundles/gitignore/walker.go +++ b/internal/bundles/gitignore/walker.go @@ -109,11 +109,11 @@ func NewExcludingWalker(dir util.Path, ignores []string) (util.Walker, error) { // exclusions, gitignore contents, and the provided ignore list. func NewIgnoreList(dir util.Path, ignores []string) (IgnoreList, error) { gitIgnore := New(dir) - err := gitIgnore.AppendGit() - if err != nil && err != ErrNotInGitRepo { - return nil, err - } - err = gitIgnore.AppendGlobs(standardIgnores, MatchSourceBuiltIn) + //err := gitIgnore.AppendGit() + // if err != nil && err != ErrNotInGitRepo { + // return nil, err + // } + err := gitIgnore.AppendGlobs(standardIgnores, MatchSourceBuiltIn) if err != nil { return nil, err } From ca3130f25913eb49e390ddd00c92e6034c7e503c Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 21 Sep 2023 07:58:40 -0400 Subject: [PATCH 011/100] remove debug code --- internal/events/sse_handler.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/internal/events/sse_handler.go b/internal/events/sse_handler.go index 560e54f10..9de837d33 100644 --- a/internal/events/sse_handler.go +++ b/internal/events/sse_handler.go @@ -5,7 +5,6 @@ package events import ( "context" "encoding/json" - "fmt" "log/slog" "slices" @@ -100,9 +99,6 @@ func (h *SSEHandler) Handle(ctx context.Context, rec slog.Record) error { return err } - // TODO: debugging - fmt.Println("SSE will send: ", string(eventJSON)) - h.server.Publish("messages", &sse.Event{ Data: eventJSON, From 7b68f762d5063e6aa82dd9205b249f0ae47a95b9 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 21 Sep 2023 07:58:52 -0400 Subject: [PATCH 012/100] add profiling option --- cmd/connect-client/main.go | 9 +++++++++ internal/cli_types/base.go | 5 +++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/cmd/connect-client/main.go b/cmd/connect-client/main.go index 0bc1cf435..9c5a3f709 100644 --- a/cmd/connect-client/main.go +++ b/cmd/connect-client/main.go @@ -4,6 +4,7 @@ package main import ( "os" + "runtime/pprof" "github.com/alecthomas/kong" "github.com/rstudio/connect-client/cmd/connect-client/commands" @@ -63,6 +64,14 @@ func main() { } // Dispatch to the Run() method of the selected command. args := kong.Parse(&cli, kong.Bind(ctx)) + if cli.Profile != "" { + f, err := os.Create(cli.Profile) + if err != nil { + Fatal(log, "Error creating file for profile data", err) + } + pprof.StartCPUProfile(f) + defer pprof.StopCPUProfile() + } if cli.Debug { ctx.Logger = events.NewLogger(true) } diff --git a/internal/cli_types/base.go b/internal/cli_types/base.go index b06d813e6..705228af8 100644 --- a/internal/cli_types/base.go +++ b/internal/cli_types/base.go @@ -13,8 +13,9 @@ import ( ) type CommonArgs struct { - Debug bool `help:"Enable debug mode." env:"CONNECT_DEBUG"` - Token *services.LocalToken `help:"Authentication token for the publishing UI. Default auto-generates a token."` + Debug bool `help:"Enable debug mode." env:"CONNECT_DEBUG"` + Profile string `help:"Enable CPU profiling"` + Token *services.LocalToken `help:"Authentication token for the publishing UI. Default auto-generates a token."` } type Log interface { From 61f85e8a745e320c3b861b88f520acb1d596315a Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 21 Sep 2023 07:59:29 -0400 Subject: [PATCH 013/100] launch the agent --- .../connect_jupyterlab/handlers.py | 45 +++++++++++++++++-- .../connect_jupyterlab/launch.py | 0 .../connect_jupyterlab/src/index.ts | 6 +-- 3 files changed, 43 insertions(+), 8 deletions(-) delete mode 100644 extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/launch.py diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py index 2e4a9fa92..c559777a8 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py @@ -1,18 +1,33 @@ import json +import logging +import os +import shlex +import subprocess from jupyter_server.base.handlers import APIHandler from jupyter_server.utils import url_path_join -import tornado +from tornado.web import authenticated class RouteHandler(APIHandler): - @tornado.web.authenticated + @authenticated def post(self): """post initiates the publishing process. Details TBD.""" self.log.info("Launching publishing UI") - self.finish(json.dumps({"data": "POST /connect-jupyterlab/publish endpoint!"})) + data = self.get_json_body() + notebookPath = os.path.abspath(data["notebookPath"]) + pythonPath = data["pythonPath"] + pythonVersion = data["pythonVersion"] - @tornado.web.authenticated + try: + url = launch_ui(notebookPath, pythonPath, pythonVersion, self.log) + self.log.info("Publishing UI url: %s", url) + self.finish(json.dumps({"url": url})) + except Exception as exc: + self.log.exception("UI launch failed", exc_info=exc) + self.set_status(500, str(exc)) + + @authenticated def get(self): """get returns the status of the publishing process. Details TBD.""" self.finish(json.dumps({"data": "GET /connect-jupyterlab/publish endpoint!"})) @@ -25,3 +40,25 @@ def setup_handlers(web_app): route_pattern = url_path_join(base_url, "connect-jupyterlab", "publish") handlers = [(route_pattern, RouteHandler)] web_app.add_handlers(host_pattern, handlers) + + +def launch_ui( + notebookPath: str, pythonPath: str, pythonVersion: str, log: logging.Logger +) -> str: + args = [ + "connect-client", + "publish-ui", + notebookPath, + "--python", + pythonPath, + "--python-version", + pythonVersion, + "--skip-browser-session-auth", + "-n", + "local", # cheating, no target selection in the UI yet + ] + log.info("Starting: %s", " ".join(map(shlex.quote, args))) + process = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=None, text=True) + # currently, URL is the first thing written to stdout + url = process.stdout.readline().strip() + return url diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/launch.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/launch.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/extensions/jupyterlab/connect_jupyterlab/src/index.ts b/extensions/jupyterlab/connect_jupyterlab/src/index.ts index daac0e58a..6c9e1dc23 100644 --- a/extensions/jupyterlab/connect_jupyterlab/src/index.ts +++ b/extensions/jupyterlab/connect_jupyterlab/src/index.ts @@ -8,7 +8,6 @@ import { IDocumentManager } from '@jupyterlab/docmanager'; import { INotebookTracker, NotebookPanel } from '@jupyterlab/notebook'; import { KernelMessage } from '@jupyterlab/services'; import { IKernelConnection } from '@jupyterlab/services/lib/kernel/kernel'; -import { LabIcon } from '@jupyterlab/ui-components'; import { JSONObject } from '@lumino/coreutils'; import { Widget } from '@lumino/widgets'; @@ -123,7 +122,7 @@ class IFrameWidget extends Widget { this.id = 'posit-publishing-ui-' + IFrameWidget.unique; this.title.label = 'Publish ' + notebookPath.split('/').at(-1); this.title.closable = true; - this.title.icon = LabIcon.resolveElement({ iconClass: 'rsc-icon' }); + // this.title.icon = LabIcon.resolveElement({ iconClass: 'rsc-icon' }); // nope this.addClass('jp-posit-publishing-view'); const iframe = document.createElement('iframe'); @@ -181,8 +180,7 @@ function makePublishCommand( pythonVersion ); console.log(agentInfo); - // const url = agentInfo.url; - const url = 'http://localhost:3939'; + const url = agentInfo.url; console.log(`Publishing agent serving at ${url}`); // The widget is a singleton; if it's open, activate it. From ac7d7370c259483aaa7d63d8dc1fba7d44709d79 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 21 Sep 2023 11:25:14 -0400 Subject: [PATCH 014/100] add .ipynb_checkpoints to default exclusions --- internal/bundles/gitignore/walker.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/bundles/gitignore/walker.go b/internal/bundles/gitignore/walker.go index 66503cd24..3c55d7a25 100644 --- a/internal/bundles/gitignore/walker.go +++ b/internal/bundles/gitignore/walker.go @@ -43,6 +43,9 @@ var standardIgnores = []string{ // Less precise than rsconnect, which checks for a // matching Rmd filename in the same directory. "*_cache/", + + // Other + ".ipynb_checkpoints/", } // excludingWalker is a Walker that excludes files and directories From df0f72251b1d21be90cae23bc586845d281b422b Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 21 Sep 2023 11:27:31 -0400 Subject: [PATCH 015/100] restore default listen address --- internal/cli_types/base.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/cli_types/base.go b/internal/cli_types/base.go index 705228af8..3cc9a089f 100644 --- a/internal/cli_types/base.go +++ b/internal/cli_types/base.go @@ -42,7 +42,7 @@ type UIArgs struct { Interactive bool `short:"i" help:"Launch a browser to show the UI at the listen address."` OpenBrowserAt string `help:"Launch a browser to show the UI at specific network address." placeholder:"HOST[:PORT]" hidden:""` SkipBrowserSessionAuth bool `help:"Skip Browser Token Auth Checks" hidden:""` - Listen string `help:"Network address to listen on." placeholder:"HOST[:PORT]"` + Listen string `help:"Network address to listen on." placeholder:"HOST[:PORT]" default:"localhost:0"` AccessLog bool `help:"Log all HTTP requests."` TLSKeyFile string `help:"Path to TLS private key file for the UI server."` TLSCertFile string `help:"Path to TLS certificate chain file for the UI server."` From ff6deb8bbd3a3d4740039cc31df611eb125e5944 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 21 Sep 2023 12:21:04 -0400 Subject: [PATCH 016/100] set SameSite:None --- internal/services/middleware/cookie_auth.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/services/middleware/cookie_auth.go b/internal/services/middleware/cookie_auth.go index 3e2c2062e..056f682b3 100644 --- a/internal/services/middleware/cookie_auth.go +++ b/internal/services/middleware/cookie_auth.go @@ -18,7 +18,7 @@ var cookieKey []byte = securecookie.MustGenerateRandomKey() var cookieObj = securecookie.MustNew(sessionCookieName, cookieKey, securecookie.Params{ HTTPOnly: true, Secure: false, // we currently only serve over http - SameSite: securecookie.Lax, + SameSite: securecookie.None, }) // CookieSession looks for a posit-publish-session cookie. From 9aa8ffde96e0bba2a8a7ba57a3ad78190fc08c5b Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 21 Sep 2023 12:21:21 -0400 Subject: [PATCH 017/100] use agent auth --- .../jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py | 1 - 1 file changed, 1 deletion(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py index c559777a8..2579edb2f 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py @@ -53,7 +53,6 @@ def launch_ui( pythonPath, "--python-version", pythonVersion, - "--skip-browser-session-auth", "-n", "local", # cheating, no target selection in the UI yet ] From d3fd6127cee06e9549c87d4cd16ff1428399034f Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 21 Sep 2023 14:06:42 -0400 Subject: [PATCH 018/100] ignore .posit by default --- internal/bundles/gitignore/walker.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/bundles/gitignore/walker.go b/internal/bundles/gitignore/walker.go index 3c55d7a25..82308a9f6 100644 --- a/internal/bundles/gitignore/walker.go +++ b/internal/bundles/gitignore/walker.go @@ -46,6 +46,7 @@ var standardIgnores = []string{ // Other ".ipynb_checkpoints/", + ".posit/", } // excludingWalker is a Walker that excludes files and directories From 4578da80e1da6cffadf365b289a86ddaaa0d5fee Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 21 Sep 2023 14:07:04 -0400 Subject: [PATCH 019/100] only visit ancestor gitignores --- internal/bundles/gitignore/gitignore.go | 47 ++++++++++++++++--------- internal/bundles/gitignore/walker.go | 10 +++--- 2 files changed, 36 insertions(+), 21 deletions(-) diff --git a/internal/bundles/gitignore/gitignore.go b/internal/bundles/gitignore/gitignore.go index f76b3c7f4..3db101f0b 100644 --- a/internal/bundles/gitignore/gitignore.go +++ b/internal/bundles/gitignore/gitignore.go @@ -16,7 +16,6 @@ import ( "bufio" "errors" "os" - "os/user" "path/filepath" "strings" @@ -61,6 +60,12 @@ func fromSplit(path []string) string { // New creates a new ignore list. func New(cwd util.Path) GitIgnoreList { files := make([]ignoreFile, 1, 4) + absPath, err := cwd.Abs() + if err != nil { + absPath = cwd + } + files[0].abspath = toSplit(absPath.Path()) + return GitIgnoreList{ files, toSplit(cwd.Path()), @@ -216,16 +221,16 @@ func (ign *GitIgnoreList) exists(path string) bool { var ErrNotInGitRepo = errors.New("not in a git repository") -func (ign *GitIgnoreList) findGitRoot(cwd []string) (string, error) { +func (ign *GitIgnoreList) findGitRoot(cwd []string) (util.Path, error) { p := fromSplit(cwd) for !ign.exists(p + "/.git") { if len(cwd) == 1 { - return "", ErrNotInGitRepo + return util.Path{}, ErrNotInGitRepo } cwd = cwd[:len(cwd)-1] p = fromSplit(cwd) } - return p, nil + return util.NewPath(p, ign.fs), nil } func (ign *GitIgnoreList) appendAll(fname string, root util.Path) error { @@ -248,23 +253,33 @@ func (ign *GitIgnoreList) appendAll(fname string, root util.Path) error { // the contents of all .gitignore files in that git repository to the ignore // list. func (ign *GitIgnoreList) AppendGit() error { - gitRoot, err := ign.findGitRoot(ign.cwd) - if err != nil { - return err - } - if err = ign.AppendGlobs([]string{".git"}, MatchSourceBuiltIn); err != nil { - return err - } - usr, err := user.Current() - if err != nil { + if err := ign.AppendGlobs([]string{".git"}, MatchSourceBuiltIn); err != nil { return err } - if gg := filepath.Join(usr.HomeDir, ".gitignore_global"); ign.exists(gg) { - if err = ign.append(util.NewPath(gg, ign.fs), toSplit(gitRoot)); err != nil { + // Add all .gitignore files, from this directory + // up to the git root. + dir := util.NewPath(fromSplit(ign.cwd), ign.fs) + for dir.Base() != "" { + ignorePath := dir.Join(".gitignore") + exists, err := ignorePath.Exists() + if err != nil { + return err + } + if exists { + ign.append(ignorePath, nil) + } + // See if we've reached the git root + exists, err = dir.Join(".git").Exists() + if err != nil { return err } + if exists { + // Reached git root + return nil + } + dir = dir.Dir() } - return ign.appendAll(".gitignore", util.NewPath(gitRoot, ign.fs)) + return ErrNotInGitRepo } func isPrefix(abspath, dir []string) bool { diff --git a/internal/bundles/gitignore/walker.go b/internal/bundles/gitignore/walker.go index 82308a9f6..b6d3b5251 100644 --- a/internal/bundles/gitignore/walker.go +++ b/internal/bundles/gitignore/walker.go @@ -113,11 +113,11 @@ func NewExcludingWalker(dir util.Path, ignores []string) (util.Walker, error) { // exclusions, gitignore contents, and the provided ignore list. func NewIgnoreList(dir util.Path, ignores []string) (IgnoreList, error) { gitIgnore := New(dir) - //err := gitIgnore.AppendGit() - // if err != nil && err != ErrNotInGitRepo { - // return nil, err - // } - err := gitIgnore.AppendGlobs(standardIgnores, MatchSourceBuiltIn) + err := gitIgnore.AppendGit() + if err != nil && err != ErrNotInGitRepo { + return nil, err + } + err = gitIgnore.AppendGlobs(standardIgnores, MatchSourceBuiltIn) if err != nil { return nil, err } From 9a4396f34ed38a53416ad9f6a371c6312c7c9cf4 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 21 Sep 2023 16:11:21 -0400 Subject: [PATCH 020/100] requirements file for example notebook --- .../jupyterlab/connect_jupyterlab/notebooks/requirements.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 extensions/jupyterlab/connect_jupyterlab/notebooks/requirements.txt diff --git a/extensions/jupyterlab/connect_jupyterlab/notebooks/requirements.txt b/extensions/jupyterlab/connect_jupyterlab/notebooks/requirements.txt new file mode 100644 index 000000000..e69de29bb From 1f6cab01de9870159a76aab1645a84f54b682e8e Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Mon, 25 Sep 2023 11:02:53 -0400 Subject: [PATCH 021/100] log errors in console --- extensions/jupyterlab/connect_jupyterlab/src/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/extensions/jupyterlab/connect_jupyterlab/src/index.ts b/extensions/jupyterlab/connect_jupyterlab/src/index.ts index 6c9e1dc23..203c130dd 100644 --- a/extensions/jupyterlab/connect_jupyterlab/src/index.ts +++ b/extensions/jupyterlab/connect_jupyterlab/src/index.ts @@ -201,6 +201,7 @@ function makePublishCommand( await publish(args['origin']); } catch (err) { // TODO, obv + console.error('An error occurred during publishing:', err); alert(err); } }; From c3915af7bf1b8af4fd7fa217c76f70a871feb69e Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Mon, 25 Sep 2023 11:07:18 -0400 Subject: [PATCH 022/100] python formatting --- extensions/jupyterlab/connect_jupyterlab/conftest.py | 2 +- .../connect_jupyterlab/connect_jupyterlab/__init__.py | 4 +--- .../connect_jupyterlab/connect_jupyterlab/handlers.py | 4 +--- .../connect_jupyterlab/tests/test_handlers.py | 4 +--- 4 files changed, 4 insertions(+), 10 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/conftest.py b/extensions/jupyterlab/connect_jupyterlab/conftest.py index 61d5492e5..a70fcf691 100644 --- a/extensions/jupyterlab/connect_jupyterlab/conftest.py +++ b/extensions/jupyterlab/connect_jupyterlab/conftest.py @@ -1,6 +1,6 @@ import pytest -pytest_plugins = ("pytest_jupyter.jupyter_server", ) +pytest_plugins = ("pytest_jupyter.jupyter_server",) @pytest.fixture diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/__init__.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/__init__.py index 964a509fc..4f23beee3 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/__init__.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/__init__.py @@ -32,6 +32,4 @@ def _load_jupyter_server_extension(server_app): JupyterLab application instance """ setup_handlers(server_app.web_app) - server_app.log.info( - f"Registered {PACKAGE_NAME} server extension, version {__version__}" - ) + server_app.log.info(f"Registered {PACKAGE_NAME} server extension, version {__version__}") diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py index 2579edb2f..b3ad567db 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py @@ -42,9 +42,7 @@ def setup_handlers(web_app): web_app.add_handlers(host_pattern, handlers) -def launch_ui( - notebookPath: str, pythonPath: str, pythonVersion: str, log: logging.Logger -) -> str: +def launch_ui(notebookPath: str, pythonPath: str, pythonVersion: str, log: logging.Logger) -> str: args = [ "connect-client", "publish-ui", diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py index 0b9150855..1fb546b01 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py @@ -8,6 +8,4 @@ async def test_get_example(jp_fetch): # Then assert response.code == 200 payload = json.loads(response.body) - assert payload == { - "data": "This is /connect-jupyterlab/get-example endpoint!" - } \ No newline at end of file + assert payload == {"data": "This is /connect-jupyterlab/get-example endpoint!"} From 966eac5e046815e62aa79d5f53b50ee4817b3852 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Mon, 25 Sep 2023 11:11:30 -0400 Subject: [PATCH 023/100] ensure process.stdout --- .../connect_jupyterlab/connect_jupyterlab/handlers.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py index b3ad567db..0de4e6d72 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py @@ -56,6 +56,9 @@ def launch_ui(notebookPath: str, pythonPath: str, pythonVersion: str, log: loggi ] log.info("Starting: %s", " ".join(map(shlex.quote, args))) process = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=None, text=True) + if process.stdout is None: + # This should never happen because we requested stdout=subprocess.PIPE + raise Exception("The launched process did not provide an output stream.") # currently, URL is the first thing written to stdout url = process.stdout.readline().strip() return url From b826425503b87aa412e4c3dac3565701c8bf5750 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Mon, 25 Sep 2023 11:12:32 -0400 Subject: [PATCH 024/100] set black line length for vscode --- .../jupyterlab/connect_jupyterlab/.vscode/settings.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/.vscode/settings.json b/extensions/jupyterlab/connect_jupyterlab/.vscode/settings.json index d99f2f30c..855394e45 100644 --- a/extensions/jupyterlab/connect_jupyterlab/.vscode/settings.json +++ b/extensions/jupyterlab/connect_jupyterlab/.vscode/settings.json @@ -2,5 +2,9 @@ "[python]": { "editor.defaultFormatter": "ms-python.black-formatter" }, - "python.formatting.provider": "none" + "python.formatting.provider": "none", + "black-formatter.args": [ + "--line-length", + "99" + ] } \ No newline at end of file From 7fb5ccc3efaddada6be621aa0ba1bebafb0b0d2a Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Mon, 25 Sep 2023 11:17:51 -0400 Subject: [PATCH 025/100] add justfile with python checks --- extensions/jupyterlab/connect_jupyterlab/justfile | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 extensions/jupyterlab/connect_jupyterlab/justfile diff --git a/extensions/jupyterlab/connect_jupyterlab/justfile b/extensions/jupyterlab/connect_jupyterlab/justfile new file mode 100644 index 000000000..7a0b2c3a2 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/justfile @@ -0,0 +1,10 @@ + +install-python-tools: + pip install 'black==23.*' 'flake8==6.*' 'mypy==1.5.*' + +max_line_length := '99' + +validate-python: + black ./connect_jupyterlab --line-length {{ max_line_length }} + flake8 ./connect_jupyterlab --max-line-length {{ max_line_length }} + mypy ./connect_jupyterlab From 37c5f01142dd57b0795f529c8d80811bb506398d Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Mon, 25 Sep 2023 11:24:14 -0400 Subject: [PATCH 026/100] type annotations --- .../connect_jupyterlab/connect_jupyterlab/handlers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py index 0de4e6d72..5b2cb9417 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py @@ -11,7 +11,7 @@ class RouteHandler(APIHandler): @authenticated - def post(self): + def post(self) -> None: """post initiates the publishing process. Details TBD.""" self.log.info("Launching publishing UI") data = self.get_json_body() @@ -28,7 +28,7 @@ def post(self): self.set_status(500, str(exc)) @authenticated - def get(self): + def get(self) -> None: """get returns the status of the publishing process. Details TBD.""" self.finish(json.dumps({"data": "GET /connect-jupyterlab/publish endpoint!"})) From 72bac84e9b1d80c8bb629815bb41b31e8101d598 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Mon, 25 Sep 2023 11:29:47 -0400 Subject: [PATCH 027/100] frontend validation --- .../connect_jupyterlab/.vscode/settings.json | 15 ++++------ .../jupyterlab/connect_jupyterlab/justfile | 5 ++++ .../connect_jupyterlab/schema/plugin.json | 30 +++++++++---------- .../connect_jupyterlab/style/base.css | 18 +++++------ .../ui-tests/tests/connect_jupyterlab.spec.ts | 4 ++- 5 files changed, 38 insertions(+), 34 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/.vscode/settings.json b/extensions/jupyterlab/connect_jupyterlab/.vscode/settings.json index 855394e45..6ccdb4679 100644 --- a/extensions/jupyterlab/connect_jupyterlab/.vscode/settings.json +++ b/extensions/jupyterlab/connect_jupyterlab/.vscode/settings.json @@ -1,10 +1,7 @@ { - "[python]": { - "editor.defaultFormatter": "ms-python.black-formatter" - }, - "python.formatting.provider": "none", - "black-formatter.args": [ - "--line-length", - "99" - ] -} \ No newline at end of file + "[python]": { + "editor.defaultFormatter": "ms-python.black-formatter" + }, + "python.formatting.provider": "none", + "black-formatter.args": ["--line-length", "99"] +} diff --git a/extensions/jupyterlab/connect_jupyterlab/justfile b/extensions/jupyterlab/connect_jupyterlab/justfile index 7a0b2c3a2..6e0e7e818 100644 --- a/extensions/jupyterlab/connect_jupyterlab/justfile +++ b/extensions/jupyterlab/connect_jupyterlab/justfile @@ -8,3 +8,8 @@ validate-python: black ./connect_jupyterlab --line-length {{ max_line_length }} flake8 ./connect_jupyterlab --max-line-length {{ max_line_length }} mypy ./connect_jupyterlab + +validate-js: + npm run lint:check + +validate: validate-js validate-python diff --git a/extensions/jupyterlab/connect_jupyterlab/schema/plugin.json b/extensions/jupyterlab/connect_jupyterlab/schema/plugin.json index fe113990b..a069a92d7 100644 --- a/extensions/jupyterlab/connect_jupyterlab/schema/plugin.json +++ b/extensions/jupyterlab/connect_jupyterlab/schema/plugin.json @@ -1,16 +1,16 @@ { - "jupyter.lab.toolbars": { - "Notebook": [ - { - "name": "posit-publish", - "command": "posit:publish", - "args": { "origin": "toolbar" } - } - ] - }, - "title": "@rstudio/posit-publish", - "description": "@rstudio/posit-publish settings.", - "type": "object", - "properties": {}, - "additionalProperties": false - } + "jupyter.lab.toolbars": { + "Notebook": [ + { + "name": "posit-publish", + "command": "posit:publish", + "args": { "origin": "toolbar" } + } + ] + }, + "title": "@rstudio/posit-publish", + "description": "@rstudio/posit-publish settings.", + "type": "object", + "properties": {}, + "additionalProperties": false +} diff --git a/extensions/jupyterlab/connect_jupyterlab/style/base.css b/extensions/jupyterlab/connect_jupyterlab/style/base.css index 262edd7a8..daeecd0d4 100644 --- a/extensions/jupyterlab/connect_jupyterlab/style/base.css +++ b/extensions/jupyterlab/connect_jupyterlab/style/base.css @@ -5,16 +5,16 @@ */ .rsc-icon { - font-size: 18px; - /* make the existing icon transparent so it is not visible */ - color: transparent; - /* add a background-image. size 40 x 36 */ - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAkCAYAAAD7PHgWAAACUUlEQVR42mNgGAWjYBSMVDDzPyvD9GfBDDOez2OY+fwikH4HxH8Ypj9/BRQ/CmR3MUx/ajgwjpv+PIFhxosnQEf8JwLvpZ9D59/nAFq4kkiHIePfQA/l09Zxq66wMcx4tosMxyHhl/q0jNYeHBbfAMo1MEx74QekHRhmvXABpsl4oPh0IP6AonbaSz0aOQ6YhmY8/4vmsG/AzJDOUP+fCae+ya+lgOqOAx38lGHmiwrahd6M55vQHPeTYdZz+wEqPp6HouDpz2LBxQeyA2c+L0XRAwrFGc/sgBkhl2H6iyRgdCvRMrQIJfabQAexwNXPeqIGFDuHpuYvMD1OA2cs+jvwWRpc7bznokCxx3jUz6O3A38wTHrLh1D7rI2A+n/UL1rwWTjz+UZUtS/OEwxx9PRKMZj2UBAnBtUkqBnqNhFpthGufvYLRSD/LhA/g9bdMPwaKn6YyqH9Yj1BB05/HoYUO+UE1D+ksgNfuhKw8BFD32NOJAdeoa8DIdFcj8Oyd8DawxxRGz1zJyI5PKRR4f7MDZyBIOnoCpA9mWHqU1nUhgZGWXkYGuUwXEfb6hBvUng2ASO0QI0KmoA5j4XAITTj+VpwriTURJv+bCKWqDxGy9CYg2TRB6AD2oEOdmSY+VoSWAwJQDzw1AgcXTOe38fiuO/A+lqHlg6kpNH6D9xdoHF/xAxo0RsyHAfsUD1LpU+in/1EBhitayB1LVGOuwqMdhv6505QEx6SCe5gcdRriCeeBTGs+s88CPrJ7/gZpj1VB+PZL8VHBw5GwSigEwAAO8Vb1WEAypEAAAAASUVORK5CYII=); - background-size: contain; + font-size: 18px; + /* make the existing icon transparent so it is not visible */ + color: transparent; + /* add a background-image. size 40 x 36 */ + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAkCAYAAAD7PHgWAAACUUlEQVR42mNgGAWjYBSMVDDzPyvD9GfBDDOez2OY+fwikH4HxH8Ypj9/BRQ/CmR3MUx/ajgwjpv+PIFhxosnQEf8JwLvpZ9D59/nAFq4kkiHIePfQA/l09Zxq66wMcx4tosMxyHhl/q0jNYeHBbfAMo1MEx74QekHRhmvXABpsl4oPh0IP6AonbaSz0aOQ6YhmY8/4vmsG/AzJDOUP+fCae+ya+lgOqOAx38lGHmiwrahd6M55vQHPeTYdZz+wEqPp6HouDpz2LBxQeyA2c+L0XRAwrFGc/sgBkhl2H6iyRgdCvRMrQIJfabQAexwNXPeqIGFDuHpuYvMD1OA2cs+jvwWRpc7bznokCxx3jUz6O3A38wTHrLh1D7rI2A+n/UL1rwWTjz+UZUtS/OEwxx9PRKMZj2UBAnBtUkqBnqNhFpthGufvYLRSD/LhA/g9bdMPwaKn6YyqH9Yj1BB05/HoYUO+UE1D+ksgNfuhKw8BFD32NOJAdeoa8DIdFcj8Oyd8DawxxRGz1zJyI5PKRR4f7MDZyBIOnoCpA9mWHqU1nUhgZGWXkYGuUwXEfb6hBvUng2ASO0QI0KmoA5j4XAITTj+VpwriTURJv+bCKWqDxGy9CYg2TRB6AD2oEOdmSY+VoSWAwJQDzw1AgcXTOe38fiuO/A+lqHlg6kpNH6D9xdoHF/xAxo0RsyHAfsUD1LpU+in/1EBhitayB1LVGOuwqMdhv6505QEx6SCe5gcdRriCeeBTGs+s88CPrJ7/gZpj1VB+PZL8VHBw5GwSigEwAAO8Vb1WEAypEAAAAASUVORK5CYII=); + background-size: contain; } .jp-posit-publishing-view { - width: 100%; - height: 100%; - border-width: 0px; + width: 100%; + height: 100%; + border-width: 0px; } diff --git a/extensions/jupyterlab/connect_jupyterlab/ui-tests/tests/connect_jupyterlab.spec.ts b/extensions/jupyterlab/connect_jupyterlab/ui-tests/tests/connect_jupyterlab.spec.ts index 684c4619a..4527f38eb 100644 --- a/extensions/jupyterlab/connect_jupyterlab/ui-tests/tests/connect_jupyterlab.spec.ts +++ b/extensions/jupyterlab/connect_jupyterlab/ui-tests/tests/connect_jupyterlab.spec.ts @@ -16,6 +16,8 @@ test('should emit an activation console message', async ({ page }) => { await page.goto(); expect( - logs.filter(s => s === 'JupyterLab extension connect_jupyterlab is activated!') + logs.filter( + s => s === 'JupyterLab extension connect_jupyterlab is activated!' + ) ).toHaveLength(1); }); From 0743690b520b0953f555e52aaf014b956012e71e Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Mon, 25 Sep 2023 11:35:57 -0400 Subject: [PATCH 028/100] add CI code check --- .github/workflows/pull-request.yaml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index 770a1666c..70f485763 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -685,3 +685,19 @@ jobs: # run: | # just web/build && \ # just test/ui-client ${os} + + validate-jupyterlab-plugin: + runs-on: ubuntu-latest + defaults: + run: + working-directory: ./extensions/jupyterlab/connect_jupyterlab + steps: + - + name: Checkout + uses: actions/checkout@v3 + - + name: npm install + run: npm install + - + name: validate + run: just validate From 8b5bb4db2a28c6f3871f61f3e0e5507b0f99a5e7 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Mon, 25 Sep 2023 11:38:23 -0400 Subject: [PATCH 029/100] install python tools in CI --- .github/workflows/pull-request.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index 70f485763..c9ec4a71e 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -698,6 +698,9 @@ jobs: - name: npm install run: npm install + - + name: Install python tools + run: just install-python-tools - name: validate run: just validate From ca0d8f4a195fbe05880006078f256af829053301 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Mon, 25 Sep 2023 12:34:13 -0400 Subject: [PATCH 030/100] fix indentation in GHA --- .github/workflows/pull-request.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index c9ec4a71e..873b83ca0 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -691,7 +691,7 @@ jobs: defaults: run: working-directory: ./extensions/jupyterlab/connect_jupyterlab - steps: + steps: - name: Checkout uses: actions/checkout@v3 From f9f1f372fbd683571df159e1a7449b2111cac927 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Mon, 25 Sep 2023 18:08:36 -0400 Subject: [PATCH 031/100] test --- .github/workflows/pull-request.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index 873b83ca0..d250559df 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -702,5 +702,5 @@ jobs: name: Install python tools run: just install-python-tools - - name: validate + name: Validate Code run: just validate From 3dee5926ca5b8155bea59b43a6da0c88101c98bf Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Mon, 25 Sep 2023 18:23:25 -0400 Subject: [PATCH 032/100] setup just --- .github/workflows/pull-request.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index d250559df..ff1a0fd51 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -695,6 +695,11 @@ jobs: - name: Checkout uses: actions/checkout@v3 + - + name: Setup Just + uses: extractions/setup-just@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: npm install run: npm install From d89c663af676f240841f8076ea0d0f30fcb19fbf Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Tue, 26 Sep 2023 09:00:09 -0400 Subject: [PATCH 033/100] install python dependencies --- .github/workflows/pull-request.yaml | 9 ++++++--- extensions/jupyterlab/connect_jupyterlab/justfile | 2 ++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index ff1a0fd51..e39da0193 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -701,11 +701,14 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: npm install + name: Install JupyterLab Python extension + run: just install + - + name: Install NPM dependencies run: npm install - - name: Install python tools + name: Install Python tools run: just install-python-tools - - name: Validate Code + name: Validate extension code run: just validate diff --git a/extensions/jupyterlab/connect_jupyterlab/justfile b/extensions/jupyterlab/connect_jupyterlab/justfile index 6e0e7e818..01cb790b3 100644 --- a/extensions/jupyterlab/connect_jupyterlab/justfile +++ b/extensions/jupyterlab/connect_jupyterlab/justfile @@ -1,3 +1,5 @@ +install: + pip install -e . install-python-tools: pip install 'black==23.*' 'flake8==6.*' 'mypy==1.5.*' From f853754016435161d5a8612f2ddab7a46f7adb9b Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Tue, 26 Sep 2023 09:01:06 -0400 Subject: [PATCH 034/100] remove unused functions from gitignore --- internal/bundles/gitignore/gitignore.go | 33 ------------------------- 1 file changed, 33 deletions(-) diff --git a/internal/bundles/gitignore/gitignore.go b/internal/bundles/gitignore/gitignore.go index f2e2e98db..ab0523fbc 100644 --- a/internal/bundles/gitignore/gitignore.go +++ b/internal/bundles/gitignore/gitignore.go @@ -214,41 +214,8 @@ func (ign *GitIgnoreList) Append(path util.Path) error { return ign.append(path, nil) } -func (ign *GitIgnoreList) exists(path string) bool { - _, err := ign.fs.Stat(path) - return !os.IsNotExist(err) -} - var ErrNotInGitRepo = errors.New("not in a git repository") -func (ign *GitIgnoreList) findGitRoot(cwd []string) (util.Path, error) { - p := fromSplit(cwd) - for !ign.exists(p + "/.git") { - if len(cwd) == 1 { - return util.Path{}, ErrNotInGitRepo - } - cwd = cwd[:len(cwd)-1] - p = fromSplit(cwd) - } - return util.NewPath(p, ign.fs), nil -} - -func (ign *GitIgnoreList) appendAll(fname string, root util.Path) error { - return root.Walk( - func(path util.Path, info os.FileInfo, err error) error { - if err != nil { - return err - } - if path.Base() == fname { - err := ign.append(path, nil) - if err != nil { - return err - } - } - return nil - }) -} - // AppendGit finds the root directory of the current git repository and appends // the contents of all .gitignore files in that git repository to the ignore // list. From 89178005579b3389000f7da7eb971915b289bda8 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Tue, 26 Sep 2023 09:08:50 -0400 Subject: [PATCH 035/100] terminate git search --- internal/bundles/gitignore/gitignore.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/bundles/gitignore/gitignore.go b/internal/bundles/gitignore/gitignore.go index ab0523fbc..2b3b19f37 100644 --- a/internal/bundles/gitignore/gitignore.go +++ b/internal/bundles/gitignore/gitignore.go @@ -226,7 +226,7 @@ func (ign *GitIgnoreList) AppendGit() error { // Add all .gitignore files, from this directory // up to the git root. dir := util.NewPath(fromSplit(ign.cwd), ign.fs) - for dir.Base() != "" { + for dir.Base() != "" && dir.Base() != "/" { ignorePath := dir.Join(".gitignore") exists, err := ignorePath.Exists() if err != nil { From 72d2f3c984b378270157b0e2213f597c44b03a7d Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Tue, 26 Sep 2023 09:13:48 -0400 Subject: [PATCH 036/100] preinstall jupyterlab --- extensions/jupyterlab/connect_jupyterlab/justfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/justfile b/extensions/jupyterlab/connect_jupyterlab/justfile index 01cb790b3..54b50ccf2 100644 --- a/extensions/jupyterlab/connect_jupyterlab/justfile +++ b/extensions/jupyterlab/connect_jupyterlab/justfile @@ -2,7 +2,7 @@ install: pip install -e . install-python-tools: - pip install 'black==23.*' 'flake8==6.*' 'mypy==1.5.*' + pip install 'black==23.*' 'flake8==6.*' 'mypy==1.5.*' 'jupyterlab==4.*' max_line_length := '99' From 81ded71c42e3618e634de9009a2089d5ca9ecb82 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Tue, 26 Sep 2023 09:19:34 -0400 Subject: [PATCH 037/100] check error from gitignore --- internal/bundles/gitignore/gitignore.go | 7 +++-- internal/bundles/gitignore/walker_test.go | 34 +++++++++++------------ internal/services/api/files/services.go | 3 +- 3 files changed, 23 insertions(+), 21 deletions(-) diff --git a/internal/bundles/gitignore/gitignore.go b/internal/bundles/gitignore/gitignore.go index 2b3b19f37..367a36889 100644 --- a/internal/bundles/gitignore/gitignore.go +++ b/internal/bundles/gitignore/gitignore.go @@ -226,14 +226,17 @@ func (ign *GitIgnoreList) AppendGit() error { // Add all .gitignore files, from this directory // up to the git root. dir := util.NewPath(fromSplit(ign.cwd), ign.fs) - for dir.Base() != "" && dir.Base() != "/" { + for dir.Base() != "" && dir.Base() != "/" && dir.Base() != "." { ignorePath := dir.Join(".gitignore") exists, err := ignorePath.Exists() if err != nil { return err } if exists { - ign.append(ignorePath, nil) + err = ign.append(ignorePath, nil) + if err != nil { + return err + } } // See if we've reached the git root exists, err = dir.Join(".git").Exists() diff --git a/internal/bundles/gitignore/walker_test.go b/internal/bundles/gitignore/walker_test.go index 849f962cf..2ce440203 100644 --- a/internal/bundles/gitignore/walker_test.go +++ b/internal/bundles/gitignore/walker_test.go @@ -27,7 +27,7 @@ func TestWalkerSuite(t *testing.T) { func (s *WalkerSuite) SetupTest() { s.fs = afero.NewMemMapFs() cwd, err := util.Getwd(s.fs) - s.Nil(err) + s.NoError(err) s.cwd = cwd // Create a virtual version of the cwd so NewWalker @@ -39,7 +39,7 @@ func (s *WalkerSuite) SetupTest() { func (s *WalkerSuite) TestNewExcludingWalker() { w, err := NewExcludingWalker(s.cwd, []string{"*.log"}) - s.Nil(err) + s.NoError(err) s.NotNil(w) } @@ -48,7 +48,7 @@ func (s *WalkerSuite) TestNewWalkerBadGitignore() { giPath := s.cwd.Join(".gitignore") data := []byte("[Z-A]\n") err := giPath.WriteFile(data, 0600) - s.Nil(err) + s.NoError(err) w, err := NewExcludingWalker(s.cwd, nil) s.NotNil(err) @@ -64,10 +64,10 @@ func (s *WalkerSuite) TestNewWalkerBadIgnore() { func (s *WalkerSuite) TestWalkErrorLoadingRscignore() { rscIgnorePath := s.cwd.Join(".rscignore") err := rscIgnorePath.WriteFile([]byte("[Z-A]"), 0600) - s.Nil(err) + s.NoError(err) w, err := NewExcludingWalker(s.cwd, nil) - s.Nil(err) + s.NoError(err) s.NotNil(w) err = w.Walk(s.cwd, func(path util.Path, info fs.FileInfo, err error) error { @@ -82,50 +82,50 @@ func (s *WalkerSuite) TestWalk() { // a Python env with a nonstandard name that contains bin/python envDir := baseDir.Join("notnamedenv") err := envDir.Join("bin").MkdirAll(0777) - s.Nil(err) + s.NoError(err) err = envDir.Join("bin", "python").WriteFile(nil, 0777) - s.Nil(err) + s.NoError(err) // a dir excluded by .rscignore excludedDir := baseDir.Join("excluded", "subdir") err = excludedDir.MkdirAll(0777) - s.Nil(err) + s.NoError(err) excludedFile := excludedDir.Join("dontreadthis") err = excludedFile.WriteFile([]byte("this is an excluded file"), 0600) - s.Nil(err) + s.NoError(err) rscIgnorePath := baseDir.Join(".rscignore") err = rscIgnorePath.WriteFile([]byte("excluded/\n*.csv\n"), 0600) - s.Nil(err) + s.NoError(err) // some files we want to include includedDir := baseDir.Join("included") err = includedDir.MkdirAll(0777) - s.Nil(err) + s.NoError(err) includedFile := includedDir.Join("includeme") err = includedFile.WriteFile([]byte("this is an included file"), 0600) - s.Nil(err) + s.NoError(err) // files excluded by .rscignore for i := 0; i < 3; i++ { csvPath := includedDir.Join(fmt.Sprintf("%d.csv", i)) err = csvPath.WriteFile(nil, 0600) - s.Nil(err) + s.NoError(err) } w, err := NewExcludingWalker(s.cwd, nil) - s.Nil(err) + s.NoError(err) s.NotNil(w) seen := []util.Path{} err = w.Walk(baseDir, func(path util.Path, info fs.FileInfo, err error) error { - s.Nil(err) + s.NoError(err) relPath, err := path.Rel(s.cwd) - s.Nil(err) + s.NoError(err) seen = append(seen, relPath) return nil }) - s.Nil(err) + s.NoError(err) s.Equal([]util.Path{ util.NewPath("test/dir", s.fs), util.NewPath("test/dir/.rscignore", s.fs), diff --git a/internal/services/api/files/services.go b/internal/services/api/files/services.go index 59ef7b3b1..9d9b73fae 100644 --- a/internal/services/api/files/services.go +++ b/internal/services/api/files/services.go @@ -16,8 +16,7 @@ type FilesService interface { } func CreateFilesService(base util.Path, afs afero.Fs, log logging.Logger) FilesService { - f := base.Join(".gitignore") - ignore, err := gitignore.NewIgnoreList(f, nil) + ignore, err := gitignore.NewIgnoreList(base, nil) if err != nil { log.Warn("failed to load .gitignore file") } From 62f5f32d81400390824dca22437874388fb3dc2c Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Tue, 26 Sep 2023 09:39:00 -0400 Subject: [PATCH 038/100] install jupyterlab[dev] --- extensions/jupyterlab/connect_jupyterlab/justfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/justfile b/extensions/jupyterlab/connect_jupyterlab/justfile index 54b50ccf2..2eff88372 100644 --- a/extensions/jupyterlab/connect_jupyterlab/justfile +++ b/extensions/jupyterlab/connect_jupyterlab/justfile @@ -2,7 +2,7 @@ install: pip install -e . install-python-tools: - pip install 'black==23.*' 'flake8==6.*' 'mypy==1.5.*' 'jupyterlab==4.*' + pip install 'black==23.*' 'flake8==6.*' 'mypy==1.5.*' 'jupyterlab[dev]==4.*' max_line_length := '99' From d85a33d0713d85a25a462d920a26e9841cc9f666 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Tue, 26 Sep 2023 09:56:52 -0400 Subject: [PATCH 039/100] run in virtualenv --- .github/workflows/pull-request.yaml | 5 +++++ extensions/jupyterlab/connect_jupyterlab/justfile | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index e39da0193..6d92829fa 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -700,6 +700,11 @@ jobs: uses: extractions/setup-just@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Create virtualenv + run: | + python -m venv ./env + . env/bin/activate + echo PATH=$PATH >> $GITHUB_ENV - name: Install JupyterLab Python extension run: just install diff --git a/extensions/jupyterlab/connect_jupyterlab/justfile b/extensions/jupyterlab/connect_jupyterlab/justfile index 2eff88372..54b50ccf2 100644 --- a/extensions/jupyterlab/connect_jupyterlab/justfile +++ b/extensions/jupyterlab/connect_jupyterlab/justfile @@ -2,7 +2,7 @@ install: pip install -e . install-python-tools: - pip install 'black==23.*' 'flake8==6.*' 'mypy==1.5.*' 'jupyterlab[dev]==4.*' + pip install 'black==23.*' 'flake8==6.*' 'mypy==1.5.*' 'jupyterlab==4.*' max_line_length := '99' From 188ccd83867f011e213ec83461d7266c42895fc0 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Tue, 26 Sep 2023 11:10:57 -0400 Subject: [PATCH 040/100] proxy to the agent --- .../connect_jupyterlab/handlers.py | 52 ++++++++++++++++--- .../connect_jupyterlab/pyproject.toml | 3 +- 2 files changed, 47 insertions(+), 8 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py index 5b2cb9417..af3ff330b 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py @@ -3,13 +3,18 @@ import os import shlex import subprocess +from urllib.parse import urlparse from jupyter_server.base.handlers import APIHandler from jupyter_server.utils import url_path_join +from jupyter_server_proxy.handlers import LocalProxyHandler from tornado.web import authenticated +base_url = None +known_ports = {} -class RouteHandler(APIHandler): + +class PublishHandler(APIHandler): @authenticated def post(self) -> None: """post initiates the publishing process. Details TBD.""" @@ -20,9 +25,16 @@ def post(self) -> None: pythonVersion = data["pythonVersion"] try: - url = launch_ui(notebookPath, pythonPath, pythonVersion, self.log) - self.log.info("Publishing UI url: %s", url) - self.finish(json.dumps({"url": url})) + ui_url = launch_ui(notebookPath, pythonPath, pythonVersion, self.log) + parsed = urlparse(ui_url) + proxy_path = url_path_join(base_url, "ui", str(parsed.port), "/") + req = self.request + ui_url = parsed._replace( + scheme=req.protocol, netloc=req.host, path=proxy_path + ).geturl() + + self.log.info("Publishing UI url: %s", ui_url) + self.finish(json.dumps({"url": ui_url})) except Exception as exc: self.log.exception("UI launch failed", exc_info=exc) self.set_status(500, str(exc)) @@ -33,12 +45,34 @@ def get(self) -> None: self.finish(json.dumps({"data": "GET /connect-jupyterlab/publish endpoint!"})) +class UIHandler(LocalProxyHandler): + """UIHandler proxies requests to a running agent instance. + + Proxied paths are /connect-jupyterlab/ui/{port}/*. + This handler verifies that the port belongs to one of + the agents we launched. + """ + + def proxy(self, port, proxied_path): + if int(port) not in known_ports: + self.set_status(400, "Invalid proxy path") + self.finish() + return + return super().proxy(port, proxied_path) + + def setup_handlers(web_app): host_pattern = ".*$" - base_url = web_app.settings["base_url"] - route_pattern = url_path_join(base_url, "connect-jupyterlab", "publish") - handlers = [(route_pattern, RouteHandler)] + global base_url + base_url = url_path_join(web_app.settings["base_url"], "connect-jupyterlab") + route_pattern = url_path_join(base_url, "publish") + ui_pattern = url_path_join(base_url, "ui", r"(\d+)", r"(.*)") + + handlers = [ + (route_pattern, PublishHandler), + (ui_pattern, UIHandler), + ] web_app.add_handlers(host_pattern, handlers) @@ -56,9 +90,13 @@ def launch_ui(notebookPath: str, pythonPath: str, pythonVersion: str, log: loggi ] log.info("Starting: %s", " ".join(map(shlex.quote, args))) process = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=None, text=True) + if process.stdout is None: # This should never happen because we requested stdout=subprocess.PIPE raise Exception("The launched process did not provide an output stream.") # currently, URL is the first thing written to stdout url = process.stdout.readline().strip() + + parsed = urlparse(url) + known_ports[parsed.port] = process return url diff --git a/extensions/jupyterlab/connect_jupyterlab/pyproject.toml b/extensions/jupyterlab/connect_jupyterlab/pyproject.toml index 19d66b16e..c1b0dde32 100644 --- a/extensions/jupyterlab/connect_jupyterlab/pyproject.toml +++ b/extensions/jupyterlab/connect_jupyterlab/pyproject.toml @@ -22,7 +22,8 @@ classifiers = [ "Programming Language :: Python :: 3.11", ] dependencies = [ - "jupyter_server>=2.0.1,<3" + "jupyter_server>=2.0.1,<3", + "jupyter_server_proxy>=4,<5" ] dynamic = ["version", "description", "authors", "urls", "keywords"] From 43fac6e53b22e1e4f56fafa8364845d8b43bac65 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Tue, 26 Sep 2023 15:29:33 -0400 Subject: [PATCH 041/100] rewrite redirects and cookies --- .../connect_jupyterlab/handlers.py | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py index af3ff330b..9cbe6fbc4 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py @@ -8,7 +8,9 @@ from jupyter_server.base.handlers import APIHandler from jupyter_server.utils import url_path_join from jupyter_server_proxy.handlers import LocalProxyHandler +from tornado.httputil import HTTPServerRequest from tornado.web import authenticated +from tornado.httpclient import HTTPResponse base_url = None known_ports = {} @@ -53,6 +55,24 @@ class UIHandler(LocalProxyHandler): the agents we launched. """ + def __init__(self, *args, **kw): + kw["rewrite_response"] = UIHandler.rewrite + super().__init__(*args, **kw) + + @staticmethod + def rewrite(request: HTTPServerRequest, response: HTTPResponse): + # rewrite the auth redirect from the agent + # This doesn't handle arbitrary redirects. + loc = response.headers.get("Location") + if loc is not None: + response.headers["Location"] = request.path + + # scope any cookies to this app's path + cookie = response.headers.get("Set-Cookie") + if cookie is not None: + base_path = "/".join(request.path.split("/")[:4]) + response.headers["Set-Cookie"] = f"{cookie}; Path={base_path}" + def proxy(self, port, proxied_path): if int(port) not in known_ports: self.set_status(400, "Invalid proxy path") From 75c00b223c3c83c4e35c57e6803d02b7eecf4f52 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Tue, 26 Sep 2023 15:32:24 -0400 Subject: [PATCH 042/100] update yarn.lock --- .../jupyterlab/connect_jupyterlab/yarn.lock | 1623 ++++++----------- 1 file changed, 560 insertions(+), 1063 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/yarn.lock b/extensions/jupyterlab/connect_jupyterlab/yarn.lock index bb18b6dc3..5235f2dd4 100644 --- a/extensions/jupyterlab/connect_jupyterlab/yarn.lock +++ b/extensions/jupyterlab/connect_jupyterlab/yarn.lock @@ -32,45 +32,45 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/compat-data@npm:7.22.9" - checksum: bed77d9044ce948b4327b30dd0de0779fa9f3a7ed1f2d31638714ed00229fa71fc4d1617ae0eb1fad419338d3658d0e9a5a083297451e09e73e078d0347ff808 +"@babel/compat-data@npm:^7.22.20, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9": + version: 7.22.20 + resolution: "@babel/compat-data@npm:7.22.20" + checksum: efedd1d18878c10fde95e4d82b1236a9aba41395ef798cbb651f58dbf5632dbff475736c507b8d13d4c8f44809d41c0eb2ef0d694283af9ba5dd8339b6dab451 languageName: node linkType: hard "@babel/core@npm:^7.10.2, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3": - version: 7.22.17 - resolution: "@babel/core@npm:7.22.17" + version: 7.23.0 + resolution: "@babel/core@npm:7.23.0" dependencies: "@ampproject/remapping": ^2.2.0 "@babel/code-frame": ^7.22.13 - "@babel/generator": ^7.22.15 + "@babel/generator": ^7.23.0 "@babel/helper-compilation-targets": ^7.22.15 - "@babel/helper-module-transforms": ^7.22.17 - "@babel/helpers": ^7.22.15 - "@babel/parser": ^7.22.16 + "@babel/helper-module-transforms": ^7.23.0 + "@babel/helpers": ^7.23.0 + "@babel/parser": ^7.23.0 "@babel/template": ^7.22.15 - "@babel/traverse": ^7.22.17 - "@babel/types": ^7.22.17 - convert-source-map: ^1.7.0 + "@babel/traverse": ^7.23.0 + "@babel/types": ^7.23.0 + convert-source-map: ^2.0.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.3 semver: ^6.3.1 - checksum: 355216a342d1b3952d7c040dd4c99ecef6b3501ba99a713703c1fec1ae73bc92a48a0c1234562bdbb4fd334b2e452f5a6c3bb282f0e613fa89e1518c91d1aea1 + checksum: cebd9b48dbc970a7548522f207f245c69567e5ea17ebb1a4e4de563823cf20a01177fe8d2fe19b6e1461361f92fa169fd0b29f8ee9d44eeec84842be1feee5f2 languageName: node linkType: hard -"@babel/generator@npm:^7.22.15, @babel/generator@npm:^7.7.2": - version: 7.22.15 - resolution: "@babel/generator@npm:7.22.15" +"@babel/generator@npm:^7.23.0, @babel/generator@npm:^7.7.2": + version: 7.23.0 + resolution: "@babel/generator@npm:7.23.0" dependencies: - "@babel/types": ^7.22.15 + "@babel/types": ^7.23.0 "@jridgewell/gen-mapping": ^0.3.2 "@jridgewell/trace-mapping": ^0.3.17 jsesc: ^2.5.1 - checksum: 5b2a3ccdc3634f6ea86e0a442722bcd430238369432d31f15b428a4ee8013c2f4f917b5b135bf4fc1d0a3e2f87f10fd4ce5d07955ecc2d3b9400a05c2a481374 + checksum: 8efe24adad34300f1f8ea2add420b28171a646edc70f2a1b3e1683842f23b8b7ffa7e35ef0119294e1901f45bfea5b3dc70abe1f10a1917ccdfb41bed69be5f1 languageName: node linkType: hard @@ -152,20 +152,20 @@ __metadata: languageName: node linkType: hard -"@babel/helper-environment-visitor@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-environment-visitor@npm:7.22.5" - checksum: 248532077d732a34cd0844eb7b078ff917c3a8ec81a7f133593f71a860a582f05b60f818dc5049c2212e5baa12289c27889a4b81d56ef409b4863db49646c4b1 +"@babel/helper-environment-visitor@npm:^7.22.20, @babel/helper-environment-visitor@npm:^7.22.5": + version: 7.22.20 + resolution: "@babel/helper-environment-visitor@npm:7.22.20" + checksum: d80ee98ff66f41e233f36ca1921774c37e88a803b2f7dca3db7c057a5fea0473804db9fb6729e5dbfd07f4bed722d60f7852035c2c739382e84c335661590b69 languageName: node linkType: hard -"@babel/helper-function-name@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-function-name@npm:7.22.5" +"@babel/helper-function-name@npm:^7.22.5, @babel/helper-function-name@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/helper-function-name@npm:7.23.0" dependencies: - "@babel/template": ^7.22.5 - "@babel/types": ^7.22.5 - checksum: 6b1f6ce1b1f4e513bf2c8385a557ea0dd7fa37971b9002ad19268ca4384bbe90c09681fe4c076013f33deabc63a53b341ed91e792de741b4b35e01c00238177a + "@babel/template": ^7.22.15 + "@babel/types": ^7.23.0 + checksum: e44542257b2d4634a1f979244eb2a4ad8e6d75eb6761b4cfceb56b562f7db150d134bc538c8e6adca3783e3bc31be949071527aa8e3aab7867d1ad2d84a26e10 languageName: node linkType: hard @@ -178,12 +178,12 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.22.15, @babel/helper-member-expression-to-functions@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/helper-member-expression-to-functions@npm:7.22.15" +"@babel/helper-member-expression-to-functions@npm:^7.22.15": + version: 7.23.0 + resolution: "@babel/helper-member-expression-to-functions@npm:7.23.0" dependencies: - "@babel/types": ^7.22.15 - checksum: c7c5d01c402dd8902c2ec3093f203ed0fc3bc5f669328a084d2e663c4c06dd0415480ee8220c6f96ba9b2dc49545c0078f221fc3900ab1e65de69a12fe7b361f + "@babel/types": ^7.23.0 + checksum: 494659361370c979ada711ca685e2efe9460683c36db1b283b446122596602c901e291e09f2f980ecedfe6e0f2bd5386cb59768285446530df10c14df1024e75 languageName: node linkType: hard @@ -196,18 +196,18 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.22.15, @babel/helper-module-transforms@npm:^7.22.17, @babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.22.9": - version: 7.22.17 - resolution: "@babel/helper-module-transforms@npm:7.22.17" +"@babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/helper-module-transforms@npm:7.23.0" dependencies: - "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-environment-visitor": ^7.22.20 "@babel/helper-module-imports": ^7.22.15 "@babel/helper-simple-access": ^7.22.5 "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/helper-validator-identifier": ^7.22.15 + "@babel/helper-validator-identifier": ^7.22.20 peerDependencies: "@babel/core": ^7.0.0 - checksum: 458021c74093e66179765fcc9d1c1cb694f7bdf98656f23486901d35636495c38aab4661547fac2142e13d887987d1ea30cc9fe42968376a51a99bcd207b4989 + checksum: 6e2afffb058cf3f8ce92f5116f710dda4341c81cfcd872f9a0197ea594f7ce0ab3cb940b0590af2fe99e60d2e5448bfba6bca8156ed70a2ed4be2adc8586c891 languageName: node linkType: hard @@ -228,28 +228,28 @@ __metadata: linkType: hard "@babel/helper-remap-async-to-generator@npm:^7.22.5, @babel/helper-remap-async-to-generator@npm:^7.22.9": - version: 7.22.17 - resolution: "@babel/helper-remap-async-to-generator@npm:7.22.17" + version: 7.22.20 + resolution: "@babel/helper-remap-async-to-generator@npm:7.22.20" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-wrap-function": ^7.22.17 + "@babel/helper-environment-visitor": ^7.22.20 + "@babel/helper-wrap-function": ^7.22.20 peerDependencies: "@babel/core": ^7.0.0 - checksum: 59307e623d00b6f5fa7f974e29081b2243e3f7bc3a89df331e8c1f8815d83f97bd092404a28b8bef5299028e3259450b5a943f34e1b32c7c55350436d218ab13 + checksum: 2fe6300a6f1b58211dffa0aed1b45d4958506d096543663dba83bd9251fe8d670fa909143a65b45e72acb49e7e20fbdb73eae315d9ddaced467948c3329986e7 languageName: node linkType: hard "@babel/helper-replace-supers@npm:^7.22.5, @babel/helper-replace-supers@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/helper-replace-supers@npm:7.22.9" + version: 7.22.20 + resolution: "@babel/helper-replace-supers@npm:7.22.20" dependencies: - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-member-expression-to-functions": ^7.22.5 + "@babel/helper-environment-visitor": ^7.22.20 + "@babel/helper-member-expression-to-functions": ^7.22.15 "@babel/helper-optimise-call-expression": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0 - checksum: d41471f56ff2616459d35a5df1900d5f0756ae78b1027040365325ef332d66e08e3be02a9489756d870887585ff222403a228546e93dd7019e19e59c0c0fe586 + checksum: a0008332e24daedea2e9498733e3c39b389d6d4512637e000f96f62b797e702ee24a407ccbcd7a236a551590a38f31282829a8ef35c50a3c0457d88218cae639 languageName: node linkType: hard @@ -287,10 +287,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.22.15, @babel/helper-validator-identifier@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/helper-validator-identifier@npm:7.22.15" - checksum: eb0bee4bda664c0959924bc1ad5611eacfce806f46612202dd164fef1df8fef1a11682a1e7615288987100e9fb304982b6e2a4ff07ffe842ab8765b95ed1118c +"@babel/helper-validator-identifier@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-validator-identifier@npm:7.22.20" + checksum: 136412784d9428266bcdd4d91c32bcf9ff0e8d25534a9d94b044f77fe76bc50f941a90319b05aafd1ec04f7d127cd57a179a3716009ff7f3412ef835ada95bdc languageName: node linkType: hard @@ -301,45 +301,45 @@ __metadata: languageName: node linkType: hard -"@babel/helper-wrap-function@npm:^7.22.17": - version: 7.22.17 - resolution: "@babel/helper-wrap-function@npm:7.22.17" +"@babel/helper-wrap-function@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-wrap-function@npm:7.22.20" dependencies: "@babel/helper-function-name": ^7.22.5 "@babel/template": ^7.22.15 - "@babel/types": ^7.22.17 - checksum: 95328b508049b6edd9cadd2ac89b4d4812ebdfa54a2ae77791939d795d88d561b31fd3669eea5d13558372cf2422eda05177d7f742690b5023c712bc3f0aec8e + "@babel/types": ^7.22.19 + checksum: 221ed9b5572612aeb571e4ce6a256f2dee85b3c9536f1dd5e611b0255e5f59a3d0ec392d8d46d4152149156a8109f92f20379b1d6d36abb613176e0e33f05fca languageName: node linkType: hard -"@babel/helpers@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/helpers@npm:7.22.15" +"@babel/helpers@npm:^7.23.0": + version: 7.23.1 + resolution: "@babel/helpers@npm:7.23.1" dependencies: "@babel/template": ^7.22.15 - "@babel/traverse": ^7.22.15 - "@babel/types": ^7.22.15 - checksum: 49f61a93cbae4df3328bda67af5db743fead659ae4242571226c3596b7df78546189cdf991fed1eca33b559de8abf396a90a001f474a1bab351418f07b7ae6ef + "@babel/traverse": ^7.23.0 + "@babel/types": ^7.23.0 + checksum: acfc345102045c24ea2a4d60e00dcf8220e215af3add4520e2167700661338e6a80bd56baf44bb764af05ec6621101c9afc315dc107e18c61fa6da8acbdbb893 languageName: node linkType: hard "@babel/highlight@npm:^7.22.13": - version: 7.22.13 - resolution: "@babel/highlight@npm:7.22.13" + version: 7.22.20 + resolution: "@babel/highlight@npm:7.22.20" dependencies: - "@babel/helper-validator-identifier": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.20 chalk: ^2.4.2 js-tokens: ^4.0.0 - checksum: 7266d2bff8aa8fc78eb65b6e92a8211e12897a731126a282d2f9bb50d8fcaa4c1b02af2284f990ac7e3ab8d892d448a2cab8f5ed0ea8a90bce2c025b11ebe802 + checksum: 84bd034dca309a5e680083cd827a766780ca63cef37308404f17653d32366ea76262bd2364b2d38776232f2d01b649f26721417d507e8b4b6da3e4e739f6d134 languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.15, @babel/parser@npm:^7.22.16": - version: 7.22.16 - resolution: "@babel/parser@npm:7.22.16" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.15, @babel/parser@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/parser@npm:7.23.0" bin: parser: ./bin/babel-parser.js - checksum: 944c756b5bdeb07b9fec16ecef6b3c61aff9d4c4b924abadcf01afa1840a740b8e2357ae00482b5b37daad6d2bfd848c947f27ad65138d687b6fdc924bc59edd + checksum: 453fdf8b9e2c2b7d7b02139e0ce003d1af21947bbc03eb350fb248ee335c9b85e4ab41697ddbdd97079698de825a265e45a0846bb2ed47a2c7c1df833f42a354 languageName: node linkType: hard @@ -658,13 +658,13 @@ __metadata: linkType: hard "@babel/plugin-transform-block-scoping@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/plugin-transform-block-scoping@npm:7.22.15" + version: 7.23.0 + resolution: "@babel/plugin-transform-block-scoping@npm:7.23.0" dependencies: "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c7091dc000b854ce0c471588ca0704ef1ce78cff954584a9f21c1668fd0669e7c8d5396fb72fe49a2216d9b96a400d435f424f27e41a097ef6c855f9c57df195 + checksum: 0cfe925cc3b5a3ad407e2253fab3ceeaa117a4b291c9cb245578880872999bca91bd83ffa0128ae9ca356330702e1ef1dcb26804f28d2cef678239caf629f73e languageName: node linkType: hard @@ -725,13 +725,13 @@ __metadata: linkType: hard "@babel/plugin-transform-destructuring@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/plugin-transform-destructuring@npm:7.22.15" + version: 7.23.0 + resolution: "@babel/plugin-transform-destructuring@npm:7.23.0" dependencies: "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4bccb4765e5287f1d36119d930afb9941ea8f4f001bddb8febff716bac0e09dc58576624f3ec59470630513044dd342075fe11af16d8c1b234cb7406cffca9f0 + checksum: cd6dd454ccc2766be551e4f8a04b1acc2aa539fa19e5c7501c56cc2f8cc921dd41a7ffb78455b4c4b2f954fcab8ca4561ba7c9c7bd5af9f19465243603d18cc3 languageName: node linkType: hard @@ -865,41 +865,41 @@ __metadata: linkType: hard "@babel/plugin-transform-modules-amd@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-modules-amd@npm:7.22.5" + version: 7.23.0 + resolution: "@babel/plugin-transform-modules-amd@npm:7.23.0" dependencies: - "@babel/helper-module-transforms": ^7.22.5 + "@babel/helper-module-transforms": ^7.23.0 "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7da4c4ebbbcf7d182abb59b2046b22d86eee340caf8a22a39ef6a727da2d8acfec1f714fcdcd5054110b280e4934f735e80a6848d192b6834c5d4459a014f04d + checksum: 5d92875170a37b8282d4bcd805f55829b8fab0f9c8d08b53d32a7a0bfdc62b868e489b52d329ae768ecafc0c993eed0ad7a387baa673ac33211390a9f833ab5d languageName: node linkType: hard "@babel/plugin-transform-modules-commonjs@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.22.15" + version: 7.23.0 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.23.0" dependencies: - "@babel/helper-module-transforms": ^7.22.15 + "@babel/helper-module-transforms": ^7.23.0 "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-simple-access": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f8fc85fefa6be8626a378ca38fb84c7359043e7c692c854e9ee250a05121553b7f4a58e127099efe12662ec6bebbfd304ce638a0b4563d7cbd5982f3d877321c + checksum: 7fb25997194053e167c4207c319ff05362392da841bd9f42ddb3caf9c8798a5d203bd926d23ddf5830fdf05eddc82c2810f40d1287e3a4f80b07eff13d1024b5 languageName: node linkType: hard "@babel/plugin-transform-modules-systemjs@npm:^7.22.11": - version: 7.22.11 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.22.11" + version: 7.23.0 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.23.0" dependencies: "@babel/helper-hoist-variables": ^7.22.5 - "@babel/helper-module-transforms": ^7.22.9 + "@babel/helper-module-transforms": ^7.23.0 "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-validator-identifier": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.20 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d0991e4bdc3352b6a9f4d12b6662e3645d892cd5c3c005ba5f14e65f1e218c6a8f7f4497e64a51d82a046e507aaa7db3143b800b0270dca1824cbd214ff3363d + checksum: 2d481458b22605046badea2317d5cc5c94ac3031c2293e34c96f02063f5b02af0979c4da6a8fbc67cc249541575dc9c6d710db6b919ede70b7337a22d9fd57a7 languageName: node linkType: hard @@ -1002,15 +1002,15 @@ __metadata: linkType: hard "@babel/plugin-transform-optional-chaining@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.22.15" + version: 7.23.0 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.23.0" dependencies: "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 "@babel/plugin-syntax-optional-chaining": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 6b97abe0e50ca2dd8684fcef2c8d12607637e707aa9d513b7035f5e812efbde9305736b438d422103a7844e04124cad5efa4ff0e6226a57afa1210a1c7485c8e + checksum: f702634f2b97e5260dbec0d4bde05ccb6f4d96d7bfa946481aeacfa205ca846cb6e096a38312f9d51fdbdac1f258f211138c5f7075952e46a5bf8574de6a1329 languageName: node linkType: hard @@ -1189,10 +1189,10 @@ __metadata: linkType: hard "@babel/preset-env@npm:^7.10.2": - version: 7.22.15 - resolution: "@babel/preset-env@npm:7.22.15" + version: 7.22.20 + resolution: "@babel/preset-env@npm:7.22.20" dependencies: - "@babel/compat-data": ^7.22.9 + "@babel/compat-data": ^7.22.20 "@babel/helper-compilation-targets": ^7.22.15 "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-validator-option": ^7.22.15 @@ -1266,7 +1266,7 @@ __metadata: "@babel/plugin-transform-unicode-regex": ^7.22.5 "@babel/plugin-transform-unicode-sets-regex": ^7.22.5 "@babel/preset-modules": 0.1.6-no-external-plugins - "@babel/types": ^7.22.15 + "@babel/types": ^7.22.19 babel-plugin-polyfill-corejs2: ^0.4.5 babel-plugin-polyfill-corejs3: ^0.8.3 babel-plugin-polyfill-regenerator: ^0.5.2 @@ -1274,7 +1274,7 @@ __metadata: semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c3cf0223cab006cbf0c563a49a5076caa0b62e3b61b4f10ba857347fcd4f85dbb662a78e6f289e4f29f72c36974696737ae86c23da114617f5b00ab2c1c66126 + checksum: 99357a5cb30f53bacdc0d1cd6dff0f052ea6c2d1ba874d969bba69897ef716e87283e84a59dc52fb49aa31fd1b6f55ed756c64c04f5678380700239f6030b881 languageName: node linkType: hard @@ -1299,11 +1299,11 @@ __metadata: linkType: hard "@babel/runtime@npm:^7.8.4": - version: 7.22.15 - resolution: "@babel/runtime@npm:7.22.15" + version: 7.23.1 + resolution: "@babel/runtime@npm:7.23.1" dependencies: regenerator-runtime: ^0.14.0 - checksum: 793296df1e41599a935a3d77ec01eb6088410d3fd4dbe4e92f06c6b7bb2f8355024e6d78621a3a35f44e0e23b0b59107f23d585384df4f3123256a1e1492040e + checksum: 0cd0d43e6e7dc7f9152fda8c8312b08321cda2f56ef53d6c22ebdd773abdc6f5d0a69008de90aa41908d00e2c1facb24715ff121274e689305c858355ff02c70 languageName: node linkType: hard @@ -1318,32 +1318,32 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.22.15, @babel/traverse@npm:^7.22.17": - version: 7.22.17 - resolution: "@babel/traverse@npm:7.22.17" +"@babel/traverse@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/traverse@npm:7.23.0" dependencies: "@babel/code-frame": ^7.22.13 - "@babel/generator": ^7.22.15 - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-function-name": ^7.22.5 + "@babel/generator": ^7.23.0 + "@babel/helper-environment-visitor": ^7.22.20 + "@babel/helper-function-name": ^7.23.0 "@babel/helper-hoist-variables": ^7.22.5 "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/parser": ^7.22.16 - "@babel/types": ^7.22.17 + "@babel/parser": ^7.23.0 + "@babel/types": ^7.23.0 debug: ^4.1.0 globals: ^11.1.0 - checksum: 1153ca166a0a9b3fddf67f7f7c8c5b4f88aa2c2c00261ff2fc8424a63bc93250ed3fd08b04bd526ad19e797aeb6f22161120646a570cbfe5ff2a5d2f5d28af01 + checksum: 0b17fae53269e1af2cd3edba00892bc2975ad5df9eea7b84815dab07dfec2928c451066d51bc65b4be61d8499e77db7e547ce69ef2a7b0eca3f96269cb43a0b0 languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.17, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": - version: 7.22.17 - resolution: "@babel/types@npm:7.22.17" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": + version: 7.23.0 + resolution: "@babel/types@npm:7.23.0" dependencies: "@babel/helper-string-parser": ^7.22.5 - "@babel/helper-validator-identifier": ^7.22.15 + "@babel/helper-validator-identifier": ^7.22.20 to-fast-properties: ^2.0.0 - checksum: 7382220f6eb2548f2c867a98916c3aa8a6063498d5372e5d21d8d184ba354033defb72aeba5858c1b2b42177058b896a34a7dcbae5eccd47fb0104721efa909d + checksum: 215fe04bd7feef79eeb4d33374b39909ce9cad1611c4135a4f7fdf41fe3280594105af6d7094354751514625ea92d0875aba355f53e86a92600f290e77b0e604 languageName: node linkType: hard @@ -1355,19 +1355,19 @@ __metadata: linkType: hard "@codemirror/autocomplete@npm:^6.0.0, @codemirror/autocomplete@npm:^6.3.2, @codemirror/autocomplete@npm:^6.5.1, @codemirror/autocomplete@npm:^6.7.1": - version: 6.9.0 - resolution: "@codemirror/autocomplete@npm:6.9.0" + version: 6.9.1 + resolution: "@codemirror/autocomplete@npm:6.9.1" dependencies: "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 - "@codemirror/view": ^6.6.0 + "@codemirror/view": ^6.17.0 "@lezer/common": ^1.0.0 peerDependencies: "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 "@lezer/common": ^1.0.0 - checksum: a5f661944c75f40b02c90a193c9a459c0fd7e335c0ac5973420c19157dfb46010f573c2b70731591fe477e7a2ad10121ff3ae394a72d450946d7b886c28b0368 + checksum: 96dad7a12429bf61e6f1bf75da731bf0dcbfeb56c33400b60a0de22049226e0926a53a174e84701812a235f8f144595ce53f0928054481bdf9cdc2ed3b8be20f languageName: node linkType: hard @@ -1459,8 +1459,8 @@ __metadata: linkType: hard "@codemirror/lang-markdown@npm:^6.1.1": - version: 6.2.0 - resolution: "@codemirror/lang-markdown@npm:6.2.0" + version: 6.2.1 + resolution: "@codemirror/lang-markdown@npm:6.2.1" dependencies: "@codemirror/autocomplete": ^6.7.1 "@codemirror/lang-html": ^6.0.0 @@ -1469,7 +1469,7 @@ __metadata: "@codemirror/view": ^6.0.0 "@lezer/common": ^1.0.0 "@lezer/markdown": ^1.0.0 - checksum: 0b2b5334abc8bb46fdaf0723fcddb9565b89c58d245ee0cced2c62c9c5de8430ad8bd73ab92d8a6bd67130173b59006bec2922e614e0277aa2b2d62f308113cf + checksum: ef3bdfd01e418efc7f7fdf0baa2e8e91875b37f870fcad98f846954763c7cc71bac95736591cd6c52b39cc380261d76ae7b37ca97ef1641c4c266476748046d3 languageName: node linkType: hard @@ -1545,16 +1545,16 @@ __metadata: linkType: hard "@codemirror/language@npm:^6.0.0, @codemirror/language@npm:^6.3.0, @codemirror/language@npm:^6.4.0, @codemirror/language@npm:^6.6.0, @codemirror/language@npm:^6.8.0": - version: 6.9.0 - resolution: "@codemirror/language@npm:6.9.0" + version: 6.9.1 + resolution: "@codemirror/language@npm:6.9.1" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 - "@lezer/common": ^1.0.0 + "@lezer/common": ^1.1.0 "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 style-mod: ^4.0.0 - checksum: 9a897fb0f569159eeafb7dce83061b425af7244bbeae2649e0e677488548b2a02eaf0c13c0c5b4d59da55e8866e6f4dc7abe3dfaa09c13749a2fa2c0dbc0c565 + checksum: 62265f1042d2edfd3a091c408d9d0071f23889099b2f6ce8275fa910118bd2c45b8c4b29228c7be6e6d5f0e0812a522de902bc75ba8d8b2e62e42ade1692a49a languageName: node linkType: hard @@ -1568,24 +1568,24 @@ __metadata: linkType: hard "@codemirror/lint@npm:^6.0.0": - version: 6.4.1 - resolution: "@codemirror/lint@npm:6.4.1" + version: 6.4.2 + resolution: "@codemirror/lint@npm:6.4.2" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 crelt: ^1.0.5 - checksum: ac8120ca96b5ef57abd2705b2620c15c7449b5056bca87053480e244c6772863e1537387a863cfb784f9f2af2c8b30be78a31660d96a815672059085beb51fd5 + checksum: 5e699960c1b28dbaa584fe091a3201978907bf4b9e52810fb15d3ceaf310e38053435e0b594da0985266ae812039a5cd6c36023284a6f8568664bdca04db137f languageName: node linkType: hard "@codemirror/search@npm:^6.3.0": - version: 6.5.2 - resolution: "@codemirror/search@npm:6.5.2" + version: 6.5.4 + resolution: "@codemirror/search@npm:6.5.4" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 crelt: ^1.0.5 - checksum: bc535151277fda0a370ac496b9b0d5751fd91bd8e3eb29dafbfe6bf3125dc450a7e361ebc302f0ebc4193ac337bdf555ab3d5ec753dbb44452225618a5630dd3 + checksum: 32a68e40486730949ee79f54b9fcc6c744559aef188d3c5bf82881f62e5fc9468fa21cf227507638160043c797eb054205802a649cf4a2350928fc161d5aac40 languageName: node linkType: hard @@ -1596,40 +1596,40 @@ __metadata: languageName: node linkType: hard -"@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.17.0, @codemirror/view@npm:^6.6.0, @codemirror/view@npm:^6.9.6": - version: 6.18.1 - resolution: "@codemirror/view@npm:6.18.1" +"@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.17.0, @codemirror/view@npm:^6.9.6": + version: 6.20.2 + resolution: "@codemirror/view@npm:6.20.2" dependencies: "@codemirror/state": ^6.1.4 style-mod: ^4.1.0 w3c-keyname: ^2.2.4 - checksum: 12e350169a12a3cca059712769f81306c95b59accce8ec3c5e6deb1f2fc570baac6f64768aa04f6337bca8448d66520417ec8a4c1c456d40324758695ed9fe90 + checksum: eaf47726bb94b40f12c6f1d3494b558addaa7cd98a4ff05bfea7439c03cca3967d73380346ea8b06021478c21ec336a74665c9acb44e2b0280d5e0da4714387b languageName: node linkType: hard "@csstools/css-parser-algorithms@npm:^2.3.1": - version: 2.3.1 - resolution: "@csstools/css-parser-algorithms@npm:2.3.1" + version: 2.3.2 + resolution: "@csstools/css-parser-algorithms@npm:2.3.2" peerDependencies: - "@csstools/css-tokenizer": ^2.2.0 - checksum: 90c6aa391ff817b0fc2ae20b9cc5e3308e3906536d83c8eeb502171ec709730a2cd0458eb7646378f74db545c9079fd026e125dbdbe26030652f9466bacc1183 + "@csstools/css-tokenizer": ^2.2.1 + checksum: 71663a00369014727ac89ae738f0acd1341b2dc1474ff16799a6f4d24674c55c3ddb89d70c8f1ffc4e03508b18a621830f8f8a51707fda6cc5ea48f1a53cc559 languageName: node linkType: hard "@csstools/css-tokenizer@npm:^2.2.0": - version: 2.2.0 - resolution: "@csstools/css-tokenizer@npm:2.2.0" - checksum: d6b3ead496e187cbf89b5e08a55be7a8393676c2b93526f7f051418376d08146f9f533708aca5eec6a07d925ea6a7e65b0e0bb36aabeba657666e968b8d89cd0 + version: 2.2.1 + resolution: "@csstools/css-tokenizer@npm:2.2.1" + checksum: ebd9f65b253037d3a575ded45dbe41c12e71d83d6aa8a6a3a9fc2427862a805678df2a825cd19cf36b587be93f5cb1bd0932bb5c362d227ed9533db35b1fc6fa languageName: node linkType: hard "@csstools/media-query-list-parser@npm:^2.1.4": - version: 2.1.4 - resolution: "@csstools/media-query-list-parser@npm:2.1.4" + version: 2.1.5 + resolution: "@csstools/media-query-list-parser@npm:2.1.5" peerDependencies: - "@csstools/css-parser-algorithms": ^2.3.1 - "@csstools/css-tokenizer": ^2.2.0 - checksum: 8fa5be6acea01af39f49e08b2f2e2f7f54c2881c2c8a7a8cc783f8668610404398e81f86092f44ae64914d0f7626a5177d721ce5d1858b1599b26c91687f311e + "@csstools/css-parser-algorithms": ^2.3.2 + "@csstools/css-tokenizer": ^2.2.1 + checksum: 119c27951377781c06c0b68ee6f7815c71d7623e439da0d5009f2101a6cd996f60b3fd60466d7059b8f7a936fbc9fbd2306ba953fa2daf9728a710881971ab08 languageName: node linkType: hard @@ -1661,9 +1661,9 @@ __metadata: linkType: hard "@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": - version: 4.8.1 - resolution: "@eslint-community/regexpp@npm:4.8.1" - checksum: 82d62c845ef42b810f268cfdc84d803a2da01735fb52e902fd34bdc09f92464a094fd8e4802839874b000b2f73f67c972859e813ba705233515d3e954f234bf2 + version: 4.8.2 + resolution: "@eslint-community/regexpp@npm:4.8.2" + checksum: da1cb0b7b210d93b44950b0fe050dd9c6c475513d5d6dfccbb6a9502a2fe630fcb3f8becd4e284cbb293df3ac756b79c6a487b59c42b9aea510b108278ea84ee languageName: node linkType: hard @@ -1684,10 +1684,10 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:8.49.0": - version: 8.49.0 - resolution: "@eslint/js@npm:8.49.0" - checksum: a6601807c8aeeefe866926ad92ed98007c034a735af20ff709009e39ad1337474243d47908500a3bde04e37bfba16bcf1d3452417f962e1345bc8756edd6b830 +"@eslint/js@npm:8.50.0": + version: 8.50.0 + resolution: "@eslint/js@npm:8.50.0" + checksum: 302478f2acaaa7228729ec6a04f56641590185e1d8cd1c836a6db8a6b8009f80a57349341be9fbb9aa1721a7a569d1be3ffc598a33300d22816f11832095386c languageName: node linkType: hard @@ -2040,8 +2040,8 @@ __metadata: linkType: hard "@jupyter/ydoc@npm:^1.0.2": - version: 1.0.2 - resolution: "@jupyter/ydoc@npm:1.0.2" + version: 1.1.0 + resolution: "@jupyter/ydoc@npm:1.1.0" dependencies: "@jupyterlab/nbformat": ^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0 "@lumino/coreutils": ^1.11.0 || ^2.0.0 @@ -2049,24 +2049,24 @@ __metadata: "@lumino/signaling": ^1.10.0 || ^2.0.0 y-protocols: ^1.0.5 yjs: ^13.5.40 - checksum: 739f9630940466b3cfcd7b742dd06479f81772ca13f863d057af0bbb5e318829506969066ab72977e7c721644982b5c8f88cf44e1ae81955ed1c27e87632d1f2 + checksum: 75530fa80ee157763d20c53251d3f28a8f19396145a7b59b003abd0ba4b040f977e259aaf61e220a2f74340902a0620f7a71f9ed09a165276e0178f4821fc821 languageName: node linkType: hard -"@jupyterlab/application@npm:^4.0.0, @jupyterlab/application@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/application@npm:4.0.5" +"@jupyterlab/application@npm:^4.0.0, @jupyterlab/application@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/application@npm:4.0.6" dependencies: "@fortawesome/fontawesome-free": ^5.12.0 - "@jupyterlab/apputils": ^4.1.5 - "@jupyterlab/coreutils": ^6.0.5 - "@jupyterlab/docregistry": ^4.0.5 - "@jupyterlab/rendermime": ^4.0.5 - "@jupyterlab/rendermime-interfaces": ^3.8.5 - "@jupyterlab/services": ^7.0.5 - "@jupyterlab/statedb": ^4.0.5 - "@jupyterlab/translation": ^4.0.5 - "@jupyterlab/ui-components": ^4.0.5 + "@jupyterlab/apputils": ^4.1.6 + "@jupyterlab/coreutils": ^6.0.6 + "@jupyterlab/docregistry": ^4.0.6 + "@jupyterlab/rendermime": ^4.0.6 + "@jupyterlab/rendermime-interfaces": ^3.8.6 + "@jupyterlab/services": ^7.0.6 + "@jupyterlab/statedb": ^4.0.6 + "@jupyterlab/translation": ^4.0.6 + "@jupyterlab/ui-components": ^4.0.6 "@lumino/algorithm": ^2.0.1 "@lumino/application": ^2.2.1 "@lumino/commands": ^2.1.3 @@ -2077,40 +2077,11 @@ __metadata: "@lumino/properties": ^2.0.1 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.0 - checksum: 532f0090016d72fd7c2366a7d6de44033ccdc9b70f0a27a13141ce673d0ebad7804c73c0c55f18ccf3e0dec5c6f7d0190ef489753c220d649c2f42d6b0c8e61f + checksum: 1212b71d3717bc02543b3eee74e69be799634421bd9b291b7adf07ba27bf6f9c7db860c423c824eaced9c2524db2f6b58de2c58e7edd5de2f0d7fabbb2c94b8c languageName: node linkType: hard -"@jupyterlab/apputils@npm:^4.1.5": - version: 4.1.5 - resolution: "@jupyterlab/apputils@npm:4.1.5" - dependencies: - "@jupyterlab/coreutils": ^6.0.5 - "@jupyterlab/observables": ^5.0.5 - "@jupyterlab/rendermime-interfaces": ^3.8.5 - "@jupyterlab/services": ^7.0.5 - "@jupyterlab/settingregistry": ^4.0.5 - "@jupyterlab/statedb": ^4.0.5 - "@jupyterlab/statusbar": ^4.0.5 - "@jupyterlab/translation": ^4.0.5 - "@jupyterlab/ui-components": ^4.0.5 - "@lumino/algorithm": ^2.0.1 - "@lumino/commands": ^2.1.3 - "@lumino/coreutils": ^2.1.2 - "@lumino/disposable": ^2.1.2 - "@lumino/domutils": ^2.0.1 - "@lumino/messaging": ^2.0.1 - "@lumino/signaling": ^2.1.2 - "@lumino/virtualdom": ^2.0.1 - "@lumino/widgets": ^2.3.0 - "@types/react": ^18.0.26 - react: ^18.2.0 - sanitize-html: ~2.7.3 - checksum: b569303e8b38173de8612a3c04bac349f25c151bbb83b4f594311d679896aed37ba1467e9ff123e605c0d5400c89cf0d66fce697440ea07fff9dd4a408148e2f - languageName: node - linkType: hard - -"@jupyterlab/apputils@npm:^4.1.6": +"@jupyterlab/apputils@npm:^4.1.5, @jupyterlab/apputils@npm:^4.1.6": version: 4.1.6 resolution: "@jupyterlab/apputils@npm:4.1.6" dependencies: @@ -2139,20 +2110,6 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/attachments@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/attachments@npm:4.0.5" - dependencies: - "@jupyterlab/nbformat": ^4.0.5 - "@jupyterlab/observables": ^5.0.5 - "@jupyterlab/rendermime": ^4.0.5 - "@jupyterlab/rendermime-interfaces": ^3.8.5 - "@lumino/disposable": ^2.1.2 - "@lumino/signaling": ^2.1.2 - checksum: bb0a5dc7e830fc42824743cc817cf59a43c43b6f3979b3d6214619baf69f77bb70606241b39a92da21788348eb1144a0914e3683f0b2b8d01a530e8aeaf6f01e - languageName: node - linkType: hard - "@jupyterlab/attachments@npm:^4.0.6": version: 4.0.6 resolution: "@jupyterlab/attachments@npm:4.0.6" @@ -2168,8 +2125,8 @@ __metadata: linkType: hard "@jupyterlab/builder@npm:^4.0.0": - version: 4.0.5 - resolution: "@jupyterlab/builder@npm:4.0.5" + version: 4.0.6 + resolution: "@jupyterlab/builder@npm:4.0.6" dependencies: "@lumino/algorithm": ^2.0.1 "@lumino/application": ^2.2.1 @@ -2204,43 +2161,7 @@ __metadata: worker-loader: ^3.0.2 bin: build-labextension: lib/build-labextension.js - checksum: 60b12e784881a16a3d2c794b0edfaea85e5da0b84f1a751564741df665c0bfcea8baabb91e5c061461fc431a8a5570e837cbf7692b39935b0df7fe87e1c0f213 - languageName: node - linkType: hard - -"@jupyterlab/cells@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/cells@npm:4.0.5" - dependencies: - "@codemirror/state": ^6.2.0 - "@codemirror/view": ^6.9.6 - "@jupyter/ydoc": ^1.0.2 - "@jupyterlab/apputils": ^4.1.5 - "@jupyterlab/attachments": ^4.0.5 - "@jupyterlab/codeeditor": ^4.0.5 - "@jupyterlab/codemirror": ^4.0.5 - "@jupyterlab/coreutils": ^6.0.5 - "@jupyterlab/documentsearch": ^4.0.5 - "@jupyterlab/filebrowser": ^4.0.5 - "@jupyterlab/nbformat": ^4.0.5 - "@jupyterlab/observables": ^5.0.5 - "@jupyterlab/outputarea": ^4.0.5 - "@jupyterlab/rendermime": ^4.0.5 - "@jupyterlab/services": ^7.0.5 - "@jupyterlab/toc": ^6.0.5 - "@jupyterlab/translation": ^4.0.5 - "@jupyterlab/ui-components": ^4.0.5 - "@lumino/algorithm": ^2.0.1 - "@lumino/coreutils": ^2.1.2 - "@lumino/domutils": ^2.0.1 - "@lumino/dragdrop": ^2.1.3 - "@lumino/messaging": ^2.0.1 - "@lumino/polling": ^2.1.2 - "@lumino/signaling": ^2.1.2 - "@lumino/virtualdom": ^2.0.1 - "@lumino/widgets": ^2.3.0 - react: ^18.2.0 - checksum: d674a15ddf870bea876d8b40ec598bbe9ba6d59b653223b381beec7e4e1e18c1b2c623585a9edc24e186dc666d73c63c55cee76ec83f975183f17bb5a56a8573 + checksum: 8ee8db483e07bcc99c45133616a60f57eb2f323898217961cecf82ef875343879327ad7e74adaa860577742d946e8325f16dfcb54845930db41faa9f4bdad70c languageName: node linkType: hard @@ -2280,29 +2201,6 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/codeeditor@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/codeeditor@npm:4.0.5" - dependencies: - "@codemirror/state": ^6.2.0 - "@jupyter/ydoc": ^1.0.2 - "@jupyterlab/coreutils": ^6.0.5 - "@jupyterlab/nbformat": ^4.0.5 - "@jupyterlab/observables": ^5.0.5 - "@jupyterlab/statusbar": ^4.0.5 - "@jupyterlab/translation": ^4.0.5 - "@jupyterlab/ui-components": ^4.0.5 - "@lumino/coreutils": ^2.1.2 - "@lumino/disposable": ^2.1.2 - "@lumino/dragdrop": ^2.1.3 - "@lumino/messaging": ^2.0.1 - "@lumino/signaling": ^2.1.2 - "@lumino/widgets": ^2.3.0 - react: ^18.2.0 - checksum: 4bd539cd22ccf84b982b427ad921b33f0e4dd0c02980827b59bf748b30c6e85180e03357f92c2a2b54c3e086965d2458b6a5f2043160ede85f530a14300b3f00 - languageName: node - linkType: hard - "@jupyterlab/codeeditor@npm:^4.0.6": version: 4.0.6 resolution: "@jupyterlab/codeeditor@npm:4.0.6" @@ -2326,48 +2224,6 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/codemirror@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/codemirror@npm:4.0.5" - dependencies: - "@codemirror/autocomplete": ^6.5.1 - "@codemirror/commands": ^6.2.3 - "@codemirror/lang-cpp": ^6.0.2 - "@codemirror/lang-css": ^6.1.1 - "@codemirror/lang-html": ^6.4.3 - "@codemirror/lang-java": ^6.0.1 - "@codemirror/lang-javascript": ^6.1.7 - "@codemirror/lang-json": ^6.0.1 - "@codemirror/lang-markdown": ^6.1.1 - "@codemirror/lang-php": ^6.0.1 - "@codemirror/lang-python": ^6.1.3 - "@codemirror/lang-rust": ^6.0.1 - "@codemirror/lang-sql": ^6.4.1 - "@codemirror/lang-wast": ^6.0.1 - "@codemirror/lang-xml": ^6.0.2 - "@codemirror/language": ^6.6.0 - "@codemirror/legacy-modes": ^6.3.2 - "@codemirror/search": ^6.3.0 - "@codemirror/state": ^6.2.0 - "@codemirror/view": ^6.9.6 - "@jupyter/ydoc": ^1.0.2 - "@jupyterlab/codeeditor": ^4.0.5 - "@jupyterlab/coreutils": ^6.0.5 - "@jupyterlab/documentsearch": ^4.0.5 - "@jupyterlab/nbformat": ^4.0.5 - "@jupyterlab/translation": ^4.0.5 - "@lezer/common": ^1.0.2 - "@lezer/generator": ^1.2.2 - "@lezer/highlight": ^1.1.4 - "@lezer/markdown": ^1.0.2 - "@lumino/coreutils": ^2.1.2 - "@lumino/disposable": ^2.1.2 - "@lumino/signaling": ^2.1.2 - yjs: ^13.5.40 - checksum: 840d9abd7c34ce7fb09446eff235e056e2d04da290f83380c020a9c3e2a1a27c0d3fc7ffcbd54a1f6de6325a57cc18d350d30c61a0f27d9810d8d2ec32aa5cf2 - languageName: node - linkType: hard - "@jupyterlab/codemirror@npm:^4.0.6": version: 4.0.6 resolution: "@jupyterlab/codemirror@npm:4.0.6" @@ -2410,48 +2266,34 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/console@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/console@npm:4.0.5" +"@jupyterlab/console@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/console@npm:4.0.6" dependencies: "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.9.6 "@jupyter/ydoc": ^1.0.2 - "@jupyterlab/apputils": ^4.1.5 - "@jupyterlab/cells": ^4.0.5 - "@jupyterlab/codeeditor": ^4.0.5 - "@jupyterlab/coreutils": ^6.0.5 - "@jupyterlab/nbformat": ^4.0.5 - "@jupyterlab/observables": ^5.0.5 - "@jupyterlab/rendermime": ^4.0.5 - "@jupyterlab/services": ^7.0.5 - "@jupyterlab/translation": ^4.0.5 - "@jupyterlab/ui-components": ^4.0.5 + "@jupyterlab/apputils": ^4.1.6 + "@jupyterlab/cells": ^4.0.6 + "@jupyterlab/codeeditor": ^4.0.6 + "@jupyterlab/coreutils": ^6.0.6 + "@jupyterlab/nbformat": ^4.0.6 + "@jupyterlab/observables": ^5.0.6 + "@jupyterlab/rendermime": ^4.0.6 + "@jupyterlab/services": ^7.0.6 + "@jupyterlab/translation": ^4.0.6 + "@jupyterlab/ui-components": ^4.0.6 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/dragdrop": ^2.1.3 "@lumino/messaging": ^2.0.1 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.0 - checksum: 22837f4dc7445370c3b2e971a58403f6b71843e103d65766e9aaa63757d34c0ba04399fa826fcd13a5530dbcbe31227cd6c6766900ef88a56cbea4a84ade0da7 - languageName: node - linkType: hard - -"@jupyterlab/coreutils@npm:^6.0.0, @jupyterlab/coreutils@npm:^6.0.5": - version: 6.0.5 - resolution: "@jupyterlab/coreutils@npm:6.0.5" - dependencies: - "@lumino/coreutils": ^2.1.2 - "@lumino/disposable": ^2.1.2 - "@lumino/signaling": ^2.1.2 - minimist: ~1.2.0 - path-browserify: ^1.0.0 - url-parse: ~1.5.4 - checksum: c09be7c8f389bb7f019fb868acfc528a0bc553a7b091412b7e0bfb1d0f2c71223ada8d6972d42df25fb6f70be21ecac00703e12d1df62a44dc2a512baac54dac + checksum: 2d7213c83dc088b51976378b88c88f4cfd05d9cd14aa476cb8130ffbfedd7ac8af25a2e9a34b60bc8ec50ea973f33ed7689845d894d00c8cd095b3fec8fb5fa2 languageName: node linkType: hard -"@jupyterlab/coreutils@npm:^6.0.6": +"@jupyterlab/coreutils@npm:^6.0.0, @jupyterlab/coreutils@npm:^6.0.6": version: 6.0.6 resolution: "@jupyterlab/coreutils@npm:6.0.6" dependencies: @@ -2465,28 +2307,28 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/debugger@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/debugger@npm:4.0.5" +"@jupyterlab/debugger@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/debugger@npm:4.0.6" dependencies: "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.9.6 "@jupyter/ydoc": ^1.0.2 - "@jupyterlab/application": ^4.0.5 - "@jupyterlab/apputils": ^4.1.5 - "@jupyterlab/cells": ^4.0.5 - "@jupyterlab/codeeditor": ^4.0.5 - "@jupyterlab/codemirror": ^4.0.5 - "@jupyterlab/console": ^4.0.5 - "@jupyterlab/coreutils": ^6.0.5 - "@jupyterlab/docregistry": ^4.0.5 - "@jupyterlab/fileeditor": ^4.0.5 - "@jupyterlab/notebook": ^4.0.5 - "@jupyterlab/observables": ^5.0.5 - "@jupyterlab/rendermime": ^4.0.5 - "@jupyterlab/services": ^7.0.5 - "@jupyterlab/translation": ^4.0.5 - "@jupyterlab/ui-components": ^4.0.5 + "@jupyterlab/application": ^4.0.6 + "@jupyterlab/apputils": ^4.1.6 + "@jupyterlab/cells": ^4.0.6 + "@jupyterlab/codeeditor": ^4.0.6 + "@jupyterlab/codemirror": ^4.0.6 + "@jupyterlab/console": ^4.0.6 + "@jupyterlab/coreutils": ^6.0.6 + "@jupyterlab/docregistry": ^4.0.6 + "@jupyterlab/fileeditor": ^4.0.6 + "@jupyterlab/notebook": ^4.0.6 + "@jupyterlab/observables": ^5.0.6 + "@jupyterlab/rendermime": ^4.0.6 + "@jupyterlab/services": ^7.0.6 + "@jupyterlab/translation": ^4.0.6 + "@jupyterlab/ui-components": ^4.0.6 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.1.3 "@lumino/coreutils": ^2.1.2 @@ -2498,30 +2340,7 @@ __metadata: "@lumino/widgets": ^2.3.0 "@vscode/debugprotocol": ^1.51.0 react: ^18.2.0 - checksum: edeab0e4efa20ffcd0572efa863c988c6d4f413b22fabb139dc560fb8b31c833fc774974898af94f81d62a25c41df23b25434247ac0b180276211f322228bce4 - languageName: node - linkType: hard - -"@jupyterlab/docmanager@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/docmanager@npm:4.0.5" - dependencies: - "@jupyterlab/apputils": ^4.1.5 - "@jupyterlab/coreutils": ^6.0.5 - "@jupyterlab/docregistry": ^4.0.5 - "@jupyterlab/services": ^7.0.5 - "@jupyterlab/statusbar": ^4.0.5 - "@jupyterlab/translation": ^4.0.5 - "@jupyterlab/ui-components": ^4.0.5 - "@lumino/algorithm": ^2.0.1 - "@lumino/coreutils": ^2.1.2 - "@lumino/disposable": ^2.1.2 - "@lumino/messaging": ^2.0.1 - "@lumino/properties": ^2.0.1 - "@lumino/signaling": ^2.1.2 - "@lumino/widgets": ^2.3.0 - react: ^18.2.0 - checksum: 16627833d9d540e9569bd27e3464c6c9a5cf9f628265b5018a4f63e05f351c4891494b8c731f83bb279da3bb42d0da23cb1d1b536c0b1b4422e4f6f250377ca5 + checksum: 7e686d218202fa8ec3511c789b77a8a6a53fe7a3b791023dd2b4a3c9a4ea943e0a59a675153c2807a29fe80f82e3ca050523eec0fa03bcb567204f408bdfdc3f languageName: node linkType: hard @@ -2548,31 +2367,6 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/docregistry@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/docregistry@npm:4.0.5" - dependencies: - "@jupyter/ydoc": ^1.0.2 - "@jupyterlab/apputils": ^4.1.5 - "@jupyterlab/codeeditor": ^4.0.5 - "@jupyterlab/coreutils": ^6.0.5 - "@jupyterlab/observables": ^5.0.5 - "@jupyterlab/rendermime": ^4.0.5 - "@jupyterlab/rendermime-interfaces": ^3.8.5 - "@jupyterlab/services": ^7.0.5 - "@jupyterlab/translation": ^4.0.5 - "@jupyterlab/ui-components": ^4.0.5 - "@lumino/algorithm": ^2.0.1 - "@lumino/coreutils": ^2.1.2 - "@lumino/disposable": ^2.1.2 - "@lumino/messaging": ^2.0.1 - "@lumino/properties": ^2.0.1 - "@lumino/signaling": ^2.1.2 - "@lumino/widgets": ^2.3.0 - checksum: 455286f8fbeb00f7afcc52c43830d6ab6941020338df23564591a0a59e1b2551f918a55382540983a1bf0b1bf4bdfc008b88f5acbff4a2e3c5dca6ac1dd84a6d - languageName: node - linkType: hard - "@jupyterlab/docregistry@npm:^4.0.6": version: 4.0.6 resolution: "@jupyterlab/docregistry@npm:4.0.6" @@ -2598,24 +2392,6 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/documentsearch@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/documentsearch@npm:4.0.5" - dependencies: - "@jupyterlab/apputils": ^4.1.5 - "@jupyterlab/translation": ^4.0.5 - "@jupyterlab/ui-components": ^4.0.5 - "@lumino/coreutils": ^2.1.2 - "@lumino/disposable": ^2.1.2 - "@lumino/messaging": ^2.0.1 - "@lumino/polling": ^2.1.2 - "@lumino/signaling": ^2.1.2 - "@lumino/widgets": ^2.3.0 - react: ^18.2.0 - checksum: d7fe83a57562e9f90555c8b938f77edff21f7204b52a7cdd4a0cd21f5382fd5a7906e5d7c2ec661802b5d9bada42f80fcaa5d129931aeac949e8655d290d9adf - languageName: node - linkType: hard - "@jupyterlab/documentsearch@npm:^4.0.6": version: 4.0.6 resolution: "@jupyterlab/documentsearch@npm:4.0.6" @@ -2634,34 +2410,6 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/filebrowser@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/filebrowser@npm:4.0.5" - dependencies: - "@jupyterlab/apputils": ^4.1.5 - "@jupyterlab/coreutils": ^6.0.5 - "@jupyterlab/docmanager": ^4.0.5 - "@jupyterlab/docregistry": ^4.0.5 - "@jupyterlab/services": ^7.0.5 - "@jupyterlab/statedb": ^4.0.5 - "@jupyterlab/statusbar": ^4.0.5 - "@jupyterlab/translation": ^4.0.5 - "@jupyterlab/ui-components": ^4.0.5 - "@lumino/algorithm": ^2.0.1 - "@lumino/coreutils": ^2.1.2 - "@lumino/disposable": ^2.1.2 - "@lumino/domutils": ^2.0.1 - "@lumino/dragdrop": ^2.1.3 - "@lumino/messaging": ^2.0.1 - "@lumino/polling": ^2.1.2 - "@lumino/signaling": ^2.1.2 - "@lumino/virtualdom": ^2.0.1 - "@lumino/widgets": ^2.3.0 - react: ^18.2.0 - checksum: f47d55cc8ff246efe65fdbf1f0fc09e227eca9bafcf0f1e45e1973612ad13e0853f1393882decddc2f1df015f11097b6d751bdbcdc255ed438adc96598b376a8 - languageName: node - linkType: hard - "@jupyterlab/filebrowser@npm:^4.0.6": version: 4.0.6 resolution: "@jupyterlab/filebrowser@npm:4.0.6" @@ -2690,44 +2438,44 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/fileeditor@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/fileeditor@npm:4.0.5" +"@jupyterlab/fileeditor@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/fileeditor@npm:4.0.6" dependencies: - "@jupyterlab/apputils": ^4.1.5 - "@jupyterlab/codeeditor": ^4.0.5 - "@jupyterlab/codemirror": ^4.0.5 - "@jupyterlab/coreutils": ^6.0.5 - "@jupyterlab/docregistry": ^4.0.5 - "@jupyterlab/documentsearch": ^4.0.5 - "@jupyterlab/lsp": ^4.0.5 - "@jupyterlab/statusbar": ^4.0.5 - "@jupyterlab/toc": ^6.0.5 - "@jupyterlab/translation": ^4.0.5 - "@jupyterlab/ui-components": ^4.0.5 + "@jupyterlab/apputils": ^4.1.6 + "@jupyterlab/codeeditor": ^4.0.6 + "@jupyterlab/codemirror": ^4.0.6 + "@jupyterlab/coreutils": ^6.0.6 + "@jupyterlab/docregistry": ^4.0.6 + "@jupyterlab/documentsearch": ^4.0.6 + "@jupyterlab/lsp": ^4.0.6 + "@jupyterlab/statusbar": ^4.0.6 + "@jupyterlab/toc": ^6.0.6 + "@jupyterlab/translation": ^4.0.6 + "@jupyterlab/ui-components": ^4.0.6 "@lumino/commands": ^2.1.3 "@lumino/coreutils": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/widgets": ^2.3.0 react: ^18.2.0 regexp-match-indices: ^1.0.2 - checksum: 7598dec866704fb664223b805a3fa7db4eb6506f10b4c59a831404d1462e2d993955b259095ea7d35258bb1be9147860d261f11e48c493331bb77746807565ac + checksum: cc70beea6dffe131574a73106e9381c80fe05b440f00f37312e4c12a0995dd22989f414916f4b450d455db20bf28d9ea3c2ef339e5ecfd45e61ce433c0bb8a0a languageName: node linkType: hard "@jupyterlab/galata@npm:^5.0.5": - version: 5.0.5 - resolution: "@jupyterlab/galata@npm:5.0.5" + version: 5.0.6 + resolution: "@jupyterlab/galata@npm:5.0.6" dependencies: - "@jupyterlab/application": ^4.0.5 - "@jupyterlab/apputils": ^4.1.5 - "@jupyterlab/coreutils": ^6.0.5 - "@jupyterlab/debugger": ^4.0.5 - "@jupyterlab/docmanager": ^4.0.5 - "@jupyterlab/nbformat": ^4.0.5 - "@jupyterlab/notebook": ^4.0.5 - "@jupyterlab/services": ^7.0.5 - "@jupyterlab/settingregistry": ^4.0.5 + "@jupyterlab/application": ^4.0.6 + "@jupyterlab/apputils": ^4.1.6 + "@jupyterlab/coreutils": ^6.0.6 + "@jupyterlab/debugger": ^4.0.6 + "@jupyterlab/docmanager": ^4.0.6 + "@jupyterlab/nbformat": ^4.0.6 + "@jupyterlab/notebook": ^4.0.6 + "@jupyterlab/services": ^7.0.6 + "@jupyterlab/settingregistry": ^4.0.6 "@lumino/coreutils": ^2.1.2 "@playwright/test": ^1.32.2 "@stdlib/stats": ~0.0.13 @@ -2738,28 +2486,7 @@ __metadata: vega: ^5.20.0 vega-lite: ^5.6.1 vega-statistics: ^1.7.9 - checksum: 1e3562d2e81be6e4dac9451be0f97c519ffec7869bebaa6b2ed164686c13cac28bfaca3ba3191964eb7a0f25029be86d5310e038247cc2a39ab186505e728901 - languageName: node - linkType: hard - -"@jupyterlab/lsp@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/lsp@npm:4.0.5" - dependencies: - "@jupyterlab/apputils": ^4.1.5 - "@jupyterlab/codeeditor": ^4.0.5 - "@jupyterlab/coreutils": ^6.0.5 - "@jupyterlab/docregistry": ^4.0.5 - "@jupyterlab/services": ^7.0.5 - "@jupyterlab/translation": ^4.0.5 - "@lumino/coreutils": ^2.1.2 - "@lumino/disposable": ^2.1.2 - "@lumino/signaling": ^2.1.2 - lodash.mergewith: ^4.6.1 - vscode-jsonrpc: ^6.0.0 - vscode-languageserver-protocol: ^3.17.0 - vscode-ws-jsonrpc: ~1.0.2 - checksum: b59d21c9df84963c354422134e525acabab7f7fe2930e4bb5b5b81edd3e8397772ce5c395bc1faa7c79cddb6bfefc9e1c41edfd939241681da483ae3238be00d + checksum: a854c580923335595e091a52fbf9e575eeaa3b08fe4a3a1bdaa5ef044b18058e51a50983205068d63d51943fbf3d63f47853bfba31935dc265e3ecf7432b210f languageName: node linkType: hard @@ -2784,16 +2511,7 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/nbformat@npm:^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0, @jupyterlab/nbformat@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/nbformat@npm:4.0.5" - dependencies: - "@lumino/coreutils": ^2.1.2 - checksum: 51611e95e6b16dc3e952b731e0ef036d1e0f7eec497555e3bf8394f181da4184dc37c6b25a1b11b5ea031f22fd4b9602fb6a2e675d65fddc2ccb099236cf3e01 - languageName: node - linkType: hard - -"@jupyterlab/nbformat@npm:^4.0.6": +"@jupyterlab/nbformat@npm:^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0, @jupyterlab/nbformat@npm:^4.0.6": version: 4.0.6 resolution: "@jupyterlab/nbformat@npm:4.0.6" dependencies: @@ -2802,42 +2520,6 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/notebook@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/notebook@npm:4.0.5" - dependencies: - "@jupyter/ydoc": ^1.0.2 - "@jupyterlab/apputils": ^4.1.5 - "@jupyterlab/cells": ^4.0.5 - "@jupyterlab/codeeditor": ^4.0.5 - "@jupyterlab/codemirror": ^4.0.5 - "@jupyterlab/coreutils": ^6.0.5 - "@jupyterlab/docregistry": ^4.0.5 - "@jupyterlab/documentsearch": ^4.0.5 - "@jupyterlab/lsp": ^4.0.5 - "@jupyterlab/nbformat": ^4.0.5 - "@jupyterlab/observables": ^5.0.5 - "@jupyterlab/rendermime": ^4.0.5 - "@jupyterlab/services": ^7.0.5 - "@jupyterlab/settingregistry": ^4.0.5 - "@jupyterlab/statusbar": ^4.0.5 - "@jupyterlab/toc": ^6.0.5 - "@jupyterlab/translation": ^4.0.5 - "@jupyterlab/ui-components": ^4.0.5 - "@lumino/algorithm": ^2.0.1 - "@lumino/coreutils": ^2.1.2 - "@lumino/domutils": ^2.0.1 - "@lumino/dragdrop": ^2.1.3 - "@lumino/messaging": ^2.0.1 - "@lumino/properties": ^2.0.1 - "@lumino/signaling": ^2.1.2 - "@lumino/virtualdom": ^2.0.1 - "@lumino/widgets": ^2.3.0 - react: ^18.2.0 - checksum: c6979a1b3cc1a6e4eb82176d97bc2109f8f3bcf6b281853a6fb8d350e66fa443dcd34981d46b0aebb03356e6533956dd4ad233e6dee9198acbd62b9c6f027bcd - languageName: node - linkType: hard - "@jupyterlab/notebook@npm:^4.0.6": version: 4.0.6 resolution: "@jupyterlab/notebook@npm:4.0.6" @@ -2874,19 +2556,6 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/observables@npm:^5.0.5": - version: 5.0.5 - resolution: "@jupyterlab/observables@npm:5.0.5" - dependencies: - "@lumino/algorithm": ^2.0.1 - "@lumino/coreutils": ^2.1.2 - "@lumino/disposable": ^2.1.2 - "@lumino/messaging": ^2.0.1 - "@lumino/signaling": ^2.1.2 - checksum: e94d5a187a356f19db176d16a93e2b380c245a8bcf54eb283b405fc9a39cc937b790a0684defadd0eb103359838751d0184c23c5816c5fc36b86c90e2cbb96b9 - languageName: node - linkType: hard - "@jupyterlab/observables@npm:^5.0.6": version: 5.0.6 resolution: "@jupyterlab/observables@npm:5.0.6" @@ -2900,28 +2569,6 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/outputarea@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/outputarea@npm:4.0.5" - dependencies: - "@jupyterlab/apputils": ^4.1.5 - "@jupyterlab/nbformat": ^4.0.5 - "@jupyterlab/observables": ^5.0.5 - "@jupyterlab/rendermime": ^4.0.5 - "@jupyterlab/rendermime-interfaces": ^3.8.5 - "@jupyterlab/services": ^7.0.5 - "@jupyterlab/translation": ^4.0.5 - "@lumino/algorithm": ^2.0.1 - "@lumino/coreutils": ^2.1.2 - "@lumino/disposable": ^2.1.2 - "@lumino/messaging": ^2.0.1 - "@lumino/properties": ^2.0.1 - "@lumino/signaling": ^2.1.2 - "@lumino/widgets": ^2.3.0 - checksum: fc7f49b09ad8104fd0ac022366877eee228beb63f237afa76e785e170cb17e9ae18a686e7ac09f5f74bf25735ebc089812ea9374cc7920f4a0a641b9d565a046 - languageName: node - linkType: hard - "@jupyterlab/outputarea@npm:^4.0.6": version: 4.0.6 resolution: "@jupyterlab/outputarea@npm:4.0.6" @@ -2944,16 +2591,6 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/rendermime-interfaces@npm:^3.8.5": - version: 3.8.5 - resolution: "@jupyterlab/rendermime-interfaces@npm:3.8.5" - dependencies: - "@lumino/coreutils": ^1.11.0 || ^2.1.2 - "@lumino/widgets": ^1.37.2 || ^2.3.0 - checksum: 3824c1aa0fa4b946211fd342ff73b0ebc7722dfeaf9794a8c64740dcc53151c0e6b81468f92d83fbe9a6da75d54fe4b176bd3ec98e1a526b50bbc0f91057c1aa - languageName: node - linkType: hard - "@jupyterlab/rendermime-interfaces@npm:^3.8.6": version: 3.8.6 resolution: "@jupyterlab/rendermime-interfaces@npm:3.8.6" @@ -2964,26 +2601,6 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/rendermime@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/rendermime@npm:4.0.5" - dependencies: - "@jupyterlab/apputils": ^4.1.5 - "@jupyterlab/coreutils": ^6.0.5 - "@jupyterlab/nbformat": ^4.0.5 - "@jupyterlab/observables": ^5.0.5 - "@jupyterlab/rendermime-interfaces": ^3.8.5 - "@jupyterlab/services": ^7.0.5 - "@jupyterlab/translation": ^4.0.5 - "@lumino/coreutils": ^2.1.2 - "@lumino/messaging": ^2.0.1 - "@lumino/signaling": ^2.1.2 - "@lumino/widgets": ^2.3.0 - lodash.escape: ^4.0.1 - checksum: 472e25ebdee77599a90fef33402ef7c8f05d3c5266c9617805602b4e26022962e8973d55ab0b11bc24982c3aea1dc7d0b151064c822c2d1093111c17e87d1e80 - languageName: node - linkType: hard - "@jupyterlab/rendermime@npm:^4.0.6": version: 4.0.6 resolution: "@jupyterlab/rendermime@npm:4.0.6" @@ -3004,26 +2621,7 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/services@npm:^7.0.0, @jupyterlab/services@npm:^7.0.5": - version: 7.0.5 - resolution: "@jupyterlab/services@npm:7.0.5" - dependencies: - "@jupyter/ydoc": ^1.0.2 - "@jupyterlab/coreutils": ^6.0.5 - "@jupyterlab/nbformat": ^4.0.5 - "@jupyterlab/settingregistry": ^4.0.5 - "@jupyterlab/statedb": ^4.0.5 - "@lumino/coreutils": ^2.1.2 - "@lumino/disposable": ^2.1.2 - "@lumino/polling": ^2.1.2 - "@lumino/properties": ^2.0.1 - "@lumino/signaling": ^2.1.2 - ws: ^8.11.0 - checksum: cf4176dbb73c08e777b5e6ca26cba6ad7a142fc76ae6b46ef17ac7d8c8021f62d66e95e2ee0dbce5c33a0b2380750d440783d0398d787b8e8028920e04dd1d0b - languageName: node - linkType: hard - -"@jupyterlab/services@npm:^7.0.6": +"@jupyterlab/services@npm:^7.0.0, @jupyterlab/services@npm:^7.0.6": version: 7.0.6 resolution: "@jupyterlab/services@npm:7.0.6" dependencies: @@ -3042,25 +2640,6 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/settingregistry@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/settingregistry@npm:4.0.5" - dependencies: - "@jupyterlab/nbformat": ^4.0.5 - "@jupyterlab/statedb": ^4.0.5 - "@lumino/commands": ^2.1.3 - "@lumino/coreutils": ^2.1.2 - "@lumino/disposable": ^2.1.2 - "@lumino/signaling": ^2.1.2 - "@rjsf/utils": ^5.1.0 - ajv: ^8.12.0 - json5: ^2.2.3 - peerDependencies: - react: ">=16" - checksum: b7d686e0f9629f25f423fbd114e598f5af2ae1cc7b683f3e236ff8c94f6d05b20e13ee4555e0eba6277b58fbcdf3c75dbcd66d4e79884b49bed649372d871540 - languageName: node - linkType: hard - "@jupyterlab/settingregistry@npm:^4.0.6": version: 4.0.6 resolution: "@jupyterlab/settingregistry@npm:4.0.6" @@ -3080,19 +2659,6 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/statedb@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/statedb@npm:4.0.5" - dependencies: - "@lumino/commands": ^2.1.3 - "@lumino/coreutils": ^2.1.2 - "@lumino/disposable": ^2.1.2 - "@lumino/properties": ^2.0.1 - "@lumino/signaling": ^2.1.2 - checksum: 8e01de74a2168d19124773fa2b72329cfb43601c702127845a4172e87ee67b1304d34f53f65a6db214d832bd8c244c333936a22e08bbf1ea02e458e245140f62 - languageName: node - linkType: hard - "@jupyterlab/statedb@npm:^4.0.6": version: 4.0.6 resolution: "@jupyterlab/statedb@npm:4.0.6" @@ -3106,22 +2672,6 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/statusbar@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/statusbar@npm:4.0.5" - dependencies: - "@jupyterlab/ui-components": ^4.0.5 - "@lumino/algorithm": ^2.0.1 - "@lumino/coreutils": ^2.1.2 - "@lumino/disposable": ^2.1.2 - "@lumino/messaging": ^2.0.1 - "@lumino/signaling": ^2.1.2 - "@lumino/widgets": ^2.3.0 - react: ^18.2.0 - checksum: eac3bc5cc191885fe0fb35466a015ecd8df103a38bc8fac0e2a2c0c7bc783d47e43a31679f83777c0a059091988d9dd2e191624c774fd32cb80c05f2d1166163 - languageName: node - linkType: hard - "@jupyterlab/statusbar@npm:^4.0.6": version: 4.0.6 resolution: "@jupyterlab/statusbar@npm:4.0.6" @@ -3138,13 +2688,13 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/testing@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/testing@npm:4.0.5" +"@jupyterlab/testing@npm:^4.0.6": + version: 4.0.6 + resolution: "@jupyterlab/testing@npm:4.0.6" dependencies: "@babel/core": ^7.10.2 "@babel/preset-env": ^7.10.2 - "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/coreutils": ^6.0.6 "@lumino/coreutils": ^2.1.2 "@lumino/signaling": ^2.1.2 child_process: ~1.0.2 @@ -3159,41 +2709,20 @@ __metadata: ts-jest: ^29.1.0 peerDependencies: typescript: ">=4.3" - checksum: 5f242263f879bb075db6ff5125dbdb495589703ae2e287c171b7680954db16eb6fd3ab66d09d77ca27686a1d1ec3a0736c78f86808dd222949c834ebd13910fb + checksum: b6e7326d90ca2a7d36a825ea32557f2ce4436dc4c8965f3603fa430aad138b703f0e206c432509c48c72294a959ab47881a81c8c88b1e378b53fe9108861791e languageName: node linkType: hard "@jupyterlab/testutils@npm:^4.0.0": - version: 4.0.5 - resolution: "@jupyterlab/testutils@npm:4.0.5" - dependencies: - "@jupyterlab/application": ^4.0.5 - "@jupyterlab/apputils": ^4.1.5 - "@jupyterlab/notebook": ^4.0.5 - "@jupyterlab/rendermime": ^4.0.5 - "@jupyterlab/testing": ^4.0.5 - checksum: 8313c5b83ff0c338d50f94a4fdbf454eb2795ce5a7f8cdd6110ec6b3b946b2499b6dad6529379ea0cb94808ac1f33538730f3e84486588005ead3ada1e96a157 - languageName: node - linkType: hard - -"@jupyterlab/toc@npm:^6.0.5": - version: 6.0.5 - resolution: "@jupyterlab/toc@npm:6.0.5" + version: 4.0.6 + resolution: "@jupyterlab/testutils@npm:4.0.6" dependencies: - "@jupyterlab/apputils": ^4.1.5 - "@jupyterlab/coreutils": ^6.0.5 - "@jupyterlab/docregistry": ^4.0.5 - "@jupyterlab/observables": ^5.0.5 - "@jupyterlab/rendermime": ^4.0.5 - "@jupyterlab/translation": ^4.0.5 - "@jupyterlab/ui-components": ^4.0.5 - "@lumino/coreutils": ^2.1.2 - "@lumino/disposable": ^2.1.2 - "@lumino/messaging": ^2.0.1 - "@lumino/signaling": ^2.1.2 - "@lumino/widgets": ^2.3.0 - react: ^18.2.0 - checksum: 4b688fdd2aa0d14db02394bafcbae5e0ce632681e8541ff3ca6153ba0e219dc20cb99f03ef4ac25f849b4b7b23f3e168e50a450bf952f42b0418e2e42aaeb546 + "@jupyterlab/application": ^4.0.6 + "@jupyterlab/apputils": ^4.1.6 + "@jupyterlab/notebook": ^4.0.6 + "@jupyterlab/rendermime": ^4.0.6 + "@jupyterlab/testing": ^4.0.6 + checksum: 7a431810691dac69e48e2900af09cd9fec3be958a7e3302baf5bbe4c8b4d2b5f4fbef1987e719675637c53536f65800215e56e2874bc8eafdbb3b4bc2b1141e0 languageName: node linkType: hard @@ -3218,19 +2747,6 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/translation@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/translation@npm:4.0.5" - dependencies: - "@jupyterlab/coreutils": ^6.0.5 - "@jupyterlab/rendermime-interfaces": ^3.8.5 - "@jupyterlab/services": ^7.0.5 - "@jupyterlab/statedb": ^4.0.5 - "@lumino/coreutils": ^2.1.2 - checksum: ba879b7ed27f9398f409333624f679ad4c6d02f668a832eb7ee0cc27998e17d12938192dc32cdf74eff9c1b76116215543b1218093c32717d465568794b49660 - languageName: node - linkType: hard - "@jupyterlab/translation@npm:^4.0.6": version: 4.0.6 resolution: "@jupyterlab/translation@npm:4.0.6" @@ -3244,35 +2760,6 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/ui-components@npm:^4.0.5": - version: 4.0.5 - resolution: "@jupyterlab/ui-components@npm:4.0.5" - dependencies: - "@jupyterlab/coreutils": ^6.0.5 - "@jupyterlab/observables": ^5.0.5 - "@jupyterlab/rendermime-interfaces": ^3.8.5 - "@jupyterlab/translation": ^4.0.5 - "@lumino/algorithm": ^2.0.1 - "@lumino/commands": ^2.1.3 - "@lumino/coreutils": ^2.1.2 - "@lumino/disposable": ^2.1.2 - "@lumino/messaging": ^2.0.1 - "@lumino/polling": ^2.1.2 - "@lumino/properties": ^2.0.1 - "@lumino/signaling": ^2.1.2 - "@lumino/virtualdom": ^2.0.1 - "@lumino/widgets": ^2.3.0 - "@rjsf/core": ^5.1.0 - "@rjsf/utils": ^5.1.0 - react: ^18.2.0 - react-dom: ^18.2.0 - typestyle: ^2.0.4 - peerDependencies: - react: ^18.2.0 - checksum: 4dfae7b37d7e7b58b83bdc75d260126fcdabfb9fd52cc3f04e3bf3c481c8f05c3b3323953389408f793ec7ec6580fd582667a83ab906a308361f0f20f766ad7a - languageName: node - linkType: hard - "@jupyterlab/ui-components@npm:^4.0.6": version: 4.0.6 resolution: "@jupyterlab/ui-components@npm:4.0.6" @@ -3302,10 +2789,10 @@ __metadata: languageName: node linkType: hard -"@lezer/common@npm:^1.0.0, @lezer/common@npm:^1.0.2": - version: 1.0.4 - resolution: "@lezer/common@npm:1.0.4" - checksum: 0bea82da76e0b89afad4e5159d3add460022916352c47906ec67b26d6fe5ec9cb8e23df0e2bf0adef765ae78bed1706fc573a11506d01a80112a5b6dd317730c +"@lezer/common@npm:^1.0.0, @lezer/common@npm:^1.0.2, @lezer/common@npm:^1.1.0": + version: 1.1.0 + resolution: "@lezer/common@npm:1.1.0" + checksum: 93c208a44d1c0bdf7407853ba7c4ddcedf1c52d1b82170813d83b9bd6301aa23587405ac54332fe39ce8bc37f706936ab237ceb4d3d535d1dead650153b6474c languageName: node linkType: hard @@ -3330,14 +2817,14 @@ __metadata: linkType: hard "@lezer/generator@npm:^1.2.2": - version: 1.5.0 - resolution: "@lezer/generator@npm:1.5.0" + version: 1.5.1 + resolution: "@lezer/generator@npm:1.5.1" dependencies: "@lezer/common": ^1.0.2 "@lezer/lr": ^1.3.0 bin: lezer-generator: src/lezer-generator.cjs - checksum: ef585cced8468df7005020011e60faa6372a7fd43cf6f221c7b03a7537231c19c72846922a076383f21e6756a9030eba1e28eee374e40a9801ad77c093b8b20a + checksum: 4d8267e6d356e48ca5214a234679b2b3b1d3706cb9dffecee4495b7a16c8a02502d6a078f8afdf5d8c79f94af34f2c1b5c08556aead8376d7b23795612b651d0 languageName: node linkType: hard @@ -3392,11 +2879,11 @@ __metadata: linkType: hard "@lezer/lr@npm:^1.0.0, @lezer/lr@npm:^1.1.0, @lezer/lr@npm:^1.3.0": - version: 1.3.10 - resolution: "@lezer/lr@npm:1.3.10" + version: 1.3.12 + resolution: "@lezer/lr@npm:1.3.12" dependencies: "@lezer/common": ^1.0.0 - checksum: 9d3c22bf692561cf7fe2f3d14e821913f87116ff9d73b8b550e7998b6135baae9f504563846a4257e1bb4eae97ae1b60c06c6066450ddeef5e03e8783526b2ae + checksum: fe875dc23e2bccc8d3dbe4aa94e9f18d1229c19ef0ece22651f3eaacfff94820dcf078a7120254d118ca2c101e1264133b188254aa09f90e639df097cdd7bd2d languageName: node linkType: hard @@ -3673,18 +3160,13 @@ __metadata: linkType: hard "@playwright/test@npm:^1.32.2, @playwright/test@npm:^1.37.0": - version: 1.37.1 - resolution: "@playwright/test@npm:1.37.1" + version: 1.38.1 + resolution: "@playwright/test@npm:1.38.1" dependencies: - "@types/node": "*" - fsevents: 2.3.2 - playwright-core: 1.37.1 - dependenciesMeta: - fsevents: - optional: true + playwright: 1.38.1 bin: playwright: cli.js - checksum: b7038f29000289103c08b215eff7aabdda70cdc1375fa7dad0e81651be71086a1e2fc0e0e29dc70348037c366cf0cc69f762373fda34ba1a74aa1658741d9195 + checksum: c5ec0b23261fe1ef163b6234f69263bc10e7e5a3fb676c7773ffc70b87459a7ab225f57c03b9de649475771638a04c2e00d9b2739304a4dcf5d3edf20a7a4a82 languageName: node linkType: hard @@ -4156,77 +3638,70 @@ __metadata: linkType: hard "@types/babel__core@npm:^7.1.14": - version: 7.20.1 - resolution: "@types/babel__core@npm:7.20.1" + version: 7.20.2 + resolution: "@types/babel__core@npm:7.20.2" dependencies: "@babel/parser": ^7.20.7 "@babel/types": ^7.20.7 "@types/babel__generator": "*" "@types/babel__template": "*" "@types/babel__traverse": "*" - checksum: 9fcd9691a33074802d9057ff70b0e3ff3778f52470475b68698a0f6714fbe2ccb36c16b43dc924eb978cd8a81c1f845e5ff4699e7a47606043b539eb8c6331a8 + checksum: 564fbaa8ff1305d50807ada0ec227c3e7528bebb2f8fe6b2ed88db0735a31511a74ad18729679c43eeed8025ed29d408f53059289719e95ab1352ed559a100bd languageName: node linkType: hard "@types/babel__generator@npm:*": - version: 7.6.4 - resolution: "@types/babel__generator@npm:7.6.4" + version: 7.6.5 + resolution: "@types/babel__generator@npm:7.6.5" dependencies: "@babel/types": ^7.0.0 - checksum: 20effbbb5f8a3a0211e95959d06ae70c097fb6191011b73b38fe86deebefad8e09ee014605e0fd3cdaedc73d158be555866810e9166e1f09e4cfd880b874dcb0 + checksum: c7459f5025c4c800eaf58f4db3b24e9d736331fe7df40961d9bc49f31b46e2a3be83dc9276e8688f10a5ed752ae153ad5f1bdd45e2245bac95273730b9115ec2 languageName: node linkType: hard "@types/babel__template@npm:*": - version: 7.4.1 - resolution: "@types/babel__template@npm:7.4.1" + version: 7.4.2 + resolution: "@types/babel__template@npm:7.4.2" dependencies: "@babel/parser": ^7.1.0 "@babel/types": ^7.0.0 - checksum: 649fe8b42c2876be1fd28c6ed9b276f78152d5904ec290b6c861d9ef324206e0a5c242e8305c421ac52ecf6358fa7e32ab7a692f55370484825c1df29b1596ee + checksum: 0fe977b45a3269336c77f3ae4641a6c48abf0fa35ab1a23fb571690786af02d6cec08255a43499b0b25c5633800f7ae882ace450cce905e3060fa9e6995047ae languageName: node linkType: hard "@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.20.1 - resolution: "@types/babel__traverse@npm:7.20.1" + version: 7.20.2 + resolution: "@types/babel__traverse@npm:7.20.2" dependencies: "@babel/types": ^7.20.7 - checksum: 58341e23c649c0eba134a1682d4f20d027fad290d92e5740faa1279978f6ed476fc467ae51ce17a877e2566d805aeac64eae541168994367761ec883a4150221 - languageName: node - linkType: hard - -"@types/clone@npm:~2.1.1": - version: 2.1.2 - resolution: "@types/clone@npm:2.1.2" - checksum: f5fc4a94110b6f33e3806127503bb4e20a1a3c1adfa414654ee8f3fced1aea7ffd0f05f38fbe9bebd56e2cc0665b73f5808b6e64e0d797a311d27d4ea894471d + checksum: 981340286479524436348d32373eaa3bf993c635cbf70307b4b69463eee83406a959ac4844f683911e0db8ab8d9f0025ab630dc7a8c170fee9ee74144c2a528f languageName: node linkType: hard "@types/eslint-scope@npm:^3.7.3": - version: 3.7.4 - resolution: "@types/eslint-scope@npm:3.7.4" + version: 3.7.5 + resolution: "@types/eslint-scope@npm:3.7.5" dependencies: "@types/eslint": "*" "@types/estree": "*" - checksum: ea6a9363e92f301cd3888194469f9ec9d0021fe0a397a97a6dd689e7545c75de0bd2153dfb13d3ab532853a278b6572c6f678ce846980669e41029d205653460 + checksum: e91ce335c3791c2cf6084caa0073f90d5b7ae3fcf27785ade8422b7d896159fa14a5a3f1efd31ef03e9ebc1ff04983288280dfe8c9a5579a958539f59df8cc9f languageName: node linkType: hard "@types/eslint@npm:*": - version: 8.44.2 - resolution: "@types/eslint@npm:8.44.2" + version: 8.44.3 + resolution: "@types/eslint@npm:8.44.3" dependencies: "@types/estree": "*" "@types/json-schema": "*" - checksum: 25b3ef61bae96350026593c9914c8a61ee02fde48ab8d568a73ee45032f13c0028c62e47a5ff78715af488dfe8e8bba913f7d30f859f60c7f9e639d328e80482 + checksum: 3a0d152785400cb83a887a646d9c8877468e686b6fb439635c64856b70dbe91019e588d2b32bc923cd60642bf5dca7f70b2cf61eb431cf25fbdf2932f6e13dd3 languageName: node linkType: hard "@types/estree@npm:*, @types/estree@npm:^1.0.0": - version: 1.0.1 - resolution: "@types/estree@npm:1.0.1" - checksum: e9aa175eacb797216fafce4d41e8202c7a75555bc55232dee0f9903d7171f8f19f0ae7d5191bb1a88cb90e65468be508c0df850a9fb81b4433b293a5a749899d + version: 1.0.2 + resolution: "@types/estree@npm:1.0.2" + checksum: aeedb1b2fe20cbe06f44b99b562bf9703e360bfcdf5bb3d61d248182ee1dd63500f2474e12f098ffe1f5ac3202b43b3e18ec99902d9328d5374f5512fa077e45 languageName: node linkType: hard @@ -4238,11 +3713,11 @@ __metadata: linkType: hard "@types/graceful-fs@npm:^4.1.3": - version: 4.1.6 - resolution: "@types/graceful-fs@npm:4.1.6" + version: 4.1.7 + resolution: "@types/graceful-fs@npm:4.1.7" dependencies: "@types/node": "*" - checksum: c3070ccdc9ca0f40df747bced1c96c71a61992d6f7c767e8fd24bb6a3c2de26e8b84135ede000b7e79db530a23e7e88dcd9db60eee6395d0f4ce1dae91369dd4 + checksum: 8b97e208f85c9efd02a6003a582c77646dd87be0af13aec9419a720771560a8a87a979eaca73ae193d7c73127f34d0a958403a9b5d6246e450289fd8c79adf09 languageName: node linkType: hard @@ -4254,30 +3729,30 @@ __metadata: linkType: hard "@types/istanbul-lib-report@npm:*": - version: 3.0.0 - resolution: "@types/istanbul-lib-report@npm:3.0.0" + version: 3.0.1 + resolution: "@types/istanbul-lib-report@npm:3.0.1" dependencies: "@types/istanbul-lib-coverage": "*" - checksum: 656398b62dc288e1b5226f8880af98087233cdb90100655c989a09f3052b5775bf98ba58a16c5ae642fb66c61aba402e07a9f2bff1d1569e3b306026c59f3f36 + checksum: cfc66de48577bb7b2636a6afded7056483693c3ea70916276518cdfaa0d4b51bf564ded88fb13e75716665c3af3d4d54e9c2de042c0219dcabad7e81c398688b languageName: node linkType: hard "@types/istanbul-reports@npm:^3.0.0": - version: 3.0.1 - resolution: "@types/istanbul-reports@npm:3.0.1" + version: 3.0.2 + resolution: "@types/istanbul-reports@npm:3.0.2" dependencies: "@types/istanbul-lib-report": "*" - checksum: f1ad54bc68f37f60b30c7915886b92f86b847033e597f9b34f2415acdbe5ed742fa559a0a40050d74cdba3b6a63c342cac1f3a64dba5b68b66a6941f4abd7903 + checksum: f52028d6fe4d28f0085dd7ed66ccfa6af632579e9a4091b90928ffef93d4dbec0bacd49e9caf1b939d05df9eafc5ac1f5939413cdf8ac59fbe4b29602d4d0939 languageName: node linkType: hard "@types/jest@npm:^29.2.0": - version: 29.5.4 - resolution: "@types/jest@npm:29.5.4" + version: 29.5.5 + resolution: "@types/jest@npm:29.5.5" dependencies: expect: ^29.0.0 pretty-format: ^29.0.0 - checksum: 38ed5942f44336452efd0f071eab60aaa57cd8d46530348d0a3aa5a691dcbf1366c4ca8f6ee8364efb45b4413bfefae443e5d4f469246a472a03b21ac11cd4ed + checksum: 56e55cde9949bcc0ee2fa34ce5b7c32c2bfb20e53424aa4ff3a210859eeaaa3fdf6f42f81a3f655238039cdaaaf108b054b7a8602f394e6c52b903659338d8c6 languageName: node linkType: hard @@ -4293,9 +3768,9 @@ __metadata: linkType: hard "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.11, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": - version: 7.0.12 - resolution: "@types/json-schema@npm:7.0.12" - checksum: 00239e97234eeb5ceefb0c1875d98ade6e922bfec39dd365ec6bd360b5c2f825e612ac4f6e5f1d13601b8b30f378f15e6faa805a3a732f4a1bbe61915163d293 + version: 7.0.13 + resolution: "@types/json-schema@npm:7.0.13" + checksum: 345df21a678fa72fb389f35f33de77833d09d4a142bb2bcb27c18690efa4cf70fc2876e43843cefb3fbdb9fcb12cd3e970a90936df30f53bbee899865ff605ab languageName: node linkType: hard @@ -4307,23 +3782,23 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 20.6.0 - resolution: "@types/node@npm:20.6.0" - checksum: 52611801af5cf151c6fac1963aa4a8a8ca2e388a9e9ed82b01b70bca762088ded5b32cc789c5564220d5d7dccba2b8dd34446a3d4fc74736805e1f2cf262e29d + version: 20.7.0 + resolution: "@types/node@npm:20.7.0" + checksum: 1b2919925c213f4d2039ada7a8354c998e144f7291db8d719ef58ea9924ab636c113690073b0ec3b82ba62907385f7e0f51e9d1583c1a818776daa5156d3a590 languageName: node linkType: hard "@types/normalize-package-data@npm:^2.4.0": - version: 2.4.1 - resolution: "@types/normalize-package-data@npm:2.4.1" - checksum: e87bccbf11f95035c89a132b52b79ce69a1e3652fe55962363063c9c0dae0fe2477ebc585e03a9652adc6f381d24ba5589cc5e51849df4ced3d3e004a7d40ed5 + version: 2.4.2 + resolution: "@types/normalize-package-data@npm:2.4.2" + checksum: 2132e4054711e6118de967ae3a34f8c564e58d71fbcab678ec2c34c14659f638a86c35a0fd45237ea35a4a03079cf0a485e3f97736ffba5ed647bfb5da086b03 languageName: node linkType: hard "@types/prop-types@npm:*": - version: 15.7.5 - resolution: "@types/prop-types@npm:15.7.5" - checksum: 5b43b8b15415e1f298243165f1d44390403bb2bd42e662bca3b5b5633fdd39c938e91b7fce3a9483699db0f7a715d08cef220c121f723a634972fdf596aec980 + version: 15.7.7 + resolution: "@types/prop-types@npm:15.7.7" + checksum: 023b95f7dd82e1c594f51dcb93ec4c382600cef6eeee29a2ac7b782b92c0882eab8da16d4cbd6e18b39e85ac8d94ebf4ca02c6e248ce5b5fb4b16dbab5d82861 languageName: node linkType: hard @@ -4337,34 +3812,34 @@ __metadata: linkType: hard "@types/react@npm:*, @types/react@npm:^18.0.26": - version: 18.2.21 - resolution: "@types/react@npm:18.2.21" + version: 18.2.23 + resolution: "@types/react@npm:18.2.23" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: ffed203bfe7aad772b8286f7953305c9181ac3a8f27d3f5400fbbc2a8e27ca8e5bbff818ee014f39ca0d19d2b3bb154e5bdbec7e232c6f80b59069375aa78349 + checksum: efb9d1ed1940c0e7ba08a21ffba5e266d8dbbb8fe618cfb97bc902dfc96385fdd8189e3f7f64b4aa13134f8e61947d60560deb23be151253c3a97b0d070897ca languageName: node linkType: hard "@types/scheduler@npm:*": - version: 0.16.3 - resolution: "@types/scheduler@npm:0.16.3" - checksum: 2b0aec39c24268e3ce938c5db2f2e77f5c3dd280e05c262d9c2fe7d890929e4632a6b8e94334017b66b45e4f92a5aa42ba3356640c2a1175fa37bef2f5200767 + version: 0.16.4 + resolution: "@types/scheduler@npm:0.16.4" + checksum: a57b0f10da1b021e6bd5eeef8a1917dd3b08a8715bd8029e2ded2096d8f091bb1bb1fef2d66e139588a983c4bfbad29b59e48011141725fa83c76e986e1257d7 languageName: node linkType: hard "@types/semver@npm:^7.5.0": - version: 7.5.1 - resolution: "@types/semver@npm:7.5.1" - checksum: 2fffe938c7ac168711f245a16e1856a3578d77161ca17e29a05c3e02c7be3e9c5beefa29a3350f6c1bd982fb70aa28cc52e4845eb7d36246bcdc0377170d584d + version: 7.5.3 + resolution: "@types/semver@npm:7.5.3" + checksum: 349fdd1ab6c213bac5c991bac766bd07b8b12e63762462bb058740dcd2eb09c8193d068bb226f134661275f2022976214c0e727a4e5eb83ec1b131127c980d3e languageName: node linkType: hard "@types/source-list-map@npm:*": - version: 0.1.2 - resolution: "@types/source-list-map@npm:0.1.2" - checksum: fda8f37537aca9d3ed860d559289ab1dddb6897e642e6f53e909bbd18a7ac3129a8faa2a7d093847c91346cf09c86ef36e350c715406fba1f2271759b449adf6 + version: 0.1.3 + resolution: "@types/source-list-map@npm:0.1.3" + checksum: a001098786d75b82eef00a6e4f1f7bb73f9f2fdf3e97333f8b741183c3fbf92db91af8bcfc410c7e6c23c4497523a3210f3eee2077b1be93595206f9baf3d909 languageName: node linkType: hard @@ -4383,41 +3858,41 @@ __metadata: linkType: hard "@types/webpack-sources@npm:^0.1.5": - version: 0.1.9 - resolution: "@types/webpack-sources@npm:0.1.9" + version: 0.1.10 + resolution: "@types/webpack-sources@npm:0.1.10" dependencies: "@types/node": "*" "@types/source-list-map": "*" source-map: ^0.6.1 - checksum: bc09c584c7047e8aed29801a3981787dee3898e9e7a99891a362df114fcac3879eea5a00932314866a01b25220391839be09fe1487b16d4970ff4a7afd5b9725 + checksum: 95817c13bc663b1b8b2c9b26d0f8ceadb3b583bb2549b554b660e900245a430dd2ed0b534f14b85153a0121450e01ebdbcefbade9305ed1e80b2190a50659aee languageName: node linkType: hard "@types/yargs-parser@npm:*": - version: 21.0.0 - resolution: "@types/yargs-parser@npm:21.0.0" - checksum: b2f4c8d12ac18a567440379909127cf2cec393daffb73f246d0a25df36ea983b93b7e9e824251f959e9f928cbc7c1aab6728d0a0ff15d6145f66cec2be67d9a2 + version: 21.0.1 + resolution: "@types/yargs-parser@npm:21.0.1" + checksum: 64e6316c2045e2d460c4fb79572f872f9d2f98fddc6d9d3949c71f0b6ad0ef8a2706cf49db26dfb02a9cb81433abb8f340f015e1d20a9692279abe9477b72c8e languageName: node linkType: hard "@types/yargs@npm:^17.0.8": - version: 17.0.24 - resolution: "@types/yargs@npm:17.0.24" + version: 17.0.25 + resolution: "@types/yargs@npm:17.0.25" dependencies: "@types/yargs-parser": "*" - checksum: 5f3ac4dc4f6e211c1627340160fbe2fd247ceba002190da6cf9155af1798450501d628c9165a183f30a224fc68fa5e700490d740ff4c73e2cdef95bc4e8ba7bf + checksum: ef57926de514f5eb0a182167a63930bd7d2eb33d89b6041760f690d50b2019d7901b30c33ab7d03b3fa66a5004f0f81e36186d8f9e5e583a27b9ce331d2a5276 languageName: node linkType: hard "@typescript-eslint/eslint-plugin@npm:^6.1.0": - version: 6.7.0 - resolution: "@typescript-eslint/eslint-plugin@npm:6.7.0" + version: 6.7.3 + resolution: "@typescript-eslint/eslint-plugin@npm:6.7.3" dependencies: "@eslint-community/regexpp": ^4.5.1 - "@typescript-eslint/scope-manager": 6.7.0 - "@typescript-eslint/type-utils": 6.7.0 - "@typescript-eslint/utils": 6.7.0 - "@typescript-eslint/visitor-keys": 6.7.0 + "@typescript-eslint/scope-manager": 6.7.3 + "@typescript-eslint/type-utils": 6.7.3 + "@typescript-eslint/utils": 6.7.3 + "@typescript-eslint/visitor-keys": 6.7.3 debug: ^4.3.4 graphemer: ^1.4.0 ignore: ^5.2.4 @@ -4430,44 +3905,44 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 48393749c5c1f67acf71795551c6065586198530006189c48636e32caea4d1285624c16c047164f9d29055e26c4f90fca964c5a2b5c0e9b6d9ed87acd74ca0d6 + checksum: ac2790882199047abc59c0407a862f3339645623d03ea0aae5a73fd4bac6abfb753afcf9f23fd51cd1d5aa73f132ef94e2850774c4b2a3d99ebb83030b09429c languageName: node linkType: hard "@typescript-eslint/parser@npm:^6.1.0": - version: 6.7.0 - resolution: "@typescript-eslint/parser@npm:6.7.0" + version: 6.7.3 + resolution: "@typescript-eslint/parser@npm:6.7.3" dependencies: - "@typescript-eslint/scope-manager": 6.7.0 - "@typescript-eslint/types": 6.7.0 - "@typescript-eslint/typescript-estree": 6.7.0 - "@typescript-eslint/visitor-keys": 6.7.0 + "@typescript-eslint/scope-manager": 6.7.3 + "@typescript-eslint/types": 6.7.3 + "@typescript-eslint/typescript-estree": 6.7.3 + "@typescript-eslint/visitor-keys": 6.7.3 debug: ^4.3.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 21d52a49abf78a3b037261c01f1f4d2d550919ddc906ebb058db3410a706457ac3a7d082716328ce98a6741d4e77c945b71ff386d9047c5a2e5beef23e14ab45 + checksum: 658f3294b281db06ebb46884b92172d45eb402ec25c7d4a09cc2461eee359266029af7a49eb9006ee7c3e0003ba53a06f4bee84aa2e99d2d9a3507b9c84ff775 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.7.0": - version: 6.7.0 - resolution: "@typescript-eslint/scope-manager@npm:6.7.0" +"@typescript-eslint/scope-manager@npm:6.7.3": + version: 6.7.3 + resolution: "@typescript-eslint/scope-manager@npm:6.7.3" dependencies: - "@typescript-eslint/types": 6.7.0 - "@typescript-eslint/visitor-keys": 6.7.0 - checksum: f6ea33c647783d53d98938bd5d3fc94c9a5ebc83bd64cf379215863921dd1c57e66c33af7948d6ac1884623e1917a3b42565e6d02e1fd7adfbce4b3424a2382e + "@typescript-eslint/types": 6.7.3 + "@typescript-eslint/visitor-keys": 6.7.3 + checksum: 08215444b7c70af5c45e185ba3c31c550a0a671ab464a67058cbee680c94aa9d1a062958976d8b09f7bcabf2f63114cdc7be2e4e32e2dfdcb2d7cc79961b7b32 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.7.0": - version: 6.7.0 - resolution: "@typescript-eslint/type-utils@npm:6.7.0" +"@typescript-eslint/type-utils@npm:6.7.3": + version: 6.7.3 + resolution: "@typescript-eslint/type-utils@npm:6.7.3" dependencies: - "@typescript-eslint/typescript-estree": 6.7.0 - "@typescript-eslint/utils": 6.7.0 + "@typescript-eslint/typescript-estree": 6.7.3 + "@typescript-eslint/utils": 6.7.3 debug: ^4.3.4 ts-api-utils: ^1.0.1 peerDependencies: @@ -4475,23 +3950,23 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 15ae33a6981721f83b2ac612a7597a4fcb2d9d9bfedce54707e5228bec2774fd99ba54ffce89924ae36b61488c7b6c0c2165a6d361be5cd4cefebefad8b02a01 + checksum: f30a5ab4f88f76457810d72e3ada79fefd94dbbb456069ac004bd7601c9b7f15689b906b66cd849c230f30ae65f6f7039fb169609177ab545b34bacab64f015e languageName: node linkType: hard -"@typescript-eslint/types@npm:6.7.0": - version: 6.7.0 - resolution: "@typescript-eslint/types@npm:6.7.0" - checksum: fb76031432a009813d559b1cc63091eb5434279012cdb98de62fcd556910663c6a1b506e0a77c4f86e223a5e2c00e76a2d1d2170802c75168008d19a52a51fca +"@typescript-eslint/types@npm:6.7.3": + version: 6.7.3 + resolution: "@typescript-eslint/types@npm:6.7.3" + checksum: 4adb6177ec710e7438610fee553839a7abecc498dbb36d0170786bab66c5e5415cd720ac06419fd905458ad88c39b661603af5f013adc299137ccb4c51c4c879 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.7.0": - version: 6.7.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.7.0" +"@typescript-eslint/typescript-estree@npm:6.7.3": + version: 6.7.3 + resolution: "@typescript-eslint/typescript-estree@npm:6.7.3" dependencies: - "@typescript-eslint/types": 6.7.0 - "@typescript-eslint/visitor-keys": 6.7.0 + "@typescript-eslint/types": 6.7.3 + "@typescript-eslint/visitor-keys": 6.7.3 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 @@ -4500,34 +3975,34 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 9bd57910085f0dd97d7083e0468c34e0753d20d36d3ffaa4ba111f13cc4986743374f5aed928e645ea982cf2ed9a8141598bee41393cad0abee001f0842ad117 + checksum: eaba1feb0e6882b0bad292172c118aac43ba683d1f04b940b542a20035468d030b062b036ea49eca36aa21782e9b1019e87717003b3c3db7d12dc707466b7eb7 languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.7.0": - version: 6.7.0 - resolution: "@typescript-eslint/utils@npm:6.7.0" +"@typescript-eslint/utils@npm:6.7.3": + version: 6.7.3 + resolution: "@typescript-eslint/utils@npm:6.7.3" dependencies: "@eslint-community/eslint-utils": ^4.4.0 "@types/json-schema": ^7.0.12 "@types/semver": ^7.5.0 - "@typescript-eslint/scope-manager": 6.7.0 - "@typescript-eslint/types": 6.7.0 - "@typescript-eslint/typescript-estree": 6.7.0 + "@typescript-eslint/scope-manager": 6.7.3 + "@typescript-eslint/types": 6.7.3 + "@typescript-eslint/typescript-estree": 6.7.3 semver: ^7.5.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 - checksum: b2a2857ec856d1752e77c2a274a12513372311c300f9ec57ed7bf7411eb9ea34b85a8e7810a5c48fff0e3966b71d63d77e38c5c7bca1d5c004bede5638619a00 + checksum: 685b7c9fa95ad085f30e26431dc41b3059a42a16925defe2a94b32fb46974bfc168000de7d4d9ad4a1d0568a983f9d3c01ea6bc6cfa9a798e482719af9e9165b languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.7.0": - version: 6.7.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.7.0" +"@typescript-eslint/visitor-keys@npm:6.7.3": + version: 6.7.3 + resolution: "@typescript-eslint/visitor-keys@npm:6.7.3" dependencies: - "@typescript-eslint/types": 6.7.0 + "@typescript-eslint/types": 6.7.3 eslint-visitor-keys: ^3.4.1 - checksum: cd85722d26ccfa23a76e5cb5aa0229f89eb3c4f1ed87d71a0f902db15f420f3f3e94cbd16dc711039f611ac60b1e7d0fee9ee78c48c88310a5f1926a2bc8778e + checksum: cef64173a919107f420703e204d97d0afef0d9bd7a67570df5bdb39ac9464211c5a7b3af735d8f41e8004b443ab83e88b1d6fb951886aed4d3fe9d4778667199 languageName: node linkType: hard @@ -4995,7 +4470,7 @@ __metadata: languageName: node linkType: hard -"arraybuffer.prototype.slice@npm:^1.0.1": +"arraybuffer.prototype.slice@npm:^1.0.2": version: 1.0.2 resolution: "arraybuffer.prototype.slice@npm:1.0.2" dependencies: @@ -5094,14 +4569,14 @@ __metadata: linkType: hard "babel-plugin-polyfill-corejs3@npm:^0.8.3": - version: 0.8.3 - resolution: "babel-plugin-polyfill-corejs3@npm:0.8.3" + version: 0.8.4 + resolution: "babel-plugin-polyfill-corejs3@npm:0.8.4" dependencies: "@babel/helper-define-polyfill-provider": ^0.4.2 - core-js-compat: ^3.31.0 + core-js-compat: ^3.32.2 peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: dcbb30e551702a82cfd4d2c375da2c317658e55f95e9edcda93b9bbfdcc8fb6e5344efcb144e04d3406859e7682afce7974c60ededd9f12072a48a83dd22a0da + checksum: 7243241a5b978b1335d51bcbd1248d6c4df88f6b3726706e71e0392f111c59bbf01118c85bb0ed42dce65e90e8fc768d19eda0a81a321cbe54abd3df9a285dc8 languageName: node linkType: hard @@ -5216,16 +4691,16 @@ __metadata: linkType: hard "browserslist@npm:^4.14.5, browserslist@npm:^4.21.10, browserslist@npm:^4.21.9": - version: 4.21.10 - resolution: "browserslist@npm:4.21.10" + version: 4.21.11 + resolution: "browserslist@npm:4.21.11" dependencies: - caniuse-lite: ^1.0.30001517 - electron-to-chromium: ^1.4.477 + caniuse-lite: ^1.0.30001538 + electron-to-chromium: ^1.4.526 node-releases: ^2.0.13 - update-browserslist-db: ^1.0.11 + update-browserslist-db: ^1.0.13 bin: browserslist: cli.js - checksum: 1e27c0f111a35d1dd0e8fc2c61781b0daefabc2c9471b0b10537ce54843014bceb2a1ce4571af1a82b2bf1e6e6e05d38865916689a158f03bc2c7a4ec2577db8 + checksum: 89377745428d32c7bbec37055bc4b9e48aa859418ea3886b13218d825f8ea3053640f90d8652844ae855941fec0bffd2d69cf933035d6f9224b427d48d31eddf languageName: node linkType: hard @@ -5326,10 +4801,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001517": - version: 1.0.30001533 - resolution: "caniuse-lite@npm:1.0.30001533" - checksum: 1ffb2d69f817ee5f13351cb01c26a98ac61515809a6ce355305df3fbc6de6391a58466c1dcad1f322231b1ddc59bdda9bc52b9480cac100c3ff2f5782e859eb1 +"caniuse-lite@npm:^1.0.30001538": + version: 1.0.30001539 + resolution: "caniuse-lite@npm:1.0.30001539" + checksum: 8595905d6c7234173a4915439fdd69fa2c06b0272d56af63aee0df6114e1ee4727758af160c0db9844055f778e0ea27ed4714facf2e472a2e74d9f567f111f41 languageName: node linkType: hard @@ -5425,13 +4900,6 @@ __metadata: languageName: node linkType: hard -"clone@npm:~2.1.2": - version: 2.1.2 - resolution: "clone@npm:2.1.2" - checksum: aaf106e9bc025b21333e2f4c12da539b568db4925c0501a1bf4070836c9e848c892fa22c35548ce0d1132b08bbbfa17a00144fe58fccdab6fa900fec4250f67d - languageName: node - linkType: hard - "co@npm:^4.6.0": version: 4.6.0 resolution: "co@npm:4.6.0" @@ -5626,7 +5094,7 @@ __metadata: languageName: node linkType: hard -"convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": +"convert-source-map@npm:^1.6.0": version: 1.9.0 resolution: "convert-source-map@npm:1.9.0" checksum: dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8 @@ -5640,7 +5108,7 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.31.0": +"core-js-compat@npm:^3.31.0, core-js-compat@npm:^3.32.2": version: 3.32.2 resolution: "core-js-compat@npm:3.32.2" dependencies: @@ -5657,8 +5125,8 @@ __metadata: linkType: hard "cosmiconfig@npm:^8.2.0": - version: 8.3.5 - resolution: "cosmiconfig@npm:8.3.5" + version: 8.3.6 + resolution: "cosmiconfig@npm:8.3.6" dependencies: import-fresh: ^3.3.0 js-yaml: ^4.1.0 @@ -5669,7 +5137,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: c6e44bb3cabf268b70049e7bd4ee8ecf00068854e53cbc32f9104794927ef406817f9e64e1c4949bd10776b604c01f7b50674336fcd2d5b9efc4cf8277fdf025 + checksum: dc339ebea427898c9e03bf01b56ba7afbac07fc7d2a2d5a15d6e9c14de98275a9565da949375aee1809591c152c0a3877bb86dbeaf74d5bd5aaa79955ad9e7a0 languageName: node linkType: hard @@ -6107,6 +5575,17 @@ __metadata: languageName: node linkType: hard +"define-data-property@npm:^1.0.1": + version: 1.1.0 + resolution: "define-data-property@npm:1.1.0" + dependencies: + get-intrinsic: ^1.2.1 + gopd: ^1.0.1 + has-property-descriptors: ^1.0.0 + checksum: 7ad4ee84cca8ad427a4831f5693526804b62ce9dfd4efac77214e95a4382aed930072251d4075dc8dc9fc949a353ed51f19f5285a84a788ba9216cc51472a093 + languageName: node + linkType: hard + "define-lazy-prop@npm:^3.0.0": version: 3.0.0 resolution: "define-lazy-prop@npm:3.0.0" @@ -6115,12 +5594,13 @@ __metadata: linkType: hard "define-properties@npm:^1.1.3, define-properties@npm:^1.1.4, define-properties@npm:^1.2.0": - version: 1.2.0 - resolution: "define-properties@npm:1.2.0" + version: 1.2.1 + resolution: "define-properties@npm:1.2.1" dependencies: + define-data-property: ^1.0.1 has-property-descriptors: ^1.0.0 object-keys: ^1.1.1 - checksum: e60aee6a19b102df4e2b1f301816804e81ab48bb91f00d0d935f269bf4b3f79c88b39e4f89eaa132890d23267335fd1140dfcd8d5ccd61031a0a2c41a54e33a6 + checksum: b4ccd00597dd46cb2d4a379398f5b19fca84a16f3374e2249201992f36b30f6835949a9429669ee6b41b6e837205a163eadd745e472069e70dfc10f03e5fcc12 languageName: node linkType: hard @@ -6245,10 +5725,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.477": - version: 1.4.516 - resolution: "electron-to-chromium@npm:1.4.516" - checksum: e95b1d1d19bcc14f9985a1e76ff06977272a67dd73ab48322cb2828af3d07f7b81c9f796f2ef5d6ccd9b708efba94d2ac5ad60b8c56f4898faf813d6aec1b41c +"electron-to-chromium@npm:^1.4.526": + version: 1.4.530 + resolution: "electron-to-chromium@npm:1.4.530" + checksum: 32488355442d2ba30e10b318fd97f63d0b73deef970b11f866c23d4fcb1b5c9ba846c7e3c020f1077d04db2f9ab90888893f770e3610ccce6e82e988fec51d48 languageName: node linkType: hard @@ -6346,16 +5826,16 @@ __metadata: linkType: hard "es-abstract@npm:^1.22.1": - version: 1.22.1 - resolution: "es-abstract@npm:1.22.1" + version: 1.22.2 + resolution: "es-abstract@npm:1.22.2" dependencies: array-buffer-byte-length: ^1.0.0 - arraybuffer.prototype.slice: ^1.0.1 + arraybuffer.prototype.slice: ^1.0.2 available-typed-arrays: ^1.0.5 call-bind: ^1.0.2 es-set-tostringtag: ^2.0.1 es-to-primitive: ^1.2.1 - function.prototype.name: ^1.1.5 + function.prototype.name: ^1.1.6 get-intrinsic: ^1.2.1 get-symbol-description: ^1.0.0 globalthis: ^1.0.3 @@ -6371,24 +5851,24 @@ __metadata: is-regex: ^1.1.4 is-shared-array-buffer: ^1.0.2 is-string: ^1.0.7 - is-typed-array: ^1.1.10 + is-typed-array: ^1.1.12 is-weakref: ^1.0.2 object-inspect: ^1.12.3 object-keys: ^1.1.1 object.assign: ^4.1.4 - regexp.prototype.flags: ^1.5.0 - safe-array-concat: ^1.0.0 + regexp.prototype.flags: ^1.5.1 + safe-array-concat: ^1.0.1 safe-regex-test: ^1.0.0 - string.prototype.trim: ^1.2.7 - string.prototype.trimend: ^1.0.6 - string.prototype.trimstart: ^1.0.6 + string.prototype.trim: ^1.2.8 + string.prototype.trimend: ^1.0.7 + string.prototype.trimstart: ^1.0.7 typed-array-buffer: ^1.0.0 typed-array-byte-length: ^1.0.0 typed-array-byte-offset: ^1.0.0 typed-array-length: ^1.0.4 unbox-primitive: ^1.0.2 - which-typed-array: ^1.1.10 - checksum: 614e2c1c3717cb8d30b6128ef12ea110e06fd7d75ad77091ca1c5dbfb00da130e62e4bbbbbdda190eada098a22b27fe0f99ae5a1171dac2c8663b1e8be8a3a9b + which-typed-array: ^1.1.11 + checksum: cc70e592d360d7d729859013dee7a610c6b27ed8630df0547c16b0d16d9fe6505a70ee14d1af08d970fdd132b3f88c9ca7815ce72c9011608abf8ab0e55fc515 languageName: node linkType: hard @@ -6525,13 +6005,13 @@ __metadata: linkType: hard "eslint@npm:^8.36.0": - version: 8.49.0 - resolution: "eslint@npm:8.49.0" + version: 8.50.0 + resolution: "eslint@npm:8.50.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 "@eslint-community/regexpp": ^4.6.1 "@eslint/eslintrc": ^2.1.2 - "@eslint/js": 8.49.0 + "@eslint/js": 8.50.0 "@humanwhocodes/config-array": ^0.11.11 "@humanwhocodes/module-importer": ^1.0.1 "@nodelib/fs.walk": ^1.2.8 @@ -6567,7 +6047,7 @@ __metadata: text-table: ^0.2.0 bin: eslint: bin/eslint.js - checksum: 4dfe257e1e42da2f9da872b05aaaf99b0f5aa022c1a91eee8f2af1ab72651b596366320c575ccd4e0469f7b4c97aff5bb85ae3323ebd6a293c3faef4028b0d81 + checksum: 9ebfe5615dc84700000d218e32ddfdcfc227ca600f65f18e5541ec34f8902a00356a9a8804d9468fd6c8637a5ef6a3897291dad91ba6579d5b32ffeae5e31768 languageName: node linkType: hard @@ -6699,7 +6179,7 @@ __metadata: languageName: node linkType: hard -"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3, fast-deep-equal@npm:~3.1.3": +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d @@ -6726,7 +6206,7 @@ __metadata: languageName: node linkType: hard -"fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0, fast-json-stable-stringify@npm:~2.1.0": +"fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb @@ -6822,9 +6302,9 @@ __metadata: linkType: hard "flatted@npm:^3.2.7": - version: 3.2.7 - resolution: "flatted@npm:3.2.7" - checksum: 427633049d55bdb80201c68f7eb1cbd533e03eac541f97d3aecab8c5526f12a20ccecaeede08b57503e772c769e7f8680b37e8d482d1e5f8d7e2194687f9ea35 + version: 3.2.9 + resolution: "flatted@npm:3.2.9" + checksum: f14167fbe26a9d20f6fca8d998e8f1f41df72c8e81f9f2c9d61ed2bea058248f5e1cbd05e7f88c0e5087a6a0b822a1e5e2b446e879f3cfbe0b07ba2d7f80b026 languageName: node linkType: hard @@ -6946,7 +6426,7 @@ __metadata: languageName: node linkType: hard -"function.prototype.name@npm:^1.1.5": +"function.prototype.name@npm:^1.1.6": version: 1.1.6 resolution: "function.prototype.name@npm:1.1.6" dependencies: @@ -7056,18 +6536,18 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.2.2, glob@npm:^10.2.5": - version: 10.3.4 - resolution: "glob@npm:10.3.4" +"glob@npm:^10.2.2, glob@npm:^10.3.7": + version: 10.3.9 + resolution: "glob@npm:10.3.9" dependencies: foreground-child: ^3.1.0 - jackspeak: ^2.0.3 + jackspeak: ^2.3.5 minimatch: ^9.0.1 minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 path-scurry: ^1.10.1 bin: - glob: dist/cjs/src/bin.js - checksum: 176b97c124414401cb51329a93d2ba112cef8814adbed10348481916b9521b677773eee2691cb6b24d66632d8c8bb8913533f5ac4bfb2d0ef5454a1856082361 + glob: dist/esm/bin.mjs + checksum: 806a4ef5710beb15577cb0e27a103b39805e009e45e9e63455c385a5db7c4fb793d7399740f21bd133ca58ae6e4e5d56493f0a36bf2985e91eab51d12532f040 languageName: node linkType: hard @@ -7127,11 +6607,11 @@ __metadata: linkType: hard "globals@npm:^13.19.0": - version: 13.21.0 - resolution: "globals@npm:13.21.0" + version: 13.22.0 + resolution: "globals@npm:13.22.0" dependencies: type-fest: ^0.20.2 - checksum: 86c92ca8a04efd864c10852cd9abb1ebe6d447dcc72936783e66eaba1087d7dba5c9c3421a48d6ca722c319378754dbcc3f3f732dbe47592d7de908edf58a773 + checksum: 64af5a09565341432770444085f7aa98b54331c3b69732e0de411003921fa2dd060222ae7b50bec0b98f29c4d00b4f49bf434049ba9f7c36ca4ee1773f60458c languageName: node linkType: hard @@ -7759,7 +7239,7 @@ __metadata: languageName: node linkType: hard -"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.9": +"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.12, is-typed-array@npm:^1.1.9": version: 1.1.12 resolution: "is-typed-array@npm:1.1.12" dependencies: @@ -7886,16 +7366,16 @@ __metadata: languageName: node linkType: hard -"jackspeak@npm:^2.0.3": - version: 2.3.3 - resolution: "jackspeak@npm:2.3.3" +"jackspeak@npm:^2.3.5": + version: 2.3.5 + resolution: "jackspeak@npm:2.3.5" dependencies: "@isaacs/cliui": ^8.0.2 "@pkgjs/parseargs": ^0.11.0 dependenciesMeta: "@pkgjs/parseargs": optional: true - checksum: 4313a7c0cc44c7753c4cb9869935f0b06f4cf96827515f63f58ff46b3d2f6e29aba6b3b5151778397c3f5ae67ef8bfc48871967bd10343c27e90cff198ec7808 + checksum: c2c211f13ceffa05f6c2a2fe82667303c81af6f9f53619b9e4fd403207ffe666428a017f61cd43b3478759188917eda14a81f8823b6dd40a8627e46d973a37df languageName: node linkType: hard @@ -8614,15 +8094,15 @@ __metadata: languageName: node linkType: hard -"lib0@npm:^0.2.42, lib0@npm:^0.2.74": - version: 0.2.84 - resolution: "lib0@npm:0.2.84" +"lib0@npm:^0.2.74, lib0@npm:^0.2.85": + version: 0.2.86 + resolution: "lib0@npm:0.2.86" dependencies: isomorphic.js: ^0.2.4 bin: 0gentesthtml: bin/gentesthtml.js 0serve: bin/0serve.js - checksum: 4403435191dec226e3c61aac994cd1f4dbb0c4988e2f600fb5a398d2f99ea85dc060db9756237d9084a936ffdbec141fc13e8e8e1c53db795fb9f7e7602b9c38 + checksum: 0475bed3d559eeca7e8cae5cf3f2afe1eb787e286659063f82f3b53890d2e15ad913054b43893c626b75a6c887f193e90ed7ed314200606c220201c50abae9de languageName: node linkType: hard @@ -9638,12 +9118,27 @@ __metadata: languageName: node linkType: hard -"playwright-core@npm:1.37.1": - version: 1.37.1 - resolution: "playwright-core@npm:1.37.1" +"playwright-core@npm:1.38.1": + version: 1.38.1 + resolution: "playwright-core@npm:1.38.1" bin: playwright-core: cli.js - checksum: 69f818da2230057584140d5b3af7778a4f4a822b5b18d133abfc5d259128becb943c343a2ddf6b0635277a69f28983e83e2bc3fce23595ececb1e410475b6368 + checksum: 66e83fe040f309b13ad94ba39dea40ac207bfcbbc22de13141af88dbdedd64e1c4e3ce1d0cb070d4efd8050d7e579953ec3681dd8a0acf2c1cc738d9c50e545e + languageName: node + linkType: hard + +"playwright@npm:1.38.1": + version: 1.38.1 + resolution: "playwright@npm:1.38.1" + dependencies: + fsevents: 2.3.2 + playwright-core: 1.38.1 + dependenciesMeta: + fsevents: + optional: true + bin: + playwright: cli.js + checksum: 4e01d4ee52d9ccf75a80d8492829106802590721d56bff7c5957ff1f21eb3c328ee5bc3c1784a59c4b515df1b98d08ef92e4a35a807f454cd00dc481d30fadc2 languageName: node linkType: hard @@ -9725,13 +9220,13 @@ __metadata: linkType: hard "postcss@npm:^8.3.11, postcss@npm:^8.4.21, postcss@npm:^8.4.27": - version: 8.4.29 - resolution: "postcss@npm:8.4.29" + version: 8.4.30 + resolution: "postcss@npm:8.4.30" dependencies: nanoid: ^3.3.6 picocolors: ^1.0.0 source-map-js: ^1.0.2 - checksum: dd6daa25e781db9ae5b651d9b7bfde0ec6e60e86a37da69a18eb4773d5ddd51e28fc4ff054fbdc04636a31462e6bf09a1e50986f69ac52b10d46b7457cd36d12 + checksum: 6c810c10c9bd3e03ca016e0b6b6756261e640aba1a9a7b1200b55502bc34b9165e38f590aef3493afc2f30ab55cdfcd43fd0f8408d69a77318ddbcf2a8ad164b languageName: node linkType: hard @@ -9982,11 +9477,11 @@ __metadata: linkType: hard "regenerate-unicode-properties@npm:^10.1.0": - version: 10.1.0 - resolution: "regenerate-unicode-properties@npm:10.1.0" + version: 10.1.1 + resolution: "regenerate-unicode-properties@npm:10.1.1" dependencies: regenerate: ^1.4.2 - checksum: b1a8929588433ab8b9dc1a34cf3665b3b472f79f2af6ceae00d905fc496b332b9af09c6718fb28c730918f19a00dc1d7310adbaa9b72a2ec7ad2f435da8ace17 + checksum: b80958ef40f125275824c2c47d5081dfaefebd80bff26c76761e9236767c748a4a95a69c053fe29d2df881177f2ca85df4a71fe70a82360388b31159ef19adcf languageName: node linkType: hard @@ -10031,14 +9526,14 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.5.0": - version: 1.5.0 - resolution: "regexp.prototype.flags@npm:1.5.0" +"regexp.prototype.flags@npm:^1.5.1": + version: 1.5.1 + resolution: "regexp.prototype.flags@npm:1.5.1" dependencies: call-bind: ^1.0.2 define-properties: ^1.2.0 - functions-have-names: ^1.2.3 - checksum: c541687cdbdfff1b9a07f6e44879f82c66bbf07665f9a7544c5fd16acdb3ec8d1436caab01662d2fbcad403f3499d49ab0b77fbc7ef29ef961d98cc4bc9755b4 + set-function-name: ^2.0.0 + checksum: 869edff00288442f8d7fa4c9327f91d85f3b3acf8cbbef9ea7a220345cf23e9241b6def9263d2c1ebcf3a316b0aa52ad26a43a84aa02baca3381717b3e307f47 languageName: node linkType: hard @@ -10119,28 +9614,28 @@ __metadata: linkType: hard "resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.20.0": - version: 1.22.4 - resolution: "resolve@npm:1.22.4" + version: 1.22.6 + resolution: "resolve@npm:1.22.6" dependencies: is-core-module: ^2.13.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: 23f25174c2736ce24c6d918910e0d1f89b6b38fefa07a995dff864acd7863d59a7f049e691f93b4b2ee29696303390d921552b6d1b841ed4a8101f517e1d0124 + checksum: d13bf66d4e2ee30d291491f16f2fa44edd4e0cefb85d53249dd6f93e70b2b8c20ec62f01b18662e3cd40e50a7528f18c4087a99490048992a3bb954cf3201a5b languageName: node linkType: hard "resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.20.0#~builtin": - version: 1.22.4 - resolution: "resolve@patch:resolve@npm%3A1.22.4#~builtin::version=1.22.4&hash=c3c19d" + version: 1.22.6 + resolution: "resolve@patch:resolve@npm%3A1.22.6#~builtin::version=1.22.6&hash=c3c19d" dependencies: is-core-module: ^2.13.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: c45f2545fdc4d21883861b032789e20aa67a2f2692f68da320cc84d5724cd02f2923766c5354b3210897e88f1a7b3d6d2c7c22faeead8eed7078e4c783a444bc + checksum: 9d3b3c67aefd12cecbe5f10ca4d1f51ea190891096497c43f301b086883b426466918c3a64f1bbf1788fabb52b579d58809614006c5d0b49186702b3b8fb746a languageName: node linkType: hard @@ -10170,13 +9665,13 @@ __metadata: linkType: hard "rimraf@npm:^5.0.1": - version: 5.0.1 - resolution: "rimraf@npm:5.0.1" + version: 5.0.4 + resolution: "rimraf@npm:5.0.4" dependencies: - glob: ^10.2.5 + glob: ^10.3.7 bin: - rimraf: dist/cjs/src/bin.js - checksum: bafce85391349a2d960847980bf9b5caa2a8887f481af630f1ea27e08288217293cec72d75e9a2ba35495c212789f66a7f3d23366ba6197026ab71c535126857 + rimraf: dist/esm/bin.mjs + checksum: 44230119678153dc46f8e634947123e2a516689818cb1ca4b03c470cb8eece0f6a29135b9c8f785d30e50c34175a58927b8033a9eef0e154a9fab81b80712112 languageName: node linkType: hard @@ -10212,7 +9707,7 @@ __metadata: languageName: node linkType: hard -"safe-array-concat@npm:^1.0.0": +"safe-array-concat@npm:^1.0.1": version: 1.0.1 resolution: "safe-array-concat@npm:1.0.1" dependencies: @@ -10367,6 +9862,17 @@ __metadata: languageName: node linkType: hard +"set-function-name@npm:^2.0.0": + version: 2.0.1 + resolution: "set-function-name@npm:2.0.1" + dependencies: + define-data-property: ^1.0.1 + functions-have-names: ^1.2.3 + has-property-descriptors: ^1.0.0 + checksum: 4975d17d90c40168eee2c7c9c59d023429f0a1690a89d75656306481ece0c3c1fb1ebcc0150ea546d1913e35fbd037bace91372c69e543e51fc5d1f31a9fa126 + languageName: node + linkType: hard + "shallow-clone@npm:^3.0.0": version: 3.0.1 resolution: "shallow-clone@npm:3.0.1" @@ -10602,9 +10108,9 @@ __metadata: linkType: hard "spdx-license-ids@npm:^3.0.0": - version: 3.0.13 - resolution: "spdx-license-ids@npm:3.0.13" - checksum: 3469d85c65f3245a279fa11afc250c3dca96e9e847f2f79d57f466940c5bb8495da08a542646086d499b7f24a74b8d0b42f3fc0f95d50ff99af1f599f6360ad7 + version: 3.0.15 + resolution: "spdx-license-ids@npm:3.0.15" + checksum: 99d567875b50504e1a7359f6da7d03e28db2b855b412ced18310679d091565a44f61ffd2585f19ea53a1192c35f2156c143507b12339dda26ef928547df32002 languageName: node linkType: hard @@ -10676,7 +10182,7 @@ __metadata: languageName: node linkType: hard -"string.prototype.trim@npm:^1.2.7": +"string.prototype.trim@npm:^1.2.8": version: 1.2.8 resolution: "string.prototype.trim@npm:1.2.8" dependencies: @@ -10687,7 +10193,7 @@ __metadata: languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.6": +"string.prototype.trimend@npm:^1.0.7": version: 1.0.7 resolution: "string.prototype.trimend@npm:1.0.7" dependencies: @@ -10698,7 +10204,7 @@ __metadata: languageName: node linkType: hard -"string.prototype.trimstart@npm:^1.0.6": +"string.prototype.trimstart@npm:^1.0.7": version: 1.0.7 resolution: "string.prototype.trimstart@npm:1.0.7" dependencies: @@ -10974,11 +10480,11 @@ __metadata: linkType: hard "systeminformation@npm:^5.8.6": - version: 5.21.4 - resolution: "systeminformation@npm:5.21.4" + version: 5.21.9 + resolution: "systeminformation@npm:5.21.9" bin: systeminformation: lib/cli.js - checksum: 2324456d1fee85efd3f5408d989afc29f4c8e1cc071f9c1082fc500cc3a4acb7d3be4e5706e706acf1558a4637bd8db028cafd5dcb3ccfd11514177ff0b870aa + checksum: 33f8ee313f4e15d5dfde98e071110c5ee377dace8e34d5a4775224efd4cc1005771898a99a4f20ef4948c5249ad4ad961c10f10f235a11c3042399e879677b87 conditions: (os=darwin | os=linux | os=win32 | os=freebsd | os=openbsd | os=netbsd | os=sunos | os=android) languageName: node linkType: hard @@ -11040,8 +10546,8 @@ __metadata: linkType: hard "terser@npm:^5.16.8": - version: 5.19.4 - resolution: "terser@npm:5.19.4" + version: 5.20.0 + resolution: "terser@npm:5.20.0" dependencies: "@jridgewell/source-map": ^0.3.3 acorn: ^8.8.2 @@ -11049,7 +10555,7 @@ __metadata: source-map-support: ~0.5.20 bin: terser: bin/terser - checksum: 09273ce7d3fbe8fea0ec2603ad1c06cc304838bdac42bbfe77835b0b0b6c4a894054575ca518fe16c95d5c401574a8c703f4fde97da45f1c972ea568e6ecafda + checksum: 251d1b62d7c651ace29f997cf336ff5d5f8e30c65c8698ab7b831764d9e012ab0640895cb609906fb939a5bdf5143d73b5781c5c8c67b9216c77ce92dafdc0bc languageName: node linkType: hard @@ -11200,20 +10706,13 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.5.0, tslib@npm:^2.6.0": +"tslib@npm:^2.5.0, tslib@npm:^2.6.0, tslib@npm:~2.6.2": version: 2.6.2 resolution: "tslib@npm:2.6.2" checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad languageName: node linkType: hard -"tslib@npm:~2.5.0": - version: 2.5.3 - resolution: "tslib@npm:2.5.3" - checksum: 88902b309afaf83259131c1e13da1dceb0ad1682a213143a1346a649143924d78cf3760c448b84d796938fd76127183894f8d85cbb3bf9c4fddbfcc140c0003c - languageName: node - linkType: hard - "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 resolution: "type-check@npm:0.4.0" @@ -11410,9 +10909,9 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.0.11": - version: 1.0.11 - resolution: "update-browserslist-db@npm:1.0.11" +"update-browserslist-db@npm:^1.0.13": + version: 1.0.13 + resolution: "update-browserslist-db@npm:1.0.13" dependencies: escalade: ^3.1.1 picocolors: ^1.0.0 @@ -11420,7 +10919,7 @@ __metadata: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: b98327518f9a345c7cad5437afae4d2ae7d865f9779554baf2a200fdf4bac4969076b679b1115434bd6557376bdd37ca7583d0f9b8f8e302d7d4cc1e91b5f231 + checksum: 1e47d80182ab6e4ad35396ad8b61008ae2a1330221175d0abd37689658bdb61af9b705bfc41057fd16682474d79944fb2d86767c5ed5ae34b6276b9bed353322 languageName: node linkType: hard @@ -11671,15 +11170,11 @@ __metadata: linkType: hard "vega-lite@npm:^5.6.1": - version: 5.14.1 - resolution: "vega-lite@npm:5.14.1" + version: 5.15.0 + resolution: "vega-lite@npm:5.15.0" dependencies: - "@types/clone": ~2.1.1 - clone: ~2.1.2 - fast-deep-equal: ~3.1.3 - fast-json-stable-stringify: ~2.1.0 json-stringify-pretty-compact: ~3.0.0 - tslib: ~2.5.0 + tslib: ~2.6.2 vega-event-selector: ~3.0.1 vega-expression: ~5.1.0 vega-util: ~1.17.2 @@ -11691,7 +11186,7 @@ __metadata: vl2png: bin/vl2png vl2svg: bin/vl2svg vl2vg: bin/vl2vg - checksum: 0870a72a9703d0665f7a63f5b3e28f2118175de492eddc49b31e9fdec369adeec62895e857e06180e91fc96585ec308045b902b1ef0fb2c09174f26fcb42de9e + checksum: 174c435dd7a637385c1e77117a7a919ae168f7d4611c3d647c7acd756fe9bca43070f7169171273b3680f5076f4d705ce1cd84bf02742aab94991f6db0509a97 languageName: node linkType: hard @@ -11930,10 +11425,10 @@ __metadata: languageName: node linkType: hard -"vscode-jsonrpc@npm:8.1.0, vscode-jsonrpc@npm:^8.0.2": - version: 8.1.0 - resolution: "vscode-jsonrpc@npm:8.1.0" - checksum: 8980037cc0014802e6ac1e5dfcff9a65e8292727096dfd23c92d2039c0c45de74a00d6ee06938cf1a671286dd8258a5f418cf048c26ad0fcb0c44f96c9e0f278 +"vscode-jsonrpc@npm:8.2.0, vscode-jsonrpc@npm:^8.0.2": + version: 8.2.0 + resolution: "vscode-jsonrpc@npm:8.2.0" + checksum: f302a01e59272adc1ae6494581fa31c15499f9278df76366e3b97b2236c7c53ebfc71efbace9041cfd2caa7f91675b9e56f2407871a1b3c7f760a2e2ee61484a languageName: node linkType: hard @@ -11945,19 +11440,19 @@ __metadata: linkType: hard "vscode-languageserver-protocol@npm:^3.17.0": - version: 3.17.3 - resolution: "vscode-languageserver-protocol@npm:3.17.3" + version: 3.17.5 + resolution: "vscode-languageserver-protocol@npm:3.17.5" dependencies: - vscode-jsonrpc: 8.1.0 - vscode-languageserver-types: 3.17.3 - checksum: ffea508b2efd7f4853f1cef5e5eac58672f0ae71a9ec275ad37a4a2a24cdc3ff023f941e759951aee01c79da3f3279f10e034f19d875f081eb387181241bd836 + vscode-jsonrpc: 8.2.0 + vscode-languageserver-types: 3.17.5 + checksum: dfb42d276df5dfea728267885b99872ecff62f6c20448b8539fae71bb196b420f5351c5aca7c1047bf8fb1f89fa94a961dce2bc5bf7e726198f4be0bb86a1e71 languageName: node linkType: hard -"vscode-languageserver-types@npm:3.17.3": - version: 3.17.3 - resolution: "vscode-languageserver-types@npm:3.17.3" - checksum: fbc8221297261f659a6482875ff2a419dc9d55965dc53745797da569ff9f819cd832e6f2699017baadd946548bbfe212e3f6971f3d960f12dc0ee9c629dacc07 +"vscode-languageserver-types@npm:3.17.5": + version: 3.17.5 + resolution: "vscode-languageserver-types@npm:3.17.5" + checksum: 79b420e7576398d396579ca3a461c9ed70e78db4403cd28bbdf4d3ed2b66a2b4114031172e51fad49f0baa60a2180132d7cb2ea35aa3157d7af3c325528210ac languageName: node linkType: hard @@ -12189,7 +11684,7 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.10, which-typed-array@npm:^1.1.11": +"which-typed-array@npm:^1.1.11": version: 1.1.11 resolution: "which-typed-array@npm:1.1.11" dependencies: @@ -12302,8 +11797,8 @@ __metadata: linkType: hard "ws@npm:^8.11.0": - version: 8.14.1 - resolution: "ws@npm:8.14.1" + version: 8.14.2 + resolution: "ws@npm:8.14.2" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -12312,7 +11807,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 9e310be2b0ff69e1f87d8c6d093ecd17a1ed4c37f281d17c35e8c30e2bd116401775b3d503249651374e6e0e1e9905db62fff096b694371c77561aee06bc3466 + checksum: 3ca0dad26e8cc6515ff392b622a1467430814c463b3368b0258e33696b1d4bed7510bc7030f7b72838b9fdeb8dbd8839cbf808367d6aae2e1d668ce741d4308b languageName: node linkType: hard @@ -12345,11 +11840,13 @@ __metadata: linkType: hard "y-protocols@npm:^1.0.5": - version: 1.0.5 - resolution: "y-protocols@npm:1.0.5" + version: 1.0.6 + resolution: "y-protocols@npm:1.0.6" dependencies: - lib0: ^0.2.42 - checksum: d19404a4ebafcf3761c28b881abe8c32ab6e457db0e5ffc7dbb749cbc2c3bb98e003a43f3e8eba7f245b2698c76f2c4cdd1c2db869f8ec0c6ef94736d9a88652 + lib0: ^0.2.85 + peerDependencies: + yjs: ^13.0.0 + checksum: 4b57c8811befcf2e45c3d47830005f8a33e626c734f78a42fe8a4fa3caad2233ba85a7c8bceefbd52ffc40130d3f3faee664fd0d1c324ff1fa8817a056ccdc1c languageName: node linkType: hard @@ -12404,11 +11901,11 @@ __metadata: linkType: hard "yjs@npm:^13.5.0, yjs@npm:^13.5.40": - version: 13.6.7 - resolution: "yjs@npm:13.6.7" + version: 13.6.8 + resolution: "yjs@npm:13.6.8" dependencies: lib0: ^0.2.74 - checksum: 8e89257c8b565ab97cf3354fca2ce0b6bc3d1abe90b9d45a218a94b35da372c88d2411b353ed8ca03a6619004c4da76c96f7c203c38506c3758c9f8c1a730ca4 + checksum: a2a6fd17a2cce6461b64bedd69f66845b9dfd4702e285be0b5e382840337232e54ba5cf5d48f871263074de625d3902d17ab8a1766695af3fc05a0b4da8d95e0 languageName: node linkType: hard From 782a2329e19c27493af3d0bf9f78ad504362997b Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Tue, 26 Sep 2023 15:43:41 -0400 Subject: [PATCH 043/100] lint --- extensions/jupyterlab/connect_jupyterlab/style/base.css | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/style/base.css b/extensions/jupyterlab/connect_jupyterlab/style/base.css index daeecd0d4..c618bcbb7 100644 --- a/extensions/jupyterlab/connect_jupyterlab/style/base.css +++ b/extensions/jupyterlab/connect_jupyterlab/style/base.css @@ -6,15 +6,17 @@ .rsc-icon { font-size: 18px; + /* make the existing icon transparent so it is not visible */ color: transparent; + /* add a background-image. size 40 x 36 */ - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAkCAYAAAD7PHgWAAACUUlEQVR42mNgGAWjYBSMVDDzPyvD9GfBDDOez2OY+fwikH4HxH8Ypj9/BRQ/CmR3MUx/ajgwjpv+PIFhxosnQEf8JwLvpZ9D59/nAFq4kkiHIePfQA/l09Zxq66wMcx4tosMxyHhl/q0jNYeHBbfAMo1MEx74QekHRhmvXABpsl4oPh0IP6AonbaSz0aOQ6YhmY8/4vmsG/AzJDOUP+fCae+ya+lgOqOAx38lGHmiwrahd6M55vQHPeTYdZz+wEqPp6HouDpz2LBxQeyA2c+L0XRAwrFGc/sgBkhl2H6iyRgdCvRMrQIJfabQAexwNXPeqIGFDuHpuYvMD1OA2cs+jvwWRpc7bznokCxx3jUz6O3A38wTHrLh1D7rI2A+n/UL1rwWTjz+UZUtS/OEwxx9PRKMZj2UBAnBtUkqBnqNhFpthGufvYLRSD/LhA/g9bdMPwaKn6YyqH9Yj1BB05/HoYUO+UE1D+ksgNfuhKw8BFD32NOJAdeoa8DIdFcj8Oyd8DawxxRGz1zJyI5PKRR4f7MDZyBIOnoCpA9mWHqU1nUhgZGWXkYGuUwXEfb6hBvUng2ASO0QI0KmoA5j4XAITTj+VpwriTURJv+bCKWqDxGy9CYg2TRB6AD2oEOdmSY+VoSWAwJQDzw1AgcXTOe38fiuO/A+lqHlg6kpNH6D9xdoHF/xAxo0RsyHAfsUD1LpU+in/1EBhitayB1LVGOuwqMdhv6505QEx6SCe5gcdRriCeeBTGs+s88CPrJ7/gZpj1VB+PZL8VHBw5GwSigEwAAO8Vb1WEAypEAAAAASUVORK5CYII=); + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAkCAYAAAD7PHgWAAACUUlEQVR42mNgGAWjYBSMVDDzPyvD9GfBDDOez2OY+fwikH4HxH8Ypj9/BRQ/CmR3MUx/ajgwjpv+PIFhxosnQEf8JwLvpZ9D59/nAFq4kkiHIePfQA/l09Zxq66wMcx4tosMxyHhl/q0jNYeHBbfAMo1MEx74QekHRhmvXABpsl4oPh0IP6AonbaSz0aOQ6YhmY8/4vmsG/AzJDOUP+fCae+ya+lgOqOAx38lGHmiwrahd6M55vQHPeTYdZz+wEqPp6HouDpz2LBxQeyA2c+L0XRAwrFGc/sgBkhl2H6iyRgdCvRMrQIJfabQAexwNXPeqIGFDuHpuYvMD1OA2cs+jvwWRpc7bznokCxx3jUz6O3A38wTHrLh1D7rI2A+n/UL1rwWTjz+UZUtS/OEwxx9PRKMZj2UBAnBtUkqBnqNhFpthGufvYLRSD/LhA/g9bdMPwaKn6YyqH9Yj1BB05/HoYUO+UE1D+ksgNfuhKw8BFD32NOJAdeoa8DIdFcj8Oyd8DawxxRGz1zJyI5PKRR4f7MDZyBIOnoCpA9mWHqU1nUhgZGWXkYGuUwXEfb6hBvUng2ASO0QI0KmoA5j4XAITTj+VpwriTURJv+bCKWqDxGy9CYg2TRB6AD2oEOdmSY+VoSWAwJQDzw1AgcXTOe38fiuO/A+lqHlg6kpNH6D9xdoHF/xAxo0RsyHAfsUD1LpU+in/1EBhitayB1LVGOuwqMdhv6505QEx6SCe5gcdRriCeeBTGs+s88CPrJ7/gZpj1VB+PZL8VHBw5GwSigEwAAO8Vb1WEAypEAAAAASUVORK5CYII='); background-size: contain; } .jp-posit-publishing-view { width: 100%; height: 100%; - border-width: 0px; + border-width: 0; } From f95a5ab864cb05d3c8b64644b51fcad6d84284d3 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Tue, 26 Sep 2023 15:50:05 -0400 Subject: [PATCH 044/100] suppress mypy warning --- .../connect_jupyterlab/connect_jupyterlab/handlers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py index 9cbe6fbc4..e1a410961 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py @@ -7,7 +7,7 @@ from jupyter_server.base.handlers import APIHandler from jupyter_server.utils import url_path_join -from jupyter_server_proxy.handlers import LocalProxyHandler +from jupyter_server_proxy.handlers import LocalProxyHandler # type: ignore from tornado.httputil import HTTPServerRequest from tornado.web import authenticated from tornado.httpclient import HTTPResponse From bebadf085bf85b8cbfe3b5c800baf3693c29f0c5 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Tue, 26 Sep 2023 15:56:38 -0400 Subject: [PATCH 045/100] run lint with jlpm --- extensions/jupyterlab/connect_jupyterlab/justfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/justfile b/extensions/jupyterlab/connect_jupyterlab/justfile index 54b50ccf2..0b2be007c 100644 --- a/extensions/jupyterlab/connect_jupyterlab/justfile +++ b/extensions/jupyterlab/connect_jupyterlab/justfile @@ -12,6 +12,6 @@ validate-python: mypy ./connect_jupyterlab validate-js: - npm run lint:check + jlpm run lint:check validate: validate-js validate-python From 884b191dd0246b654660dff491eb75798e9115f2 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Tue, 26 Sep 2023 16:17:45 -0400 Subject: [PATCH 046/100] set yarn version --- extensions/jupyterlab/connect_jupyterlab/.yarnrc.yml | 2 ++ extensions/jupyterlab/connect_jupyterlab/package.json | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/.yarnrc.yml b/extensions/jupyterlab/connect_jupyterlab/.yarnrc.yml index 3186f3f07..fdc343f9d 100644 --- a/extensions/jupyterlab/connect_jupyterlab/.yarnrc.yml +++ b/extensions/jupyterlab/connect_jupyterlab/.yarnrc.yml @@ -1 +1,3 @@ nodeLinker: node-modules + +yarnPath: .yarn/releases/yarn-1.22.19.cjs diff --git a/extensions/jupyterlab/connect_jupyterlab/package.json b/extensions/jupyterlab/connect_jupyterlab/package.json index fbcf96242..d9d89fbaa 100644 --- a/extensions/jupyterlab/connect_jupyterlab/package.json +++ b/extensions/jupyterlab/connect_jupyterlab/package.json @@ -211,5 +211,6 @@ "selector-no-vendor-prefix": null, "value-no-vendor-prefix": null } - } + }, + "packageManager": "yarn@1.22.19" } From cdb7ddc094427480a7a02d6c2bb0b9b25bb78ce4 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Tue, 26 Sep 2023 16:48:09 -0400 Subject: [PATCH 047/100] set base URL for UI and API --- web/src/App.vue | 2 +- web/src/api/client.ts | 2 +- web/vite.config.ts | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/web/src/App.vue b/web/src/App.vue index 654d05888..9fd375401 100644 --- a/web/src/App.vue +++ b/web/src/App.vue @@ -78,7 +78,7 @@ const incomingEvent = (msg: EventStreamMessage) => { eventStream.addEventMonitorCallback(['*'], incomingEvent); eventStream.setDebugMode(true); -eventStream.open('/api/events?stream=messages'); +eventStream.open('api/events?stream=messages'); console.log(eventStream.status()); // Have to be sure to close connection or it will be leaked on agent (if it continues to run) diff --git a/web/src/api/client.ts b/web/src/api/client.ts index 283554edc..9aa3eb6ec 100644 --- a/web/src/api/client.ts +++ b/web/src/api/client.ts @@ -34,7 +34,7 @@ class PublishingClientApi { constructor() { const client = axios.create({ - baseURL: '/api', + baseURL: './api', withCredentials: true, }); diff --git a/web/vite.config.ts b/web/vite.config.ts index 231a6ad71..eb272014f 100644 --- a/web/vite.config.ts +++ b/web/vite.config.ts @@ -6,6 +6,7 @@ import { quasar, transformAssetUrls } from '@quasar/vite-plugin'; // https://vitejs.dev/config/ // eslint-disable-next-line no-restricted-syntax export default defineConfig({ + base: './', plugins: [ vue({ template: { transformAssetUrls } From 9d3aa9a27fb2a8ce2390da1647f6ab60e958adae Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Tue, 26 Sep 2023 16:48:50 -0400 Subject: [PATCH 048/100] Revert "set yarn version" This reverts commit 884b191dd0246b654660dff491eb75798e9115f2. --- extensions/jupyterlab/connect_jupyterlab/.yarnrc.yml | 2 -- extensions/jupyterlab/connect_jupyterlab/package.json | 3 +-- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/.yarnrc.yml b/extensions/jupyterlab/connect_jupyterlab/.yarnrc.yml index fdc343f9d..3186f3f07 100644 --- a/extensions/jupyterlab/connect_jupyterlab/.yarnrc.yml +++ b/extensions/jupyterlab/connect_jupyterlab/.yarnrc.yml @@ -1,3 +1 @@ nodeLinker: node-modules - -yarnPath: .yarn/releases/yarn-1.22.19.cjs diff --git a/extensions/jupyterlab/connect_jupyterlab/package.json b/extensions/jupyterlab/connect_jupyterlab/package.json index d9d89fbaa..fbcf96242 100644 --- a/extensions/jupyterlab/connect_jupyterlab/package.json +++ b/extensions/jupyterlab/connect_jupyterlab/package.json @@ -211,6 +211,5 @@ "selector-no-vendor-prefix": null, "value-no-vendor-prefix": null } - }, - "packageManager": "yarn@1.22.19" + } } From aa708a0ea96f3dc1097768423e5fbad295ec3d27 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Tue, 26 Sep 2023 16:50:16 -0400 Subject: [PATCH 049/100] use jlpm to install --- .github/workflows/pull-request.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index 6d92829fa..1aaefd406 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -708,12 +708,12 @@ jobs: - name: Install JupyterLab Python extension run: just install - - - name: Install NPM dependencies - run: npm install - name: Install Python tools run: just install-python-tools + - + name: Install JS dependencies + run: jlpm install - name: Validate extension code run: just validate From d159b0ec496f4362a22a58643b94a84fbdae9ddb Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Wed, 27 Sep 2023 16:38:17 -0400 Subject: [PATCH 050/100] sidebar wip --- .../connect_jupyterlab/package.json | 1 + .../connect_jupyterlab/src/index.ts | 61 ++++++++++++++++--- .../connect_jupyterlab/style/base.css | 5 +- .../jupyterlab/connect_jupyterlab/yarn.lock | 20 ++++++ 4 files changed, 75 insertions(+), 12 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/package.json b/extensions/jupyterlab/connect_jupyterlab/package.json index fbcf96242..5cc060812 100644 --- a/extensions/jupyterlab/connect_jupyterlab/package.json +++ b/extensions/jupyterlab/connect_jupyterlab/package.json @@ -58,6 +58,7 @@ "watch:labextension": "jupyter labextension watch ." }, "dependencies": { + "@jupyter-notebook/application": "^7.0.4", "@jupyterlab/application": "^4.0.0", "@jupyterlab/apputils": "^4.1.5", "@jupyterlab/coreutils": "^6.0.0", diff --git a/extensions/jupyterlab/connect_jupyterlab/src/index.ts b/extensions/jupyterlab/connect_jupyterlab/src/index.ts index 203c130dd..1d1f2ba26 100644 --- a/extensions/jupyterlab/connect_jupyterlab/src/index.ts +++ b/extensions/jupyterlab/connect_jupyterlab/src/index.ts @@ -1,11 +1,14 @@ import { JupyterFrontEnd, - JupyterFrontEndPlugin + JupyterFrontEndPlugin, + LabShell } from '@jupyterlab/application'; import { ICommandPalette } from '@jupyterlab/apputils'; +import { JupyterLab } from '@jupyterlab/application'; import { IDocumentManager } from '@jupyterlab/docmanager'; import { INotebookTracker, NotebookPanel } from '@jupyterlab/notebook'; +import { NotebookApp, NotebookShell } from '@jupyter-notebook/application'; import { KernelMessage } from '@jupyterlab/services'; import { IKernelConnection } from '@jupyterlab/services/lib/kernel/kernel'; import { JSONObject } from '@lumino/coreutils'; @@ -16,6 +19,12 @@ import { requestAPI } from './handler'; const PACKAGE_NAME = 'connect_jupyterlab'; const COMMAND_NAME = 'posit:publish'; +enum AppType { + Unknown = 0, + JupyterLab = 1, + JupyterNotebook = 2 +} + async function runPython( code: string, expression: string, @@ -121,9 +130,9 @@ class IFrameWidget extends Widget { IFrameWidget.unique++; this.id = 'posit-publishing-ui-' + IFrameWidget.unique; this.title.label = 'Publish ' + notebookPath.split('/').at(-1); - this.title.closable = true; - // this.title.icon = LabIcon.resolveElement({ iconClass: 'rsc-icon' }); // nope - this.addClass('jp-posit-publishing-view'); + this.title.closable = false; + // this.title.icon = LabIcon.resolveElement({ iconClass: 'posit-publish-icon' }); // nope + this.addClass('posit-publishing-view'); const iframe = document.createElement('iframe'); iframe.src = url; @@ -136,7 +145,8 @@ class IFrameWidget extends Widget { function makePublishCommand( notebookTracker: INotebookTracker, docManager: IDocumentManager, - shell: JupyterFrontEnd.IShell + shell: JupyterFrontEnd.IShell, + appType: AppType ) { const uiWidgets = new Map(); let notebookPanel: NotebookPanel | null = null; @@ -183,14 +193,36 @@ function makePublishCommand( const url = agentInfo.url; console.log(`Publishing agent serving at ${url}`); - // The widget is a singleton; if it's open, activate it. + // There is one widget per notebook; if it's open, activate it. let widget = uiWidgets.get(notebookPath); if (widget && shell.contains(widget)) { shell.activateById(widget.id); } else { widget = new IFrameWidget(notebookPath, url); uiWidgets.set(notebookPath, widget); - shell.add(widget, 'main'); + + switch (appType) { + case AppType.JupyterLab: + shell.add(widget, 'right'); + shell.activateById(widget.id); + if (shell instanceof LabShell) { + // shell.collapseLeft(); + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + } else { + console.log("Couldn't collapse left sidebar"); + } + break; + case AppType.JupyterNotebook: + shell.add(widget, 'right'); + shell.activateById(widget.id); + // if (shell instanceof NotebookShell) { + // shell.collapseLeft(); + // } else { + // console.log("Couldn't collapse left sidebar"); + // } + break; + } } } catch (err) { throw new Error(`Error launching the publishing agent: ${err}`); @@ -223,13 +255,22 @@ const plugin: JupyterFrontEndPlugin = { ) => { console.log(`Activating JupyterLab extension ${PACKAGE_NAME}`); const { commands, shell } = app; - + let appType = AppType.Unknown; + if (app instanceof NotebookApp) { + appType = AppType.JupyterNotebook; + console.log('Running in Jupyter Notebook app'); + } else if (app instanceof JupyterLab) { + appType = AppType.JupyterLab; + console.log('Running in JupyterLab app'); + } else { + console.log('Running in unknown app'); + } // Add a command commands.addCommand(COMMAND_NAME, { label: 'Publish', caption: 'Publish to Posit Connect', - iconClass: 'rsc-icon', - execute: makePublishCommand(notebookTracker, docManager, shell) + iconClass: 'posit-publish-icon', + execute: makePublishCommand(notebookTracker, docManager, shell, appType) }); // Add the command to the command palette diff --git a/extensions/jupyterlab/connect_jupyterlab/style/base.css b/extensions/jupyterlab/connect_jupyterlab/style/base.css index c618bcbb7..0cbb630e4 100644 --- a/extensions/jupyterlab/connect_jupyterlab/style/base.css +++ b/extensions/jupyterlab/connect_jupyterlab/style/base.css @@ -4,7 +4,7 @@ https://jupyterlab.readthedocs.io/en/stable/developer/css.html */ -.rsc-icon { +.posit-publish-icon { font-size: 18px; /* make the existing icon transparent so it is not visible */ @@ -15,8 +15,9 @@ background-size: contain; } -.jp-posit-publishing-view { +.posit-publishing-view { width: 100%; height: 100%; border-width: 0; + min-width: 500px !important; } diff --git a/extensions/jupyterlab/connect_jupyterlab/yarn.lock b/extensions/jupyterlab/connect_jupyterlab/yarn.lock index 5235f2dd4..32b7ae3b7 100644 --- a/extensions/jupyterlab/connect_jupyterlab/yarn.lock +++ b/extensions/jupyterlab/connect_jupyterlab/yarn.lock @@ -2039,6 +2039,25 @@ __metadata: languageName: node linkType: hard +"@jupyter-notebook/application@npm:^7.0.4": + version: 7.0.4 + resolution: "@jupyter-notebook/application@npm:7.0.4" + dependencies: + "@jupyterlab/application": ^4.0.6 + "@jupyterlab/coreutils": ^6.0.6 + "@jupyterlab/docregistry": ^4.0.6 + "@jupyterlab/rendermime-interfaces": ^3.8.6 + "@jupyterlab/ui-components": ^4.0.6 + "@lumino/algorithm": ^2.0.1 + "@lumino/coreutils": ^2.1.2 + "@lumino/messaging": ^2.0.1 + "@lumino/polling": ^2.1.2 + "@lumino/signaling": ^2.1.2 + "@lumino/widgets": ^2.3.0 + checksum: 0a467484f13eb1769f1c1bf4d03a641b8923597b61a462c5c52a9ccb653434f3a503d2b7ed56fae11146d85d827649844df0ed39b6443e1c0e7db9b09b099de6 + languageName: node + linkType: hard + "@jupyter/ydoc@npm:^1.0.2": version: 1.1.0 resolution: "@jupyter/ydoc@npm:1.1.0" @@ -5049,6 +5068,7 @@ __metadata: version: 0.0.0-use.local resolution: "connect_jupyterlab@workspace:." dependencies: + "@jupyter-notebook/application": ^7.0.4 "@jupyterlab/application": ^4.0.0 "@jupyterlab/apputils": ^4.1.5 "@jupyterlab/builder": ^4.0.0 From 50c2d0a357e66be519e57e86da08c25eacb85d3b Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 28 Sep 2023 08:35:32 -0400 Subject: [PATCH 051/100] cleanup --- .../connect_jupyterlab/src/index.ts | 251 +++++++----------- .../connect_jupyterlab/style/base.css | 15 ++ 2 files changed, 117 insertions(+), 149 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/src/index.ts b/extensions/jupyterlab/connect_jupyterlab/src/index.ts index 1d1f2ba26..2f834407d 100644 --- a/extensions/jupyterlab/connect_jupyterlab/src/index.ts +++ b/extensions/jupyterlab/connect_jupyterlab/src/index.ts @@ -1,17 +1,15 @@ import { JupyterFrontEnd, - JupyterFrontEndPlugin, - LabShell + JupyterFrontEndPlugin } from '@jupyterlab/application'; import { ICommandPalette } from '@jupyterlab/apputils'; -import { JupyterLab } from '@jupyterlab/application'; import { IDocumentManager } from '@jupyterlab/docmanager'; import { INotebookTracker, NotebookPanel } from '@jupyterlab/notebook'; -import { NotebookApp, NotebookShell } from '@jupyter-notebook/application'; import { KernelMessage } from '@jupyterlab/services'; import { IKernelConnection } from '@jupyterlab/services/lib/kernel/kernel'; import { JSONObject } from '@lumino/coreutils'; +import { Message } from '@lumino/messaging'; import { Widget } from '@lumino/widgets'; import { requestAPI } from './handler'; @@ -19,21 +17,15 @@ import { requestAPI } from './handler'; const PACKAGE_NAME = 'connect_jupyterlab'; const COMMAND_NAME = 'posit:publish'; -enum AppType { - Unknown = 0, - JupyterLab = 1, - JupyterNotebook = 2 -} - async function runPython( - code: string, - expression: string, + toRun: string, + toEvaluate: string, kernel: IKernelConnection ): Promise { const requestContent: KernelMessage.IExecuteRequestMsg['content'] = { - code, + code: toRun, user_expressions: { - value: expression + value: toEvaluate }, stop_on_error: false }; @@ -66,6 +58,7 @@ async function getKernel( if (!kernel) { throw new Error('Session has no kernel.'); } + console.info('Using kernel', kernel.id); const kernelLanguage = (await kernel.info).language_info.name; console.info('Kernel language:', kernelLanguage); if (kernelLanguage !== 'python') { @@ -73,7 +66,6 @@ async function getKernel( "Can't publish this notebook because it doesn't use the Python kernel" ); } - console.debug('Using kernel', kernel.id); return kernel; } @@ -91,15 +83,15 @@ async function getKernelPythonVersion( ); } -class PublishStatus { - busy: boolean = false; -} +// class PublishStatus { +// busy: boolean = false; +// } -async function getPublishStatus(): Promise { - const data = await requestAPI('publish'); - console.log(data); - return data; -} +// async function getPublishStatus(): Promise { +// const data = await requestAPI('publish'); +// console.log(data); +// return data; +// } class PublishResponse { url: string = ''; @@ -122,48 +114,48 @@ async function launchAgent( return data; } -class IFrameWidget extends Widget { - static unique = 0; +class PublishingWidget extends Widget { + frame: HTMLIFrameElement; + message: HTMLDivElement; + currentNotebook: NotebookPanel | null = null; + docManager: IDocumentManager; + notebookURLs: Map; - constructor(notebookPath: string, url: string) { + constructor(notebookTracker: INotebookTracker, docManager: IDocumentManager) { super(); - IFrameWidget.unique++; - this.id = 'posit-publishing-ui-' + IFrameWidget.unique; - this.title.label = 'Publish ' + notebookPath.split('/').at(-1); + this.notebookURLs = new Map(); + this.docManager = docManager; + + notebookTracker.currentChanged.connect((_, panel) => { + console.log('Switch to panel', panel); + this.currentNotebook = panel; + this.activate(); + }); + + this.id = 'posit-publishing-ui'; + this.title.label = 'Posit Publishing'; this.title.closable = false; // this.title.icon = LabIcon.resolveElement({ iconClass: 'posit-publish-icon' }); // nope this.addClass('posit-publishing-view'); - const iframe = document.createElement('iframe'); - iframe.src = url; - iframe.width = '100%'; - iframe.height = '100%'; - this.node.appendChild(iframe); + const frame = document.createElement('iframe'); + frame.classList.add('posit-publishing-frame'); + this.node.appendChild(frame); + this.frame = frame; + + const message = document.createElement('div'); + message.classList.add('posit-publishing-message-area'); + message.textContent = 'Initializing; this message should be hidden.'; + message.hidden = true; + this.node.appendChild(message); + this.message = message; } -} -function makePublishCommand( - notebookTracker: INotebookTracker, - docManager: IDocumentManager, - shell: JupyterFrontEnd.IShell, - appType: AppType -) { - const uiWidgets = new Map(); - let notebookPanel: NotebookPanel | null = null; - - notebookTracker.currentChanged.connect((_, panel) => { - console.log(panel); - notebookPanel = panel; - }); - - async function publish(calledFrom: string) { - console.log(`${COMMAND_NAME} command has been called from ${calledFrom}.`); - if (!notebookPanel) { - throw new Error( - "Can't publish because there isn't currently a notebook panel open." - ); + async getOrStartUI(): Promise { + if (!this.currentNotebook) { + throw new Error('Open a notebook to publish it.'); } - const context = docManager.contextForWidget(notebookPanel); + const context = this.docManager.contextForWidget(this.currentNotebook); if (!context) { throw new Error('Error getting context for the notebook panel.'); } @@ -171,116 +163,77 @@ function makePublishCommand( if (!notebookPath) { throw new Error('Error getting the notebook path.'); } - const kernel = await getKernel(notebookPanel); + const existingURL = this.notebookURLs.get(notebookPath); + if (existingURL !== undefined) { + console.log(`Using existing agent serving at ${existingURL}`); + return existingURL; + } + const kernel = await getKernel(this.currentNotebook); const pythonPath = await getKernelPythonPath(kernel); console.log('Kernel python path is', pythonPath); const pythonVersion = await getKernelPythonVersion(kernel); console.log('Kernel python version is', pythonVersion); - const status = await getPublishStatus(); - console.log('Publishing status: ', status); - if (status.busy) { - throw new Error( - "Can't publish because there is already a publishing session open." - ); - } - try { - const agentInfo = await launchAgent( - notebookPath, - pythonPath, - pythonVersion - ); - console.log(agentInfo); - const url = agentInfo.url; - console.log(`Publishing agent serving at ${url}`); - // There is one widget per notebook; if it's open, activate it. - let widget = uiWidgets.get(notebookPath); - if (widget && shell.contains(widget)) { - shell.activateById(widget.id); - } else { - widget = new IFrameWidget(notebookPath, url); - uiWidgets.set(notebookPath, widget); + const agentInfo = await launchAgent( + notebookPath, + pythonPath, + pythonVersion + ); + const agentURL = agentInfo.url; + console.log(`Publishing agent serving at ${agentURL}`); + this.notebookURLs.set(notebookPath, agentURL); + return agentURL; + } - switch (appType) { - case AppType.JupyterLab: - shell.add(widget, 'right'); - shell.activateById(widget.id); - if (shell instanceof LabShell) { - // shell.collapseLeft(); - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - } else { - console.log("Couldn't collapse left sidebar"); - } - break; - case AppType.JupyterNotebook: - shell.add(widget, 'right'); - shell.activateById(widget.id); - // if (shell instanceof NotebookShell) { - // shell.collapseLeft(); - // } else { - // console.log("Couldn't collapse left sidebar"); - // } - break; - } - } + async onActivateRequest(msg: Message): Promise { + try { + const url = await this.getOrStartUI(); + this.message.hidden = true; + this.frame.src = url; + this.frame.hidden = false; } catch (err) { - throw new Error(`Error launching the publishing agent: ${err}`); + this.message.textContent = err as string; + this.frame.hidden = true; + this.message.hidden = false; } } - return async function (args: any) { - try { - await publish(args['origin']); - } catch (err) { - // TODO, obv - console.error('An error occurred during publishing:', err); - alert(err); +} + +async function activate( + app: JupyterFrontEnd, + palette: ICommandPalette, + docManager: IDocumentManager, + notebookTracker: INotebookTracker +) { + console.log(`Activating JupyterLab extension ${PACKAGE_NAME}`); + const { commands, shell } = app; + const widget = new PublishingWidget(notebookTracker, docManager); + shell.add(widget, 'right'); + + // Add a command + commands.addCommand(COMMAND_NAME, { + label: 'Publish', + caption: 'Publish to Posit Connect', + iconClass: 'posit-publish-icon', + execute: () => { + shell.activateById(widget.id); } - }; + }); + + // Add the command to the command palette + const category = 'notebook'; + palette.addItem({ + command: COMMAND_NAME, + category + }); } -/** - * Initialization data for the extension. - */ const plugin: JupyterFrontEndPlugin = { id: `${PACKAGE_NAME}:plugin`, description: 'A JupyterLab extension for publishing to Posit Connect.', autoStart: true, requires: [ICommandPalette, IDocumentManager, INotebookTracker], - activate: async ( - app: JupyterFrontEnd, - palette: ICommandPalette, - docManager: IDocumentManager, - notebookTracker: INotebookTracker - ) => { - console.log(`Activating JupyterLab extension ${PACKAGE_NAME}`); - const { commands, shell } = app; - let appType = AppType.Unknown; - if (app instanceof NotebookApp) { - appType = AppType.JupyterNotebook; - console.log('Running in Jupyter Notebook app'); - } else if (app instanceof JupyterLab) { - appType = AppType.JupyterLab; - console.log('Running in JupyterLab app'); - } else { - console.log('Running in unknown app'); - } - // Add a command - commands.addCommand(COMMAND_NAME, { - label: 'Publish', - caption: 'Publish to Posit Connect', - iconClass: 'posit-publish-icon', - execute: makePublishCommand(notebookTracker, docManager, shell, appType) - }); - - // Add the command to the command palette - const category = 'notebook'; - palette.addItem({ - command: COMMAND_NAME, - category, - args: { origin: 'palette' } - }); - } + activate: activate }; export default plugin; diff --git a/extensions/jupyterlab/connect_jupyterlab/style/base.css b/extensions/jupyterlab/connect_jupyterlab/style/base.css index 0cbb630e4..febb3ed12 100644 --- a/extensions/jupyterlab/connect_jupyterlab/style/base.css +++ b/extensions/jupyterlab/connect_jupyterlab/style/base.css @@ -20,4 +20,19 @@ height: 100%; border-width: 0; min-width: 500px !important; + position:relative; +} + +.posit-publishing-frame { + width: 100%; + height: 100%; +} + +.posit-publishing-message-area { + width: 100%; + position: absolute; + top: 50%; + height: 10em; + margin-top: -5em; + text-align: center; } From ceb1fe5b0aac16a81d0403444ddf261e7ad83346 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 28 Sep 2023 12:25:15 -0400 Subject: [PATCH 052/100] theme --- .../connect_jupyterlab/handlers.py | 9 ++++- .../connect_jupyterlab/src/index.ts | 40 ++++++++++++++----- .../connect_jupyterlab/style/base.css | 3 +- internal/cli_types/base.go | 1 + 4 files changed, 41 insertions(+), 12 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py index e1a410961..a6702acb3 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py @@ -25,9 +25,10 @@ def post(self) -> None: notebookPath = os.path.abspath(data["notebookPath"]) pythonPath = data["pythonPath"] pythonVersion = data["pythonVersion"] + theme = data["theme"] try: - ui_url = launch_ui(notebookPath, pythonPath, pythonVersion, self.log) + ui_url = launch_ui(notebookPath, pythonPath, pythonVersion, theme, self.log) parsed = urlparse(ui_url) proxy_path = url_path_join(base_url, "ui", str(parsed.port), "/") req = self.request @@ -96,7 +97,9 @@ def setup_handlers(web_app): web_app.add_handlers(host_pattern, handlers) -def launch_ui(notebookPath: str, pythonPath: str, pythonVersion: str, log: logging.Logger) -> str: +def launch_ui( + notebookPath: str, pythonPath: str, pythonVersion: str, theme: str, log: logging.Logger +) -> str: args = [ "connect-client", "publish-ui", @@ -105,6 +108,8 @@ def launch_ui(notebookPath: str, pythonPath: str, pythonVersion: str, log: loggi pythonPath, "--python-version", pythonVersion, + "--theme", + theme, "-n", "local", # cheating, no target selection in the UI yet ] diff --git a/extensions/jupyterlab/connect_jupyterlab/src/index.ts b/extensions/jupyterlab/connect_jupyterlab/src/index.ts index 2f834407d..fc242f0e5 100644 --- a/extensions/jupyterlab/connect_jupyterlab/src/index.ts +++ b/extensions/jupyterlab/connect_jupyterlab/src/index.ts @@ -3,7 +3,7 @@ import { JupyterFrontEndPlugin } from '@jupyterlab/application'; -import { ICommandPalette } from '@jupyterlab/apputils'; +import { ICommandPalette, IThemeManager } from '@jupyterlab/apputils'; import { IDocumentManager } from '@jupyterlab/docmanager'; import { INotebookTracker, NotebookPanel } from '@jupyterlab/notebook'; import { KernelMessage } from '@jupyterlab/services'; @@ -100,13 +100,16 @@ class PublishResponse { async function launchAgent( notebookPath: string, pythonPath: string, - pythonVersion: string + pythonVersion: string, + isLightTheme: boolean ): Promise { + const theme = isLightTheme ? 'light' : 'dark'; const data = await requestAPI('publish', { body: JSON.stringify({ notebookPath: notebookPath, pythonPath: pythonPath, - pythonVersion: pythonVersion + pythonVersion: pythonVersion, + theme: theme }), method: 'POST' }); @@ -120,12 +123,20 @@ class PublishingWidget extends Widget { currentNotebook: NotebookPanel | null = null; docManager: IDocumentManager; notebookURLs: Map; + isLightTheme: boolean; - constructor(notebookTracker: INotebookTracker, docManager: IDocumentManager) { + constructor( + notebookTracker: INotebookTracker, + docManager: IDocumentManager, + themeManager: IThemeManager + ) { super(); this.notebookURLs = new Map(); this.docManager = docManager; + const theme = themeManager.theme; + this.isLightTheme = theme !== null && themeManager.isLight(theme); + notebookTracker.currentChanged.connect((_, panel) => { console.log('Switch to panel', panel); this.currentNotebook = panel; @@ -177,7 +188,8 @@ class PublishingWidget extends Widget { const agentInfo = await launchAgent( notebookPath, pythonPath, - pythonVersion + pythonVersion, + this.isLightTheme, ); const agentURL = agentInfo.url; console.log(`Publishing agent serving at ${agentURL}`); @@ -192,7 +204,7 @@ class PublishingWidget extends Widget { this.frame.src = url; this.frame.hidden = false; } catch (err) { - this.message.textContent = err as string; + this.message.textContent = '⛔️ ' + err; this.frame.hidden = true; this.message.hidden = false; } @@ -203,11 +215,16 @@ async function activate( app: JupyterFrontEnd, palette: ICommandPalette, docManager: IDocumentManager, - notebookTracker: INotebookTracker + notebookTracker: INotebookTracker, + themeManager: IThemeManager ) { console.log(`Activating JupyterLab extension ${PACKAGE_NAME}`); const { commands, shell } = app; - const widget = new PublishingWidget(notebookTracker, docManager); + const widget = new PublishingWidget( + notebookTracker, + docManager, + themeManager + ); shell.add(widget, 'right'); // Add a command @@ -232,7 +249,12 @@ const plugin: JupyterFrontEndPlugin = { id: `${PACKAGE_NAME}:plugin`, description: 'A JupyterLab extension for publishing to Posit Connect.', autoStart: true, - requires: [ICommandPalette, IDocumentManager, INotebookTracker], + requires: [ + ICommandPalette, + IDocumentManager, + INotebookTracker, + IThemeManager + ], activate: activate }; diff --git a/extensions/jupyterlab/connect_jupyterlab/style/base.css b/extensions/jupyterlab/connect_jupyterlab/style/base.css index febb3ed12..cbbb2fdce 100644 --- a/extensions/jupyterlab/connect_jupyterlab/style/base.css +++ b/extensions/jupyterlab/connect_jupyterlab/style/base.css @@ -29,10 +29,11 @@ } .posit-publishing-message-area { - width: 100%; position: absolute; top: 50%; height: 10em; margin-top: -5em; + padding-left: 30px; + padding-right: 30px; text-align: center; } diff --git a/internal/cli_types/base.go b/internal/cli_types/base.go index 3cc9a089f..3f20b9729 100644 --- a/internal/cli_types/base.go +++ b/internal/cli_types/base.go @@ -42,6 +42,7 @@ type UIArgs struct { Interactive bool `short:"i" help:"Launch a browser to show the UI at the listen address."` OpenBrowserAt string `help:"Launch a browser to show the UI at specific network address." placeholder:"HOST[:PORT]" hidden:""` SkipBrowserSessionAuth bool `help:"Skip Browser Token Auth Checks" hidden:""` + Theme string `help:"UI theme, 'light' or 'dark'." hidden:""` Listen string `help:"Network address to listen on." placeholder:"HOST[:PORT]" default:"localhost:0"` AccessLog bool `help:"Log all HTTP requests."` TLSKeyFile string `help:"Path to TLS private key file for the UI server."` From 5dd19a18a947f6fdb0b1422b986a338e3d5465e3 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 28 Sep 2023 15:14:32 -0400 Subject: [PATCH 053/100] use SameSite:Lax --- internal/services/middleware/cookie_auth.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/services/middleware/cookie_auth.go b/internal/services/middleware/cookie_auth.go index 056f682b3..3e2c2062e 100644 --- a/internal/services/middleware/cookie_auth.go +++ b/internal/services/middleware/cookie_auth.go @@ -18,7 +18,7 @@ var cookieKey []byte = securecookie.MustGenerateRandomKey() var cookieObj = securecookie.MustNew(sessionCookieName, cookieKey, securecookie.Params{ HTTPOnly: true, Secure: false, // we currently only serve over http - SameSite: securecookie.None, + SameSite: securecookie.Lax, }) // CookieSession looks for a posit-publish-session cookie. From 6f21a372180cd6b9de8786351d12169bb37d7743 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 28 Sep 2023 15:14:54 -0400 Subject: [PATCH 054/100] improve error handling --- .../connect_jupyterlab/connect_jupyterlab/handlers.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py index a6702acb3..06a15e016 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py @@ -40,7 +40,8 @@ def post(self) -> None: self.finish(json.dumps({"url": ui_url})) except Exception as exc: self.log.exception("UI launch failed", exc_info=exc) - self.set_status(500, str(exc)) + self.set_status(500) + self.finish(str(exc)) @authenticated def get(self) -> None: @@ -114,7 +115,13 @@ def launch_ui( "local", # cheating, no target selection in the UI yet ] log.info("Starting: %s", " ".join(map(shlex.quote, args))) - process = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=None, text=True) + try: + process = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=None, text=True) + except OSError as exc: + if exc.errno == 2: + raise Exception("Could not find connect-client on PATH.") + else: + raise if process.stdout is None: # This should never happen because we requested stdout=subprocess.PIPE From 8500ea54f02a505fc7f6f77a1c9b378d300fa3d1 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 28 Sep 2023 15:15:13 -0400 Subject: [PATCH 055/100] retain open iframes --- .../connect_jupyterlab/src/index.ts | 59 ++++++++++++++----- 1 file changed, 43 insertions(+), 16 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/src/index.ts b/extensions/jupyterlab/connect_jupyterlab/src/index.ts index fc242f0e5..30bde71de 100644 --- a/extensions/jupyterlab/connect_jupyterlab/src/index.ts +++ b/extensions/jupyterlab/connect_jupyterlab/src/index.ts @@ -118,7 +118,8 @@ async function launchAgent( } class PublishingWidget extends Widget { - frame: HTMLIFrameElement; + currentFrame: HTMLIFrameElement | null = null; + frames: Map; message: HTMLDivElement; currentNotebook: NotebookPanel | null = null; docManager: IDocumentManager; @@ -133,14 +134,17 @@ class PublishingWidget extends Widget { super(); this.notebookURLs = new Map(); this.docManager = docManager; + this.frames = new Map(); const theme = themeManager.theme; this.isLightTheme = theme !== null && themeManager.isLight(theme); notebookTracker.currentChanged.connect((_, panel) => { - console.log('Switch to panel', panel); + // If panel is visible, switch to the agent for the new notebook this.currentNotebook = panel; - this.activate(); + if (!this.hasClass('lm-mod-hidden')) { + this.activate(); + } }); this.id = 'posit-publishing-ui'; @@ -149,11 +153,6 @@ class PublishingWidget extends Widget { // this.title.icon = LabIcon.resolveElement({ iconClass: 'posit-publish-icon' }); // nope this.addClass('posit-publishing-view'); - const frame = document.createElement('iframe'); - frame.classList.add('posit-publishing-frame'); - this.node.appendChild(frame); - this.frame = frame; - const message = document.createElement('div'); message.classList.add('posit-publishing-message-area'); message.textContent = 'Initializing; this message should be hidden.'; @@ -162,7 +161,7 @@ class PublishingWidget extends Widget { this.message = message; } - async getOrStartUI(): Promise { + async getOrStartUI(): Promise { if (!this.currentNotebook) { throw new Error('Open a notebook to publish it.'); } @@ -175,9 +174,18 @@ class PublishingWidget extends Widget { throw new Error('Error getting the notebook path.'); } const existingURL = this.notebookURLs.get(notebookPath); + const existingFrame = this.frames.get(notebookPath); + if (existingURL !== undefined) { console.log(`Using existing agent serving at ${existingURL}`); - return existingURL; + if (existingFrame) { + this.switchToFrame(existingFrame); + return; + } else { + console.error( + `Agent is running for ${notebookPath}, but there's no frame. Starting a new agent.` + ); + } } const kernel = await getKernel(this.currentNotebook); const pythonPath = await getKernelPythonPath(kernel); @@ -189,24 +197,43 @@ class PublishingWidget extends Widget { notebookPath, pythonPath, pythonVersion, - this.isLightTheme, + this.isLightTheme ); + const agentURL = agentInfo.url; console.log(`Publishing agent serving at ${agentURL}`); this.notebookURLs.set(notebookPath, agentURL); - return agentURL; + + if (existingFrame) { + this.switchToFrame(existingFrame); + } else { + const frame = document.createElement('iframe'); + frame.classList.add('posit-publishing-frame'); + frame.src = agentURL; + this.frames.set(notebookPath, frame); + this.node.appendChild(frame); + this.switchToFrame(frame); + } + } + + switchToFrame(frame: HTMLIFrameElement | null): void { + if (this.currentFrame) { + this.currentFrame.hidden = true; + } + if (frame) { + frame.hidden = false; + } + this.currentFrame = frame; } async onActivateRequest(msg: Message): Promise { try { - const url = await this.getOrStartUI(); + await this.getOrStartUI(); this.message.hidden = true; - this.frame.src = url; - this.frame.hidden = false; } catch (err) { this.message.textContent = '⛔️ ' + err; - this.frame.hidden = true; this.message.hidden = false; + this.switchToFrame(null); } } } From 756a06927041a951254aa1f552db86a06931e6fc Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Fri, 29 Sep 2023 10:17:23 -0400 Subject: [PATCH 056/100] lint --- extensions/jupyterlab/connect_jupyterlab/style/base.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/style/base.css b/extensions/jupyterlab/connect_jupyterlab/style/base.css index cbbb2fdce..d16f2ff47 100644 --- a/extensions/jupyterlab/connect_jupyterlab/style/base.css +++ b/extensions/jupyterlab/connect_jupyterlab/style/base.css @@ -20,7 +20,7 @@ height: 100%; border-width: 0; min-width: 500px !important; - position:relative; + position: relative; } .posit-publishing-frame { From d2b9cac2dc105e463ed3c5d957773a600bcfef77 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Fri, 29 Sep 2023 10:29:19 -0400 Subject: [PATCH 057/100] run python tests --- .github/workflows/pull-request.yaml | 3 +++ .../connect_jupyterlab/tests/test_handlers.py | 6 +++--- extensions/jupyterlab/connect_jupyterlab/justfile | 11 +++++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index 1aaefd406..f86dae5ce 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -717,3 +717,6 @@ jobs: - name: Validate extension code run: just validate + - + name: Test extension code + run: just test diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py index 1fb546b01..b588de0da 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py @@ -1,11 +1,11 @@ import json -async def test_get_example(jp_fetch): +async def test_get_publish(jp_fetch): # When - response = await jp_fetch("connect-jupyterlab", "get-example") + response = await jp_fetch("connect-jupyterlab", "publish") # Then assert response.code == 200 payload = json.loads(response.body) - assert payload == {"data": "This is /connect-jupyterlab/get-example endpoint!"} + assert payload == {"data": "GET /connect-jupyterlab/publish endpoint!"} diff --git a/extensions/jupyterlab/connect_jupyterlab/justfile b/extensions/jupyterlab/connect_jupyterlab/justfile index 0b2be007c..843a6c15d 100644 --- a/extensions/jupyterlab/connect_jupyterlab/justfile +++ b/extensions/jupyterlab/connect_jupyterlab/justfile @@ -15,3 +15,14 @@ validate-js: jlpm run lint:check validate: validate-js validate-python + +test: test-python test-js + +test-python: + JUPYTER_PLATFORM_DIRS=1 pytest -r ap \ + --cov --no-cov-on-fail \ + --cov-report=html \ + connect_jupyterlab + +test-js: + true From 5410dfa796c245142e122f091aa9cf55bd65ae98 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Fri, 29 Sep 2023 11:09:24 -0400 Subject: [PATCH 058/100] make conda environment elsewhere --- extensions/jupyterlab/connect_jupyterlab/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/README.md b/extensions/jupyterlab/connect_jupyterlab/README.md index 68a7238d5..758a8e701 100644 --- a/extensions/jupyterlab/connect_jupyterlab/README.md +++ b/extensions/jupyterlab/connect_jupyterlab/README.md @@ -57,8 +57,8 @@ The `jlpm` command is JupyterLab's pinned version of # Clone the repo to your local environment # Change directory to the connect_jupyterlab directory # Create environment -conda create -p ./env python=3.11 nodejs=18 -conda activate ./env +conda create -n labext python=3.11 nodejs=18 +conda activate labext # Install package in development mode pip install -e ".[test]" From 1fd4ab76dfd919a68af6e848fefba627cb6e95e8 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Fri, 29 Sep 2023 11:59:21 -0400 Subject: [PATCH 059/100] install test deps --- extensions/jupyterlab/connect_jupyterlab/justfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/justfile b/extensions/jupyterlab/connect_jupyterlab/justfile index 843a6c15d..06d68f79e 100644 --- a/extensions/jupyterlab/connect_jupyterlab/justfile +++ b/extensions/jupyterlab/connect_jupyterlab/justfile @@ -1,5 +1,5 @@ install: - pip install -e . + pip install -e '.[test]' install-python-tools: pip install 'black==23.*' 'flake8==6.*' 'mypy==1.5.*' 'jupyterlab==4.*' From 211e987c7db45f2917ec1ade65a01e6117e7906a Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Fri, 29 Sep 2023 13:03:04 -0400 Subject: [PATCH 060/100] run frontend tests --- extensions/jupyterlab/connect_jupyterlab/justfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/justfile b/extensions/jupyterlab/connect_jupyterlab/justfile index 06d68f79e..f472673a2 100644 --- a/extensions/jupyterlab/connect_jupyterlab/justfile +++ b/extensions/jupyterlab/connect_jupyterlab/justfile @@ -25,4 +25,4 @@ test-python: connect_jupyterlab test-js: - true + jlpm run test From d411dea038da9fcb5cd79c82496b7e31a9a466d2 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Fri, 29 Sep 2023 14:19:50 -0400 Subject: [PATCH 061/100] initial python tests --- .../connect_jupyterlab/__init__.py | 13 +-- .../connect_jupyterlab/handlers.py | 14 ++- .../connect_jupyterlab/tests/test_handlers.py | 93 ++++++++++++++++++- .../connect_jupyterlab/tests/test_init.py | 20 ++++ 4 files changed, 122 insertions(+), 18 deletions(-) create mode 100644 extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_init.py diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/__init__.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/__init__.py index 4f23beee3..878dca1f6 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/__init__.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/__init__.py @@ -1,15 +1,4 @@ -try: - from ._version import __version__ -except ImportError: - # Fallback when using the package in dev mode without installing - # in editable mode with pip. It is highly recommended to install - # the package from a stable release or in editable mode: - # https://pip.pypa.io/en/stable/topics/local-project-installs/#editable-installs - import warnings - - warnings.warn("Importing 'connect_jupyterlab' outside a proper installation.") - __version__ = "dev" - +from ._version import __version__ from .handlers import setup_handlers PACKAGE_NAME = "connect_jupyterlab" diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py index 06a15e016..683c9f40f 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py @@ -1,3 +1,4 @@ +import errno import json import logging import os @@ -14,6 +15,7 @@ base_url = None known_ports = {} +EXECUTABLE = "connect-client" class PublishHandler(APIHandler): @@ -99,10 +101,14 @@ def setup_handlers(web_app): def launch_ui( - notebookPath: str, pythonPath: str, pythonVersion: str, theme: str, log: logging.Logger + notebookPath: str, + pythonPath: str, + pythonVersion: str, + theme: str, + log: logging.Logger, ) -> str: args = [ - "connect-client", + EXECUTABLE, "publish-ui", notebookPath, "--python", @@ -118,8 +124,8 @@ def launch_ui( try: process = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=None, text=True) except OSError as exc: - if exc.errno == 2: - raise Exception("Could not find connect-client on PATH.") + if exc.errno == errno.ENOENT: + raise Exception(f"Could not find {EXECUTABLE} on PATH.") else: raise diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py index b588de0da..42a36487e 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py @@ -1,11 +1,100 @@ +import errno import json +import subprocess +from unittest.mock import Mock, patch + +from connect_jupyterlab import handlers async def test_get_publish(jp_fetch): - # When response = await jp_fetch("connect-jupyterlab", "publish") - # Then assert response.code == 200 payload = json.loads(response.body) assert payload == {"data": "GET /connect-jupyterlab/publish endpoint!"} + + +@patch("connect_jupyterlab.handlers.launch_ui") +async def test_post_publish(launch_ui, jp_fetch, jp_serverapp, jp_http_port, jp_base_url): + body = json.dumps( + { + "notebookPath": "notebooks/MyNotebook.ipynb", + "pythonPath": "/path/to/python", + "pythonVersion": "3.4.5", + "theme": "dark", + } + ) + launch_ui.return_value = "http://localhost:12345/?token=abc123" + response = await jp_fetch("connect-jupyterlab", "publish", method="POST", body=body) + + assert response.code == 200 + payload = json.loads(response.body) + expected_url = ( + f"http://127.0.0.1:{jp_http_port}{jp_base_url}connect-jupyterlab/ui/12345/?token=abc123" + ) + assert payload == {"url": expected_url} + + +@patch("subprocess.Popen") +async def test_launch_ui(popen): + log = Mock() + log.info = Mock() + + process = Mock() + process.stdout = Mock() + process.stdout.readline = Mock() + ui_url = "http://localhost:12345/?token=abc123" + process.stdout.readline.return_value = "http://localhost:12345/?token=abc123" + + popen.return_value = process + + url = handlers.launch_ui("notebooks/MyNotebook.ipynb", "/path/to/python", "3.4.5", "dark", log) + log.info.assert_called() + popen.assert_called_once_with( + [ + "connect-client", + "publish-ui", + "notebooks/MyNotebook.ipynb", + "--python", + "/path/to/python", + "--python-version", + "3.4.5", + "--theme", + "dark", + "-n", + "local", + ], + stdout=subprocess.PIPE, + stderr=None, + text=True, + ) + assert url == ui_url + + +@patch("subprocess.Popen") +async def test_launch_ui_no_executable(popen): + log = Mock() + log.info = Mock() + + err = OSError() + err.errno = errno.ENOENT + popen.side_effect = err + + try: + handlers.launch_ui("notebooks/MyNotebook.ipynb", "/path/to/python", "3.4.5", "dark", log) + except Exception as exc: + assert str(exc) == "Could not find connect-client on PATH." + + +@patch("subprocess.Popen") +async def test_launch_ui_err(popen): + log = Mock() + log.info = Mock() + + err = OSError() + popen.side_effect = err + + try: + handlers.launch_ui("notebooks/MyNotebook.ipynb", "/path/to/python", "3.4.5", "dark", log) + except Exception as exc: + assert exc == err diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_init.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_init.py new file mode 100644 index 000000000..680ab65b8 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_init.py @@ -0,0 +1,20 @@ +from .. import ( + _jupyter_labextension_paths, + _jupyter_server_extension_points, + PACKAGE_NAME, +) + + +def test_jupyter_labextension_paths(): + result = _jupyter_labextension_paths() + assert len(result) == 1 + path = result[0] + assert path["src"] == "labextension" + assert path["dest"] == PACKAGE_NAME + + +def test_jupyter_server_extension_points(): + result = _jupyter_server_extension_points() + assert len(result) == 1 + path = result[0] + assert path["module"] == PACKAGE_NAME From 2805450f78be6d533df2e7a9f7a1316a6d2a795e Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Fri, 29 Sep 2023 14:33:17 -0400 Subject: [PATCH 062/100] example non-python notebook --- .../connect_jupyterlab/notebooks/bash.ipynb | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 extensions/jupyterlab/connect_jupyterlab/notebooks/bash.ipynb diff --git a/extensions/jupyterlab/connect_jupyterlab/notebooks/bash.ipynb b/extensions/jupyterlab/connect_jupyterlab/notebooks/bash.ipynb new file mode 100644 index 000000000..b53bffe42 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/notebooks/bash.ipynb @@ -0,0 +1,27 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "c09c16e7-252d-422f-9ffe-82ff6dfc6063", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Bash", + "language": "bash", + "name": "bash" + }, + "language_info": { + "codemirror_mode": "shell", + "file_extension": ".sh", + "mimetype": "text/x-sh", + "name": "bash" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From efc01d31065fe36f19f410d50194b957905d98e9 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Fri, 29 Sep 2023 16:05:31 -0400 Subject: [PATCH 063/100] error test --- .../connect_jupyterlab/tests/test_handlers.py | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py index 42a36487e..391e65773 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py @@ -35,6 +35,26 @@ async def test_post_publish(launch_ui, jp_fetch, jp_serverapp, jp_http_port, jp_ assert payload == {"url": expected_url} +@patch("connect_jupyterlab.handlers.launch_ui") +async def test_post_publish_err(launch_ui, jp_fetch, jp_serverapp, jp_http_port, jp_base_url): + body = json.dumps( + { + "notebookPath": "notebooks/MyNotebook.ipynb", + "pythonPath": "/path/to/python", + "pythonVersion": "3.4.5", + "theme": "dark", + } + ) + err = "test error" + launch_ui.side_effect = Exception(err) + response = await jp_fetch( + "connect-jupyterlab", "publish", method="POST", body=body, raise_error=False + ) + + assert response.code == 500 + assert response.body == err.encode("utf-8") + + @patch("subprocess.Popen") async def test_launch_ui(popen): log = Mock() From c28df30d3f5fca83beafb27ab4b72a3645a87727 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Fri, 29 Sep 2023 16:41:21 -0400 Subject: [PATCH 064/100] proxy tests --- .../connect_jupyterlab/tests/test_handlers.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py index 391e65773..c1ee3a5ec 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py @@ -3,6 +3,10 @@ import subprocess from unittest.mock import Mock, patch +import jupyter_server_proxy +from tornado.httputil import HTTPHeaders, HTTPServerRequest +from tornado.httpclient import HTTPRequest, HTTPResponse + from connect_jupyterlab import handlers @@ -118,3 +122,40 @@ async def test_launch_ui_err(popen): handlers.launch_ui("notebooks/MyNotebook.ipynb", "/path/to/python", "3.4.5", "dark", log) except Exception as exc: assert exc == err + + +@patch("connect_jupyterlab.handlers.launch_ui") +@patch.object(jupyter_server_proxy.handlers.LocalProxyHandler, "proxy") +async def test_proxy(proxy, launch_ui, jp_fetch): + launch_ui.return_value = "http://localhost:12345/?token=abc123" + + async def proxy_response(port, proxied_path): + assert port == "12345" + assert proxied_path == "index.html" + + proxy.side_effect = proxy_response + response = await jp_fetch("connect-jupyterlab", "ui", "12345", "index.html") + assert response.code == 200 + + +async def test_proxy_invalid_path(jp_fetch): + response = await jp_fetch("connect-jupyterlab", "ui", "44444", "index.html", raise_error=False) + assert response.code == 400 + + +def test_rewrite_redirect(): + uri = "/connect-jupyterlab/ui/12345/?token=abc123" + req = HTTPServerRequest("GET", uri) + resp = HTTPResponse(HTTPRequest(uri), code=301, headers=HTTPHeaders(dict(Location="/"))) + handlers.UIHandler.rewrite(req, resp) + assert resp.headers["Location"] == "/connect-jupyterlab/ui/12345/" + + +def test_rewrite_cookie(): + uri = "/connect-jupyterlab/ui/12345/index.html" + req = HTTPServerRequest("GET", uri) + resp = HTTPResponse( + HTTPRequest(uri), code=200, headers=HTTPHeaders({"Set-Cookie": "session=my-session"}) + ) + handlers.UIHandler.rewrite(req, resp) + assert resp.headers["Set-Cookie"] == "session=my-session; Path=/connect-jupyterlab/ui/12345" From ea020b94289693ff295f73f0180c39d5e1546bf4 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Mon, 2 Oct 2023 08:21:03 -0400 Subject: [PATCH 065/100] no typing for jupyter_server_proxy --- .../connect_jupyterlab/tests/test_handlers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py index c1ee3a5ec..aa9f1cd85 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py @@ -3,7 +3,7 @@ import subprocess from unittest.mock import Mock, patch -import jupyter_server_proxy +import jupyter_server_proxy # type: ignore from tornado.httputil import HTTPHeaders, HTTPServerRequest from tornado.httpclient import HTTPRequest, HTTPResponse From 9b69fdc238d6fb8ea9fb3eace33f03c243a3354a Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Mon, 2 Oct 2023 08:43:44 -0400 Subject: [PATCH 066/100] reuse existing agents --- .../connect_jupyterlab/handlers.py | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py index 683c9f40f..e90f87289 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py @@ -5,25 +5,28 @@ import shlex import subprocess from urllib.parse import urlparse +from typing import Set, Dict, Tuple from jupyter_server.base.handlers import APIHandler from jupyter_server.utils import url_path_join from jupyter_server_proxy.handlers import LocalProxyHandler # type: ignore +from tornado.httpclient import HTTPResponse from tornado.httputil import HTTPServerRequest from tornado.web import authenticated -from tornado.httpclient import HTTPResponse base_url = None -known_ports = {} EXECUTABLE = "connect-client" +known_ports = set() # type: Set[int] +agentsByNotebookPath = {} # type: Dict[str, Tuple[subprocess.Popen, str]] + class PublishHandler(APIHandler): @authenticated def post(self) -> None: """post initiates the publishing process. Details TBD.""" self.log.info("Launching publishing UI") - data = self.get_json_body() + data = self.get_json_body() # type: Dict[str, str] notebookPath = os.path.abspath(data["notebookPath"]) pythonPath = data["pythonPath"] pythonVersion = data["pythonVersion"] @@ -107,6 +110,22 @@ def launch_ui( theme: str, log: logging.Logger, ) -> str: + processInfo = agentsByNotebookPath.get(notebookPath) + if processInfo is not None: + process, url = processInfo + if process.poll() is None: + # process is still running + log.info("Found existing agent for %s at %s", notebookPath, url) + return url + else: + # process has exited + log.info( + "Previous agent for %s exited with code %d; starting a new one", + notebookPath, + process.returncode, + ) + del agentsByNotebookPath[notebookPath] + args = [ EXECUTABLE, "publish-ui", @@ -132,9 +151,12 @@ def launch_ui( if process.stdout is None: # This should never happen because we requested stdout=subprocess.PIPE raise Exception("The launched process did not provide an output stream.") - # currently, URL is the first thing written to stdout + + # URL is the first line written to stdout url = process.stdout.readline().strip() + # remember this agent in case of UI refresh + agentsByNotebookPath[notebookPath] = (process, url) parsed = urlparse(url) - known_ports[parsed.port] = process + known_ports.add(parsed.port) return url From 6bd48decffd6af2d70bffe2cec82400fc8a02c8e Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Mon, 2 Oct 2023 09:01:03 -0400 Subject: [PATCH 067/100] tests --- .../connect_jupyterlab/tests/test_handlers.py | 101 ++++++++++++++++++ .../connect_jupyterlab/notebooks/Add.ipynb | 12 +-- 2 files changed, 103 insertions(+), 10 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py index aa9f1cd85..98f9c2257 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py @@ -61,6 +61,7 @@ async def test_post_publish_err(launch_ui, jp_fetch, jp_serverapp, jp_http_port, @patch("subprocess.Popen") async def test_launch_ui(popen): + handlers.agentsByNotebookPath = {} log = Mock() log.info = Mock() @@ -159,3 +160,103 @@ def test_rewrite_cookie(): ) handlers.UIHandler.rewrite(req, resp) assert resp.headers["Set-Cookie"] == "session=my-session; Path=/connect-jupyterlab/ui/12345" + + +@patch("subprocess.Popen") +async def test_launch_ui_reuse_agent(popen): + handlers.agentsByNotebookPath = {} + log = Mock() + log.info = Mock() + + process = Mock() + process.stdout = Mock() + process.stdout.readline = Mock() + process.poll.return_value = None + + ui_url = "http://localhost:12345/?token=abc123" + process.stdout.readline.return_value = "http://localhost:12345/?token=abc123" + + popen.return_value = process + + url = handlers.launch_ui("notebooks/MyNotebook.ipynb", "/path/to/python", "3.4.5", "dark", log) + url2 = handlers.launch_ui( + "notebooks/MyNotebook.ipynb", "/path/to/python", "3.4.5", "dark", log + ) + log.info.assert_called() + + # only one process is launched + popen.assert_called_once_with( + [ + "connect-client", + "publish-ui", + "notebooks/MyNotebook.ipynb", + "--python", + "/path/to/python", + "--python-version", + "3.4.5", + "--theme", + "dark", + "-n", + "local", + ], + stdout=subprocess.PIPE, + stderr=None, + text=True, + ) + assert url == ui_url + assert url2 == ui_url + + +@patch("subprocess.Popen") +async def test_launch_ui_cant_reuse_agent(popen): + handlers.agentsByNotebookPath = {} + log = Mock() + log.info = Mock() + + process = Mock() + process.stdout = Mock() + process.stdout.readline = Mock() + ui_url = "http://localhost:12345/?token=abc123" + process.stdout.readline.return_value = ui_url + + # process has exited + process.poll.return_value = 1 + popen.return_value = process + + # now call launch_ui twice + url = handlers.launch_ui("notebooks/MyNotebook.ipynb", "/path/to/python", "3.4.5", "dark", log) + + process2 = Mock() + process2.stdout = Mock() + process2.stdout.readline = Mock() + ui_url2 = "http://localhost:54321/?token=321bca" + process2.stdout.readline.return_value = ui_url2 + popen.return_value = process2 + + url2 = handlers.launch_ui( + "notebooks/MyNotebook.ipynb", "/path/to/python", "3.4.5", "dark", log + ) + + # two processes are launched + log.info.assert_called() + assert len(popen.call_args_list) == 2 + popen.assert_called_with( + [ + "connect-client", + "publish-ui", + "notebooks/MyNotebook.ipynb", + "--python", + "/path/to/python", + "--python-version", + "3.4.5", + "--theme", + "dark", + "-n", + "local", + ], + stdout=subprocess.PIPE, + stderr=None, + text=True, + ) + assert url == ui_url + assert url2 == ui_url2 diff --git a/extensions/jupyterlab/connect_jupyterlab/notebooks/Add.ipynb b/extensions/jupyterlab/connect_jupyterlab/notebooks/Add.ipynb index 60bb63309..294c9b3b2 100644 --- a/extensions/jupyterlab/connect_jupyterlab/notebooks/Add.ipynb +++ b/extensions/jupyterlab/connect_jupyterlab/notebooks/Add.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 3, + "execution_count": 1, "id": "b9ae1306-70c8-41b7-a600-ff81e75e1cb4", "metadata": {}, "outputs": [ @@ -12,7 +12,7 @@ "5" ] }, - "execution_count": 3, + "execution_count": 1, "metadata": {}, "output_type": "execute_result" } @@ -20,14 +20,6 @@ "source": [ "2+3" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "afe23670-b0f6-4ba1-8ef9-b0db1980adc8", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From a0060f2aa295f908a920079feec5060bd9c9097d Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Mon, 2 Oct 2023 10:22:55 -0400 Subject: [PATCH 068/100] lint --- .../connect_jupyterlab/connect_jupyterlab/handlers.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py index e90f87289..2c93547fb 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py @@ -17,8 +17,8 @@ base_url = None EXECUTABLE = "connect-client" -known_ports = set() # type: Set[int] -agentsByNotebookPath = {} # type: Dict[str, Tuple[subprocess.Popen, str]] +known_ports: Set[int] = set() +agentsByNotebookPath: Dict[str, Tuple[subprocess.Popen, str]] = {} class PublishHandler(APIHandler): @@ -26,7 +26,7 @@ class PublishHandler(APIHandler): def post(self) -> None: """post initiates the publishing process. Details TBD.""" self.log.info("Launching publishing UI") - data = self.get_json_body() # type: Dict[str, str] + data: Dict[str, str] = self.get_json_body() notebookPath = os.path.abspath(data["notebookPath"]) pythonPath = data["pythonPath"] pythonVersion = data["pythonVersion"] @@ -158,5 +158,10 @@ def launch_ui( # remember this agent in case of UI refresh agentsByNotebookPath[notebookPath] = (process, url) parsed = urlparse(url) + + if parsed.port is None: + # we should always have a port + raise Exception("The launched process did not bind to a port.") + known_ports.add(parsed.port) return url From a0d4d1c72830523e3b149d11924262ed3efe3b5b Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Mon, 2 Oct 2023 10:46:15 -0400 Subject: [PATCH 069/100] move dev dependencies to pyproject.toml --- .github/workflows/pull-request.yaml | 3 --- extensions/jupyterlab/connect_jupyterlab/README.md | 5 +++-- extensions/jupyterlab/connect_jupyterlab/justfile | 3 --- extensions/jupyterlab/connect_jupyterlab/pyproject.toml | 6 +++++- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index f86dae5ce..90e2c9933 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -708,9 +708,6 @@ jobs: - name: Install JupyterLab Python extension run: just install - - - name: Install Python tools - run: just install-python-tools - name: Install JS dependencies run: jlpm install diff --git a/extensions/jupyterlab/connect_jupyterlab/README.md b/extensions/jupyterlab/connect_jupyterlab/README.md index 758a8e701..e963c4950 100644 --- a/extensions/jupyterlab/connect_jupyterlab/README.md +++ b/extensions/jupyterlab/connect_jupyterlab/README.md @@ -60,8 +60,9 @@ The `jlpm` command is JupyterLab's pinned version of conda create -n labext python=3.11 nodejs=18 conda activate labext -# Install package in development mode -pip install -e ".[test]" +# Install Python package in development mode +just install + # Link your development version of the extension with JupyterLab jupyter labextension develop . --overwrite # Server extension must be manually installed in develop mode diff --git a/extensions/jupyterlab/connect_jupyterlab/justfile b/extensions/jupyterlab/connect_jupyterlab/justfile index f472673a2..5dc2763f6 100644 --- a/extensions/jupyterlab/connect_jupyterlab/justfile +++ b/extensions/jupyterlab/connect_jupyterlab/justfile @@ -1,9 +1,6 @@ install: pip install -e '.[test]' -install-python-tools: - pip install 'black==23.*' 'flake8==6.*' 'mypy==1.5.*' 'jupyterlab==4.*' - max_line_length := '99' validate-python: diff --git a/extensions/jupyterlab/connect_jupyterlab/pyproject.toml b/extensions/jupyterlab/connect_jupyterlab/pyproject.toml index c1b0dde32..1fe63f128 100644 --- a/extensions/jupyterlab/connect_jupyterlab/pyproject.toml +++ b/extensions/jupyterlab/connect_jupyterlab/pyproject.toml @@ -34,7 +34,11 @@ test = [ "pytest", "pytest-asyncio", "pytest-cov", - "pytest-jupyter[server]>=0.6.0" + "pytest-jupyter[server]>=0.6.0", + "black==23.*", + "flake8==6.*", + "mypy==1.5.*", + "jupyterlab==4.*" ] [tool.hatch.version] From 9793d5e43dd929f954ddaa1391df3334fcb83c7d Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Mon, 2 Oct 2023 14:38:48 -0400 Subject: [PATCH 070/100] wait for kernel if none yet --- .../jupyterlab/connect_jupyterlab/src/index.ts | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/src/index.ts b/extensions/jupyterlab/connect_jupyterlab/src/index.ts index 30bde71de..ac1b80519 100644 --- a/extensions/jupyterlab/connect_jupyterlab/src/index.ts +++ b/extensions/jupyterlab/connect_jupyterlab/src/index.ts @@ -50,11 +50,23 @@ async function runPython( return actualExpressionValue.slice(1, -1); } +async function sleep(seconds: number) { + return new Promise(resolve => setTimeout(resolve, seconds * 1000)); +} + async function getKernel( - notebookPanel: NotebookPanel + notebookPanel: NotebookPanel, + maxRetries: number ): Promise { const sessionContext = notebookPanel.sessionContext; - const kernel = sessionContext.session?.kernel; + let kernel = sessionContext.session?.kernel; + let retries = 0; + while (!kernel && retries < maxRetries) { + console.debug('No kernel yet; retrying'); + retries++; + await sleep(0.2); + kernel = sessionContext.session?.kernel; + } if (!kernel) { throw new Error('Session has no kernel.'); } @@ -187,7 +199,7 @@ class PublishingWidget extends Widget { ); } } - const kernel = await getKernel(this.currentNotebook); + const kernel = await getKernel(this.currentNotebook, 10); const pythonPath = await getKernelPythonPath(kernel); console.log('Kernel python path is', pythonPath); const pythonVersion = await getKernelPythonVersion(kernel); From f0ff6c0f8da168a45483da7a93b2ca5b87172ceb Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Wed, 4 Oct 2023 14:07:41 -0400 Subject: [PATCH 071/100] don't fail on empty notebooks --- internal/inspect/notebook.go | 5 +---- internal/inspect/notebook_test.go | 3 +-- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/internal/inspect/notebook.go b/internal/inspect/notebook.go index 524c7608f..c46fcdd51 100644 --- a/internal/inspect/notebook.go +++ b/internal/inspect/notebook.go @@ -4,7 +4,6 @@ package inspect import ( "encoding/json" - "errors" "fmt" "io" "strings" @@ -72,8 +71,6 @@ func getNotebookFileInputs(path util.Path) (string, error) { return getNotebookInputs(f) } -var errNoCellsInNotebook = errors.New("no cells found in notebook") - func getNotebookInputs(r io.Reader) (string, error) { decoder := json.NewDecoder(r) @@ -85,7 +82,7 @@ func getNotebookInputs(r io.Reader) (string, error) { } cells, ok := notebookContents["cells"].([]any) if !ok || len(cells) == 0 { - return "", errNoCellsInNotebook + return "", nil } combinedSource := []string{} for cellNum, rawCell := range cells { diff --git a/internal/inspect/notebook_test.go b/internal/inspect/notebook_test.go index 7f2cb5deb..4d4556660 100644 --- a/internal/inspect/notebook_test.go +++ b/internal/inspect/notebook_test.go @@ -86,8 +86,7 @@ func (s *NotebookDetectorSuite) TestGetNotebookFileInputsErr() { func (s *NotebookDetectorSuite) TestGetNotebookInputsNoCells() { path := util.NewPath("testdata", afero.NewOsFs()).Join("empty_notebook.ipynb.txt") inputs, err := getNotebookFileInputs(path) - s.NotNil(err) - s.ErrorIs(err, errNoCellsInNotebook) + s.NoError(err) s.Equal("", inputs) } From d4c880d894efdb22f0d81067cd7c3e7e9a432274 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 5 Oct 2023 08:42:47 -0400 Subject: [PATCH 072/100] remove vscode settings and gitignore it --- extensions/jupyterlab/connect_jupyterlab/.gitignore | 8 ++++++++ .../jupyterlab/connect_jupyterlab/.vscode/settings.json | 7 ------- 2 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 extensions/jupyterlab/connect_jupyterlab/.vscode/settings.json diff --git a/extensions/jupyterlab/connect_jupyterlab/.gitignore b/extensions/jupyterlab/connect_jupyterlab/.gitignore index 6fba71e52..b67463fc3 100644 --- a/extensions/jupyterlab/connect_jupyterlab/.gitignore +++ b/extensions/jupyterlab/connect_jupyterlab/.gitignore @@ -124,3 +124,11 @@ dmypy.json # Yarn cache .yarn/ + +# VS code (matching the repo root gitignore) +.vscode/* +!.vscode/recommended.settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets diff --git a/extensions/jupyterlab/connect_jupyterlab/.vscode/settings.json b/extensions/jupyterlab/connect_jupyterlab/.vscode/settings.json deleted file mode 100644 index 6ccdb4679..000000000 --- a/extensions/jupyterlab/connect_jupyterlab/.vscode/settings.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "[python]": { - "editor.defaultFormatter": "ms-python.black-formatter" - }, - "python.formatting.provider": "none", - "black-formatter.args": ["--line-length", "99"] -} From 9790d064106caea0810f155ed098bd7d3a0121ff Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 5 Oct 2023 16:43:44 -0400 Subject: [PATCH 073/100] provide a default title --- .../connect_jupyterlab/connect_jupyterlab/handlers.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py index 2c93547fb..59628dfb1 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py @@ -126,6 +126,11 @@ def launch_ui( ) del agentsByNotebookPath[notebookPath] + title = os.path.basename(notebookPath) + for suffix in (".ipynb", ".py"): + if title.endswith(suffix): + title = title[: -len(suffix)] + args = [ EXECUTABLE, "publish-ui", @@ -136,6 +141,8 @@ def launch_ui( pythonVersion, "--theme", theme, + "--title", + title, "-n", "local", # cheating, no target selection in the UI yet ] From fbc6871ccd31bb12c62e4a2f54eff93f347ca9d5 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 5 Oct 2023 16:46:22 -0400 Subject: [PATCH 074/100] title tests --- .../connect_jupyterlab/tests/test_handlers.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py index 98f9c2257..0e245a425 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py @@ -86,6 +86,8 @@ async def test_launch_ui(popen): "3.4.5", "--theme", "dark", + "--title", + "MyNotebook", "-n", "local", ], @@ -196,6 +198,8 @@ async def test_launch_ui_reuse_agent(popen): "3.4.5", "--theme", "dark", + "--title", + "MyNotebook", "-n", "local", ], @@ -251,6 +255,8 @@ async def test_launch_ui_cant_reuse_agent(popen): "3.4.5", "--theme", "dark", + "--title", + "MyNotebook", "-n", "local", ], From f429c7d35783bf068a26b3fd510aae7b5a73ce4b Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 12 Oct 2023 13:40:13 -0400 Subject: [PATCH 075/100] remove manual release instructions --- .../jupyterlab/connect_jupyterlab/RELEASE.md | 56 +------------------ 1 file changed, 2 insertions(+), 54 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/RELEASE.md b/extensions/jupyterlab/connect_jupyterlab/RELEASE.md index 9e4bd1607..2f2360d19 100644 --- a/extensions/jupyterlab/connect_jupyterlab/RELEASE.md +++ b/extensions/jupyterlab/connect_jupyterlab/RELEASE.md @@ -1,60 +1,8 @@ # Making a new release of connect_jupyterlab -The extension can be published to `PyPI` and `npm` manually or using the [Jupyter Releaser](https://github.com/jupyter-server/jupyter_releaser). +The extension can be published to `PyPI` and `npm` using the [Jupyter Releaser](https://github.com/jupyter-server/jupyter_releaser). -## Manual release - -### Python package - -This extension can be distributed as Python packages. All of the Python -packaging instructions are in the `pyproject.toml` file to wrap your extension in a -Python package. Before generating a package, you first need to install some tools: - -```bash -pip install build twine hatch -``` - -Bump the version using `hatch`. By default this will create a tag. -See the docs on [hatch-nodejs-version](https://github.com/agoose77/hatch-nodejs-version#semver) for details. - -```bash -hatch version -``` - -Make sure to clean up all the development files before building the package: - -```bash -jlpm clean:all -``` - -You could also clean up the local git repository: - -```bash -git clean -dfX -``` - -To create a Python source package (`.tar.gz`) and the binary package (`.whl`) in the `dist/` directory, do: - -```bash -python -m build -``` - -> `python setup.py sdist bdist_wheel` is deprecated and will not work for this package. - -Then to upload the package to PyPI, do: - -```bash -twine upload dist/* -``` - -### NPM package - -To publish the frontend part of the extension as a NPM package, do: - -```bash -npm login -npm publish --access public -``` +This will be implemented in a CI workflow. ## Automated releases with the Jupyter Releaser From 4236f6c99ee0ae3cf1a297881f5f867da18a6fb7 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 12 Oct 2023 13:43:55 -0400 Subject: [PATCH 076/100] remove Playwright test setup --- .../connect_jupyterlab/ui-tests/README.md | 161 +----------------- .../connect_jupyterlab/ui-tests/package.json | 15 -- .../ui-tests/playwright.config.js | 14 -- .../ui-tests/tests/connect_jupyterlab.spec.ts | 23 --- 4 files changed, 1 insertion(+), 212 deletions(-) delete mode 100644 extensions/jupyterlab/connect_jupyterlab/ui-tests/package.json delete mode 100644 extensions/jupyterlab/connect_jupyterlab/ui-tests/playwright.config.js delete mode 100644 extensions/jupyterlab/connect_jupyterlab/ui-tests/tests/connect_jupyterlab.spec.ts diff --git a/extensions/jupyterlab/connect_jupyterlab/ui-tests/README.md b/extensions/jupyterlab/connect_jupyterlab/ui-tests/README.md index dbe6e8aa5..4d1399587 100644 --- a/extensions/jupyterlab/connect_jupyterlab/ui-tests/README.md +++ b/extensions/jupyterlab/connect_jupyterlab/ui-tests/README.md @@ -2,166 +2,7 @@ This folder contains the integration tests of the extension. -They are defined using [Playwright](https://playwright.dev/docs/intro) test runner -and [Galata](https://github.com/jupyterlab/jupyterlab/tree/master/galata) helper. - -The Playwright configuration is defined in [playwright.config.js](./playwright.config.js). +We will be using Cypress for the integration tests. The JupyterLab server configuration to use for the integration test is defined in [jupyter_server_test_config.py](./jupyter_server_test_config.py). - -The default configuration will produce video for failing tests and an HTML report. - -> There is a new experimental UI mode that you may fall in love with; see [that video](https://www.youtube.com/watch?v=jF0yA-JLQW0). - -## Run the tests - -> All commands are assumed to be executed from the root directory - -To run the tests, you need to: - -1. Compile the extension: - -```sh -jlpm install -jlpm build:prod -``` - -> Check the extension is installed in JupyterLab. - -2. Install test dependencies (needed only once): - -```sh -cd ./ui-tests -jlpm install -jlpm playwright install -cd .. -``` - -3. Execute the [Playwright](https://playwright.dev/docs/intro) tests: - -```sh -cd ./ui-tests -jlpm playwright test -``` - -Test results will be shown in the terminal. In case of any test failures, the test report -will be opened in your browser at the end of the tests execution; see -[Playwright documentation](https://playwright.dev/docs/test-reporters#html-reporter) -for configuring that behavior. - -## Update the tests snapshots - -> All commands are assumed to be executed from the root directory - -If you are comparing snapshots to validate your tests, you may need to update -the reference snapshots stored in the repository. To do that, you need to: - -1. Compile the extension: - -```sh -jlpm install -jlpm build:prod -``` - -> Check the extension is installed in JupyterLab. - -2. Install test dependencies (needed only once): - -```sh -cd ./ui-tests -jlpm install -jlpm playwright install -cd .. -``` - -3. Execute the [Playwright](https://playwright.dev/docs/intro) command: - -```sh -cd ./ui-tests -jlpm playwright test -u -``` - -> Some discrepancy may occurs between the snapshots generated on your computer and -> the one generated on the CI. To ease updating the snapshots on a PR, you can -> type `please update playwright snapshots` to trigger the update by a bot on the CI. -> Once the bot has computed new snapshots, it will commit them to the PR branch. - -## Create tests - -> All commands are assumed to be executed from the root directory - -To create tests, the easiest way is to use the code generator tool of playwright: - -1. Compile the extension: - -```sh -jlpm install -jlpm build:prod -``` - -> Check the extension is installed in JupyterLab. - -2. Install test dependencies (needed only once): - -```sh -cd ./ui-tests -jlpm install -jlpm playwright install -cd .. -``` - -3. Start the server: - -```sh -cd ./ui-tests -jlpm start -``` - -4. Execute the [Playwright code generator](https://playwright.dev/docs/codegen) in **another terminal**: - -```sh -cd ./ui-tests -jlpm playwright codegen localhost:8888 -``` - -## Debug tests - -> All commands are assumed to be executed from the root directory - -To debug tests, a good way is to use the inspector tool of playwright: - -1. Compile the extension: - -```sh -jlpm install -jlpm build:prod -``` - -> Check the extension is installed in JupyterLab. - -2. Install test dependencies (needed only once): - -```sh -cd ./ui-tests -jlpm install -jlpm playwright install -cd .. -``` - -3. Execute the Playwright tests in [debug mode](https://playwright.dev/docs/debug): - -```sh -cd ./ui-tests -jlpm playwright test --debug -``` - -## Upgrade Playwright and the browsers - -To update the web browser versions, you must update the package `@playwright/test`: - -```sh -cd ./ui-tests -jlpm up "@playwright/test" -jlpm playwright install -``` diff --git a/extensions/jupyterlab/connect_jupyterlab/ui-tests/package.json b/extensions/jupyterlab/connect_jupyterlab/ui-tests/package.json deleted file mode 100644 index da77528c9..000000000 --- a/extensions/jupyterlab/connect_jupyterlab/ui-tests/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "connect_jupyterlab-ui-tests", - "version": "1.0.0", - "description": "JupyterLab connect_jupyterlab Integration Tests", - "private": true, - "scripts": { - "start": "jupyter lab --config jupyter_server_test_config.py", - "test": "jlpm playwright test", - "test:update": "jlpm playwright test --update-snapshots" - }, - "devDependencies": { - "@jupyterlab/galata": "^5.0.5", - "@playwright/test": "^1.37.0" - } -} diff --git a/extensions/jupyterlab/connect_jupyterlab/ui-tests/playwright.config.js b/extensions/jupyterlab/connect_jupyterlab/ui-tests/playwright.config.js deleted file mode 100644 index 9ece6fa11..000000000 --- a/extensions/jupyterlab/connect_jupyterlab/ui-tests/playwright.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Configuration for Playwright using default from @jupyterlab/galata - */ -const baseConfig = require('@jupyterlab/galata/lib/playwright-config'); - -module.exports = { - ...baseConfig, - webServer: { - command: 'jlpm start', - url: 'http://localhost:8888/lab', - timeout: 120 * 1000, - reuseExistingServer: !process.env.CI - } -}; diff --git a/extensions/jupyterlab/connect_jupyterlab/ui-tests/tests/connect_jupyterlab.spec.ts b/extensions/jupyterlab/connect_jupyterlab/ui-tests/tests/connect_jupyterlab.spec.ts deleted file mode 100644 index 4527f38eb..000000000 --- a/extensions/jupyterlab/connect_jupyterlab/ui-tests/tests/connect_jupyterlab.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { expect, test } from '@jupyterlab/galata'; - -/** - * Don't load JupyterLab webpage before running the tests. - * This is required to ensure we capture all log messages. - */ -test.use({ autoGoto: false }); - -test('should emit an activation console message', async ({ page }) => { - const logs: string[] = []; - - page.on('console', message => { - logs.push(message.text()); - }); - - await page.goto(); - - expect( - logs.filter( - s => s === 'JupyterLab extension connect_jupyterlab is activated!' - ) - ).toHaveLength(1); -}); From 0a1331c2b1ce70bc1d916e7cbf47c28a00f89541 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 12 Oct 2023 13:45:12 -0400 Subject: [PATCH 077/100] remove .copier-answers.yml --- .../connect_jupyterlab/.copier-answers.yml | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 extensions/jupyterlab/connect_jupyterlab/.copier-answers.yml diff --git a/extensions/jupyterlab/connect_jupyterlab/.copier-answers.yml b/extensions/jupyterlab/connect_jupyterlab/.copier-answers.yml deleted file mode 100644 index 30ff6c9b1..000000000 --- a/extensions/jupyterlab/connect_jupyterlab/.copier-answers.yml +++ /dev/null @@ -1,19 +0,0 @@ -# Changes here will be overwritten by Copier; NEVER EDIT MANUALLY -_commit: v4.2.0 -_src_path: https://github.com/jupyterlab/extension-template -author_email: mike@posit.co -author_name: Michael Marchetti -data_format: string -file_extension: '' -has_binder: false -has_settings: false -kind: server -labextension_name: connect_jupyterlab -mimetype: '' -mimetype_name: '' -project_short_description: A JupyterLab extension for publishing to Posit Connect. -python_name: connect_jupyterlab -repository: https://github.com/rstudio/publishing-client -test: true -viewer_name: '' - From 24076f502b3f1787fea4ba7a519fe1698886419f Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 12 Oct 2023 13:47:37 -0400 Subject: [PATCH 078/100] remove playwright setup from example CI build.yml --- .../.github/workflows/build.yml | 27 +------------------ 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/.github/workflows/build.yml b/extensions/jupyterlab/connect_jupyterlab/.github/workflows/build.yml index c05ff42f5..c1df9d927 100644 --- a/extensions/jupyterlab/connect_jupyterlab/.github/workflows/build.yml +++ b/extensions/jupyterlab/connect_jupyterlab/.github/workflows/build.yml @@ -94,9 +94,6 @@ jobs: needs: build runs-on: ubuntu-latest - env: - PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/pw-browsers - steps: - name: Checkout uses: actions/checkout@v3 @@ -116,34 +113,12 @@ jobs: - name: Install dependencies working-directory: ui-tests - env: - PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 run: jlpm install - - name: Set up browser cache - uses: actions/cache@v3 - with: - path: | - ${{ github.workspace }}/pw-browsers - key: ${{ runner.os }}-${{ hashFiles('ui-tests/yarn.lock') }} - - - name: Install browser - run: jlpm playwright install chromium - working-directory: ui-tests - - name: Execute integration tests working-directory: ui-tests run: | - jlpm playwright test - - - name: Upload Playwright Test report - if: always() - uses: actions/upload-artifact@v3 - with: - name: connect_jupyterlab-playwright-tests - path: | - ui-tests/test-results - ui-tests/playwright-report + tbd check_links: name: Check Links From 550714010d8688246d95515f5bd121d2ac1d3ddb Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 12 Oct 2023 13:49:50 -0400 Subject: [PATCH 079/100] remove unused example CI steps --- .../.github/workflows/enforce-label.yml | 13 ----- .../workflows/update-integration-tests.yml | 47 ------------------- 2 files changed, 60 deletions(-) delete mode 100644 extensions/jupyterlab/connect_jupyterlab/.github/workflows/enforce-label.yml delete mode 100644 extensions/jupyterlab/connect_jupyterlab/.github/workflows/update-integration-tests.yml diff --git a/extensions/jupyterlab/connect_jupyterlab/.github/workflows/enforce-label.yml b/extensions/jupyterlab/connect_jupyterlab/.github/workflows/enforce-label.yml deleted file mode 100644 index 725feab5c..000000000 --- a/extensions/jupyterlab/connect_jupyterlab/.github/workflows/enforce-label.yml +++ /dev/null @@ -1,13 +0,0 @@ -name: Enforce PR label - -on: - pull_request: - types: [labeled, unlabeled, opened, edited, synchronize] -jobs: - enforce-label: - runs-on: ubuntu-latest - permissions: - pull-requests: write - steps: - - name: enforce-triage-label - uses: jupyterlab/maintainer-tools/.github/actions/enforce-label@v1 diff --git a/extensions/jupyterlab/connect_jupyterlab/.github/workflows/update-integration-tests.yml b/extensions/jupyterlab/connect_jupyterlab/.github/workflows/update-integration-tests.yml deleted file mode 100644 index 4426dcad6..000000000 --- a/extensions/jupyterlab/connect_jupyterlab/.github/workflows/update-integration-tests.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: Update Playwright Snapshots - -on: - issue_comment: - types: [created, edited] - -permissions: - contents: write - pull-requests: write - -jobs: - update-snapshots: - if: ${{ github.event.issue.pull_request && contains(github.event.comment.body, 'please update playwright snapshots') }} - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - token: ${{ secrets.GITHUB_TOKEN }} - - - name: Configure git to use https - run: git config --global hub.protocol https - - - name: Checkout the branch from the PR that triggered the job - run: hub pr checkout ${{ github.event.issue.number }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Base Setup - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 - - - name: Install dependencies - run: python -m pip install -U "jupyterlab>=4.0.0,<5" - - - name: Install extension - run: | - set -eux - jlpm - python -m pip install . - - - uses: jupyterlab/maintainer-tools/.github/actions/update-snapshots@v1 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - # Playwright knows how to start JupyterLab server - start_server_script: 'null' - test_folder: ui-tests From 66ad6387695b11f00469584c11385816ba423cbd Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 12 Oct 2023 13:50:15 -0400 Subject: [PATCH 080/100] add README to example github workflow directory --- .../jupyterlab/connect_jupyterlab/.github/workflows/README.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 extensions/jupyterlab/connect_jupyterlab/.github/workflows/README.md diff --git a/extensions/jupyterlab/connect_jupyterlab/.github/workflows/README.md b/extensions/jupyterlab/connect_jupyterlab/.github/workflows/README.md new file mode 100644 index 000000000..9afd5df86 --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/.github/workflows/README.md @@ -0,0 +1,4 @@ +These workflow files come with the JupyterLab extension template. +We've removed some parts we don't intend to use. The rest +are left here as a reference for when we build the extension +in CI. From e48d0e8eda517bb0319fe15299a1cc65e3d5ca99 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 12 Oct 2023 13:50:35 -0400 Subject: [PATCH 081/100] remove playwright from README --- extensions/jupyterlab/connect_jupyterlab/README.md | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/README.md b/extensions/jupyterlab/connect_jupyterlab/README.md index e963c4950..867633a3b 100644 --- a/extensions/jupyterlab/connect_jupyterlab/README.md +++ b/extensions/jupyterlab/connect_jupyterlab/README.md @@ -130,14 +130,3 @@ To execute them, execute: jlpm jlpm test ``` - -#### Integration tests - -This extension uses [Playwright](https://playwright.dev/docs/intro) for the integration tests (aka user level tests). -More precisely, the JupyterLab helper [Galata](https://github.com/jupyterlab/jupyterlab/tree/master/galata) is used to handle testing the extension in JupyterLab. - -More information are provided within the [ui-tests](./ui-tests/README.md) README. - -### Packaging the extension - -See [RELEASE](RELEASE.md) From 640f8e656a4c7a3508c5cbf69cb2766f906ad39b Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 12 Oct 2023 13:51:12 -0400 Subject: [PATCH 082/100] remove unused GET handler --- .../connect_jupyterlab/connect_jupyterlab/handlers.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py index 59628dfb1..e9844feae 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py @@ -48,11 +48,6 @@ def post(self) -> None: self.set_status(500) self.finish(str(exc)) - @authenticated - def get(self) -> None: - """get returns the status of the publishing process. Details TBD.""" - self.finish(json.dumps({"data": "GET /connect-jupyterlab/publish endpoint!"})) - class UIHandler(LocalProxyHandler): """UIHandler proxies requests to a running agent instance. From 6b715213f3c50577192a78b750bc461f38212895 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 12 Oct 2023 13:51:48 -0400 Subject: [PATCH 083/100] deploy to dogfood by default for now --- .../connect_jupyterlab/connect_jupyterlab/handlers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py index e9844feae..5650ee411 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/handlers.py @@ -139,7 +139,7 @@ def launch_ui( "--title", title, "-n", - "local", # cheating, no target selection in the UI yet + "dogfood", # cheating, no target selection in the UI yet ] log.info("Starting: %s", " ".join(map(shlex.quote, args))) try: From de70a46ccaa7f6f1f96c97b66868a40ced64cd29 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 12 Oct 2023 13:53:47 -0400 Subject: [PATCH 084/100] add note about putting agent on PATH --- extensions/jupyterlab/connect_jupyterlab/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/extensions/jupyterlab/connect_jupyterlab/README.md b/extensions/jupyterlab/connect_jupyterlab/README.md index 867633a3b..804ef2b33 100644 --- a/extensions/jupyterlab/connect_jupyterlab/README.md +++ b/extensions/jupyterlab/connect_jupyterlab/README.md @@ -19,6 +19,11 @@ To install the extension, execute: pip install connect_jupyterlab ``` +Ensure that the agent executable is on PATH, e.g. +``` +export PATH=$(pwd)/bin/darwin-amd64:$PATH +``` + ## Uninstall To remove the extension, execute: From 630e1470d7455db9e918652f94aa46b1a57f4845 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 12 Oct 2023 13:54:20 -0400 Subject: [PATCH 085/100] remove duplicate dependency on jupyterlab --- extensions/jupyterlab/connect_jupyterlab/pyproject.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/pyproject.toml b/extensions/jupyterlab/connect_jupyterlab/pyproject.toml index 1fe63f128..fcb8a2a4e 100644 --- a/extensions/jupyterlab/connect_jupyterlab/pyproject.toml +++ b/extensions/jupyterlab/connect_jupyterlab/pyproject.toml @@ -38,7 +38,6 @@ test = [ "black==23.*", "flake8==6.*", "mypy==1.5.*", - "jupyterlab==4.*" ] [tool.hatch.version] From 84be05de566a9c07b6c725458aa1cf24edbe8957 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 12 Oct 2023 20:09:42 -0400 Subject: [PATCH 086/100] move kernel functions to a separate file --- .../connect_jupyterlab/src/index.ts | 96 +------------------ .../connect_jupyterlab/src/kernel.ts | 84 ++++++++++++++++ 2 files changed, 89 insertions(+), 91 deletions(-) create mode 100644 extensions/jupyterlab/connect_jupyterlab/src/kernel.ts diff --git a/extensions/jupyterlab/connect_jupyterlab/src/index.ts b/extensions/jupyterlab/connect_jupyterlab/src/index.ts index ac1b80519..ec7231eb9 100644 --- a/extensions/jupyterlab/connect_jupyterlab/src/index.ts +++ b/extensions/jupyterlab/connect_jupyterlab/src/index.ts @@ -6,105 +6,19 @@ import { import { ICommandPalette, IThemeManager } from '@jupyterlab/apputils'; import { IDocumentManager } from '@jupyterlab/docmanager'; import { INotebookTracker, NotebookPanel } from '@jupyterlab/notebook'; -import { KernelMessage } from '@jupyterlab/services'; -import { IKernelConnection } from '@jupyterlab/services/lib/kernel/kernel'; -import { JSONObject } from '@lumino/coreutils'; import { Message } from '@lumino/messaging'; import { Widget } from '@lumino/widgets'; import { requestAPI } from './handler'; +import { + getKernel, + getKernelPythonPath, + getKernelPythonVersion +} from './kernel'; const PACKAGE_NAME = 'connect_jupyterlab'; const COMMAND_NAME = 'posit:publish'; -async function runPython( - toRun: string, - toEvaluate: string, - kernel: IKernelConnection -): Promise { - const requestContent: KernelMessage.IExecuteRequestMsg['content'] = { - code: toRun, - user_expressions: { - value: toEvaluate - }, - stop_on_error: false - }; - - const future = kernel.requestExecute(requestContent, false); - const replyMessage = await future.done; - const content = replyMessage.content; - - if (!content) { - throw new Error('Running python code: no content returned.'); - } - if (content.status !== 'ok') { - throw new Error('Running python code: status = ' + content.status); - } - const value = content.user_expressions['value'] as JSONObject; - if (value['status'] !== 'ok') { - throw new Error('Running python code: value status = ' + value['status']); - } - const data = value['data'] as JSONObject; - const actualExpressionValue = data['text/plain'] as string; - // remove quotes enclosing the string - return actualExpressionValue.slice(1, -1); -} - -async function sleep(seconds: number) { - return new Promise(resolve => setTimeout(resolve, seconds * 1000)); -} - -async function getKernel( - notebookPanel: NotebookPanel, - maxRetries: number -): Promise { - const sessionContext = notebookPanel.sessionContext; - let kernel = sessionContext.session?.kernel; - let retries = 0; - while (!kernel && retries < maxRetries) { - console.debug('No kernel yet; retrying'); - retries++; - await sleep(0.2); - kernel = sessionContext.session?.kernel; - } - if (!kernel) { - throw new Error('Session has no kernel.'); - } - console.info('Using kernel', kernel.id); - const kernelLanguage = (await kernel.info).language_info.name; - console.info('Kernel language:', kernelLanguage); - if (kernelLanguage !== 'python') { - throw new Error( - "Can't publish this notebook because it doesn't use the Python kernel" - ); - } - return kernel; -} - -async function getKernelPythonPath(kernel: IKernelConnection): Promise { - return await runPython('import sys', 'sys.executable', kernel); -} - -async function getKernelPythonVersion( - kernel: IKernelConnection -): Promise { - return await runPython( - 'import sys', - '".".join(map(str, sys.version_info[:3]))', - kernel - ); -} - -// class PublishStatus { -// busy: boolean = false; -// } - -// async function getPublishStatus(): Promise { -// const data = await requestAPI('publish'); -// console.log(data); -// return data; -// } - class PublishResponse { url: string = ''; } diff --git a/extensions/jupyterlab/connect_jupyterlab/src/kernel.ts b/extensions/jupyterlab/connect_jupyterlab/src/kernel.ts new file mode 100644 index 000000000..02955cede --- /dev/null +++ b/extensions/jupyterlab/connect_jupyterlab/src/kernel.ts @@ -0,0 +1,84 @@ +import { NotebookPanel } from '@jupyterlab/notebook'; +import { KernelMessage } from '@jupyterlab/services'; +import { IKernelConnection } from '@jupyterlab/services/lib/kernel/kernel'; +import { JSONObject } from '@lumino/coreutils'; + +export async function runPython( + toRun: string, + toEvaluate: string, + kernel: IKernelConnection +): Promise { + const requestContent: KernelMessage.IExecuteRequestMsg['content'] = { + code: toRun, + user_expressions: { + value: toEvaluate + }, + stop_on_error: false + }; + + const future = kernel.requestExecute(requestContent, false); + const replyMessage = await future.done; + const content = replyMessage.content; + + if (!content) { + throw new Error('Running python code: no content returned.'); + } + if (content.status !== 'ok') { + throw new Error('Running python code: status = ' + content.status); + } + const value = content.user_expressions['value'] as JSONObject; + if (value['status'] !== 'ok') { + throw new Error('Running python code: value status = ' + value['status']); + } + const data = value['data'] as JSONObject; + const actualExpressionValue = data['text/plain'] as string; + // remove quotes enclosing the string + return actualExpressionValue.slice(1, -1); +} + +async function sleep(seconds: number) { + return new Promise(resolve => setTimeout(resolve, seconds * 1000)); +} + +export async function getKernel( + notebookPanel: NotebookPanel, + maxRetries: number +): Promise { + const sessionContext = notebookPanel.sessionContext; + let kernel = sessionContext.session?.kernel; + let retries = 0; + while (!kernel && retries < maxRetries) { + console.debug('No kernel yet; retrying'); + retries++; + await sleep(0.2); + kernel = sessionContext.session?.kernel; + } + if (!kernel) { + throw new Error('Session has no kernel.'); + } + console.info('Using kernel', kernel.id); + const kernelLanguage = (await kernel.info).language_info.name; + console.info('Kernel language:', kernelLanguage); + if (kernelLanguage !== 'python') { + throw new Error( + "Can't publish this notebook because it doesn't use the Python kernel" + ); + } + return kernel; +} + +export async function getKernelPythonPath( + kernel: IKernelConnection +): Promise { + return await runPython('import sys', 'sys.executable', kernel); +} + +export async function getKernelPythonVersion( + kernel: IKernelConnection +): Promise { + return await runPython( + 'import sys', + '".".join(map(str, sys.version_info[:3]))', + kernel + ); +} From 4af932ba360275862151ac497c6d2331d0c5c726 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 12 Oct 2023 20:21:39 -0400 Subject: [PATCH 087/100] install js deps first --- .github/workflows/pull-request.yaml | 6 +++--- extensions/jupyterlab/connect_jupyterlab/.prettierignore | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index 90e2c9933..f272a8c8a 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -705,12 +705,12 @@ jobs: python -m venv ./env . env/bin/activate echo PATH=$PATH >> $GITHUB_ENV - - - name: Install JupyterLab Python extension - run: just install - name: Install JS dependencies run: jlpm install + - + name: Install JupyterLab Python extension + run: just install - name: Validate extension code run: just validate diff --git a/extensions/jupyterlab/connect_jupyterlab/.prettierignore b/extensions/jupyterlab/connect_jupyterlab/.prettierignore index 6322dc9f1..9cedf0613 100644 --- a/extensions/jupyterlab/connect_jupyterlab/.prettierignore +++ b/extensions/jupyterlab/connect_jupyterlab/.prettierignore @@ -4,3 +4,4 @@ node_modules **/package.json !/package.json connect_jupyterlab +*.md From 2a643a7abad89e9198a4e2456442d7eea7dea4b7 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Thu, 12 Oct 2023 20:25:37 -0400 Subject: [PATCH 088/100] Revert "install js deps first" This reverts commit 4af932ba360275862151ac497c6d2331d0c5c726. --- .github/workflows/pull-request.yaml | 6 +++--- extensions/jupyterlab/connect_jupyterlab/.prettierignore | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index f272a8c8a..90e2c9933 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -705,12 +705,12 @@ jobs: python -m venv ./env . env/bin/activate echo PATH=$PATH >> $GITHUB_ENV - - - name: Install JS dependencies - run: jlpm install - name: Install JupyterLab Python extension run: just install + - + name: Install JS dependencies + run: jlpm install - name: Validate extension code run: just validate diff --git a/extensions/jupyterlab/connect_jupyterlab/.prettierignore b/extensions/jupyterlab/connect_jupyterlab/.prettierignore index 9cedf0613..6322dc9f1 100644 --- a/extensions/jupyterlab/connect_jupyterlab/.prettierignore +++ b/extensions/jupyterlab/connect_jupyterlab/.prettierignore @@ -4,4 +4,3 @@ node_modules **/package.json !/package.json connect_jupyterlab -*.md From f08efeb48542dc85b0716a7a514ca2e62d19a40f Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Fri, 13 Oct 2023 09:05:11 -0400 Subject: [PATCH 089/100] setup python and node --- .github/workflows/pull-request.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index 90e2c9933..b885525f3 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -700,6 +700,12 @@ jobs: uses: extractions/setup-just@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - uses: actions/setup-python@v4 + with: + python-version: '3.11' + - uses: actions/setup-node@v3 + with: + node-version: '18.x' - name: Create virtualenv run: | python -m venv ./env From 197f2d951dc1eb510a32ebf86cf2a0759bbeceff Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Fri, 13 Oct 2023 09:46:43 -0400 Subject: [PATCH 090/100] remove virtualenv --- .github/workflows/pull-request.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index b885525f3..f9956220f 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -706,11 +706,6 @@ jobs: - uses: actions/setup-node@v3 with: node-version: '18.x' - - name: Create virtualenv - run: | - python -m venv ./env - . env/bin/activate - echo PATH=$PATH >> $GITHUB_ENV - name: Install JupyterLab Python extension run: just install From 789d1836ef1dfc2490482811e3a0ad22cb215336 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Fri, 13 Oct 2023 10:41:07 -0400 Subject: [PATCH 091/100] preinstall JupyterLab --- .github/workflows/pull-request.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index f9956220f..77d9461b4 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -706,6 +706,9 @@ jobs: - uses: actions/setup-node@v3 with: node-version: '18.x' + - + name: Install JupyterLab + run: pip install 'jupyterlab==4.*' - name: Install JupyterLab Python extension run: just install From 950f0c8ebf57d5d2508895300bc028fc366f6270 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Fri, 13 Oct 2023 12:12:27 -0400 Subject: [PATCH 092/100] no prettier for markdown files --- extensions/jupyterlab/connect_jupyterlab/.prettierignore | 1 + 1 file changed, 1 insertion(+) diff --git a/extensions/jupyterlab/connect_jupyterlab/.prettierignore b/extensions/jupyterlab/connect_jupyterlab/.prettierignore index 6322dc9f1..9cedf0613 100644 --- a/extensions/jupyterlab/connect_jupyterlab/.prettierignore +++ b/extensions/jupyterlab/connect_jupyterlab/.prettierignore @@ -4,3 +4,4 @@ node_modules **/package.json !/package.json connect_jupyterlab +*.md From b64107f514b96a0cbd2fe5d2cfbd1ef597e3082b Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Fri, 13 Oct 2023 12:14:29 -0400 Subject: [PATCH 093/100] update test for default server --- .../connect_jupyterlab/tests/test_handlers.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py index 0e245a425..cb165d800 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py @@ -89,7 +89,7 @@ async def test_launch_ui(popen): "--title", "MyNotebook", "-n", - "local", + "dogfood", ], stdout=subprocess.PIPE, stderr=None, @@ -201,7 +201,7 @@ async def test_launch_ui_reuse_agent(popen): "--title", "MyNotebook", "-n", - "local", + "dogfood", ], stdout=subprocess.PIPE, stderr=None, @@ -258,7 +258,7 @@ async def test_launch_ui_cant_reuse_agent(popen): "--title", "MyNotebook", "-n", - "local", + "dogfood", ], stdout=subprocess.PIPE, stderr=None, From 2a044c28104cbaa64bbb15adb8da2dbfbeccd607 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Fri, 13 Oct 2023 12:52:21 -0400 Subject: [PATCH 094/100] remove test for GET endpoint --- .../connect_jupyterlab/tests/test_handlers.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py index cb165d800..bf8a3b300 100644 --- a/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py +++ b/extensions/jupyterlab/connect_jupyterlab/connect_jupyterlab/tests/test_handlers.py @@ -10,14 +10,6 @@ from connect_jupyterlab import handlers -async def test_get_publish(jp_fetch): - response = await jp_fetch("connect-jupyterlab", "publish") - - assert response.code == 200 - payload = json.loads(response.body) - assert payload == {"data": "GET /connect-jupyterlab/publish endpoint!"} - - @patch("connect_jupyterlab.handlers.launch_ui") async def test_post_publish(launch_ui, jp_fetch, jp_serverapp, jp_http_port, jp_base_url): body = json.dumps( From 15529de7fd0da4cb9ebb38eab218509af84af728 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Fri, 13 Oct 2023 12:54:17 -0400 Subject: [PATCH 095/100] verbose pip install for debugging --- extensions/jupyterlab/connect_jupyterlab/justfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/justfile b/extensions/jupyterlab/connect_jupyterlab/justfile index 5dc2763f6..68a3facc0 100644 --- a/extensions/jupyterlab/connect_jupyterlab/justfile +++ b/extensions/jupyterlab/connect_jupyterlab/justfile @@ -1,5 +1,5 @@ install: - pip install -e '.[test]' + pip install -vv -e '.[test]' max_line_length := '99' From 75ea48c2bfbb42084eea8e0a5c49471d1b767883 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Fri, 13 Oct 2023 13:16:45 -0400 Subject: [PATCH 096/100] use jupyter example setup in CI --- .github/workflows/pull-request.yaml | 16 ++++------------ .../jupyterlab/connect_jupyterlab/justfile | 2 +- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index 77d9461b4..cf8eb9d88 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -703,18 +703,10 @@ jobs: - uses: actions/setup-python@v4 with: python-version: '3.11' - - uses: actions/setup-node@v3 - with: - node-version: '18.x' - - - name: Install JupyterLab - run: pip install 'jupyterlab==4.*' - - - name: Install JupyterLab Python extension - run: just install - - - name: Install JS dependencies - run: jlpm install + - name: Base Setup + uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + - name: Install dependencies + run: python -m pip install -U "jupyterlab>=4.0.0,<5" - name: Validate extension code run: just validate diff --git a/extensions/jupyterlab/connect_jupyterlab/justfile b/extensions/jupyterlab/connect_jupyterlab/justfile index 68a3facc0..5dc2763f6 100644 --- a/extensions/jupyterlab/connect_jupyterlab/justfile +++ b/extensions/jupyterlab/connect_jupyterlab/justfile @@ -1,5 +1,5 @@ install: - pip install -vv -e '.[test]' + pip install -e '.[test]' max_line_length := '99' From 277cd90bab056dc9ec6c9419c66e3f9cdfbce6cf Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Fri, 13 Oct 2023 13:19:36 -0400 Subject: [PATCH 097/100] add jlpm install --- .github/workflows/pull-request.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index cf8eb9d88..2cff299b1 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -705,7 +705,9 @@ jobs: python-version: '3.11' - name: Base Setup uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 - - name: Install dependencies + - name: Install JS dependencies + run: jlpm install + - name: Install Python dependencies run: python -m pip install -U "jupyterlab>=4.0.0,<5" - name: Validate extension code From b5a40a080db3556c03aeae919d5852900620f798 Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Fri, 13 Oct 2023 13:35:17 -0400 Subject: [PATCH 098/100] jlpm install after jupyterlab installation --- .github/workflows/pull-request.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index 2cff299b1..f79d6ce17 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -705,10 +705,10 @@ jobs: python-version: '3.11' - name: Base Setup uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 - - name: Install JS dependencies - run: jlpm install - name: Install Python dependencies run: python -m pip install -U "jupyterlab>=4.0.0,<5" + - name: Install JS dependencies + run: jlpm install - name: Validate extension code run: just validate From fd9ebe7184e06675b4f56a1e44aeb156e0aea32e Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Fri, 13 Oct 2023 13:42:57 -0400 Subject: [PATCH 099/100] update yarn lockfile --- .../jupyterlab/connect_jupyterlab/yarn.lock | 1429 +---------------- 1 file changed, 28 insertions(+), 1401 deletions(-) diff --git a/extensions/jupyterlab/connect_jupyterlab/yarn.lock b/extensions/jupyterlab/connect_jupyterlab/yarn.lock index 32b7ae3b7..9745e7563 100644 --- a/extensions/jupyterlab/connect_jupyterlab/yarn.lock +++ b/extensions/jupyterlab/connect_jupyterlab/yarn.lock @@ -2285,33 +2285,6 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/console@npm:^4.0.6": - version: 4.0.6 - resolution: "@jupyterlab/console@npm:4.0.6" - dependencies: - "@codemirror/state": ^6.2.0 - "@codemirror/view": ^6.9.6 - "@jupyter/ydoc": ^1.0.2 - "@jupyterlab/apputils": ^4.1.6 - "@jupyterlab/cells": ^4.0.6 - "@jupyterlab/codeeditor": ^4.0.6 - "@jupyterlab/coreutils": ^6.0.6 - "@jupyterlab/nbformat": ^4.0.6 - "@jupyterlab/observables": ^5.0.6 - "@jupyterlab/rendermime": ^4.0.6 - "@jupyterlab/services": ^7.0.6 - "@jupyterlab/translation": ^4.0.6 - "@jupyterlab/ui-components": ^4.0.6 - "@lumino/coreutils": ^2.1.2 - "@lumino/disposable": ^2.1.2 - "@lumino/dragdrop": ^2.1.3 - "@lumino/messaging": ^2.0.1 - "@lumino/signaling": ^2.1.2 - "@lumino/widgets": ^2.3.0 - checksum: 2d7213c83dc088b51976378b88c88f4cfd05d9cd14aa476cb8130ffbfedd7ac8af25a2e9a34b60bc8ec50ea973f33ed7689845d894d00c8cd095b3fec8fb5fa2 - languageName: node - linkType: hard - "@jupyterlab/coreutils@npm:^6.0.0, @jupyterlab/coreutils@npm:^6.0.6": version: 6.0.6 resolution: "@jupyterlab/coreutils@npm:6.0.6" @@ -2326,43 +2299,6 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/debugger@npm:^4.0.6": - version: 4.0.6 - resolution: "@jupyterlab/debugger@npm:4.0.6" - dependencies: - "@codemirror/state": ^6.2.0 - "@codemirror/view": ^6.9.6 - "@jupyter/ydoc": ^1.0.2 - "@jupyterlab/application": ^4.0.6 - "@jupyterlab/apputils": ^4.1.6 - "@jupyterlab/cells": ^4.0.6 - "@jupyterlab/codeeditor": ^4.0.6 - "@jupyterlab/codemirror": ^4.0.6 - "@jupyterlab/console": ^4.0.6 - "@jupyterlab/coreutils": ^6.0.6 - "@jupyterlab/docregistry": ^4.0.6 - "@jupyterlab/fileeditor": ^4.0.6 - "@jupyterlab/notebook": ^4.0.6 - "@jupyterlab/observables": ^5.0.6 - "@jupyterlab/rendermime": ^4.0.6 - "@jupyterlab/services": ^7.0.6 - "@jupyterlab/translation": ^4.0.6 - "@jupyterlab/ui-components": ^4.0.6 - "@lumino/algorithm": ^2.0.1 - "@lumino/commands": ^2.1.3 - "@lumino/coreutils": ^2.1.2 - "@lumino/datagrid": ^2.2.0 - "@lumino/disposable": ^2.1.2 - "@lumino/messaging": ^2.0.1 - "@lumino/polling": ^2.1.2 - "@lumino/signaling": ^2.1.2 - "@lumino/widgets": ^2.3.0 - "@vscode/debugprotocol": ^1.51.0 - react: ^18.2.0 - checksum: 7e686d218202fa8ec3511c789b77a8a6a53fe7a3b791023dd2b4a3c9a4ea943e0a59a675153c2807a29fe80f82e3ca050523eec0fa03bcb567204f408bdfdc3f - languageName: node - linkType: hard - "@jupyterlab/docmanager@npm:^4.0.6": version: 4.0.6 resolution: "@jupyterlab/docmanager@npm:4.0.6" @@ -2457,58 +2393,6 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/fileeditor@npm:^4.0.6": - version: 4.0.6 - resolution: "@jupyterlab/fileeditor@npm:4.0.6" - dependencies: - "@jupyterlab/apputils": ^4.1.6 - "@jupyterlab/codeeditor": ^4.0.6 - "@jupyterlab/codemirror": ^4.0.6 - "@jupyterlab/coreutils": ^6.0.6 - "@jupyterlab/docregistry": ^4.0.6 - "@jupyterlab/documentsearch": ^4.0.6 - "@jupyterlab/lsp": ^4.0.6 - "@jupyterlab/statusbar": ^4.0.6 - "@jupyterlab/toc": ^6.0.6 - "@jupyterlab/translation": ^4.0.6 - "@jupyterlab/ui-components": ^4.0.6 - "@lumino/commands": ^2.1.3 - "@lumino/coreutils": ^2.1.2 - "@lumino/messaging": ^2.0.1 - "@lumino/widgets": ^2.3.0 - react: ^18.2.0 - regexp-match-indices: ^1.0.2 - checksum: cc70beea6dffe131574a73106e9381c80fe05b440f00f37312e4c12a0995dd22989f414916f4b450d455db20bf28d9ea3c2ef339e5ecfd45e61ce433c0bb8a0a - languageName: node - linkType: hard - -"@jupyterlab/galata@npm:^5.0.5": - version: 5.0.6 - resolution: "@jupyterlab/galata@npm:5.0.6" - dependencies: - "@jupyterlab/application": ^4.0.6 - "@jupyterlab/apputils": ^4.1.6 - "@jupyterlab/coreutils": ^6.0.6 - "@jupyterlab/debugger": ^4.0.6 - "@jupyterlab/docmanager": ^4.0.6 - "@jupyterlab/nbformat": ^4.0.6 - "@jupyterlab/notebook": ^4.0.6 - "@jupyterlab/services": ^7.0.6 - "@jupyterlab/settingregistry": ^4.0.6 - "@lumino/coreutils": ^2.1.2 - "@playwright/test": ^1.32.2 - "@stdlib/stats": ~0.0.13 - fs-extra: ^10.1.0 - json5: ^2.2.3 - path: ~0.12.7 - systeminformation: ^5.8.6 - vega: ^5.20.0 - vega-lite: ^5.6.1 - vega-statistics: ^1.7.9 - checksum: a854c580923335595e091a52fbf9e575eeaa3b08fe4a3a1bdaa5ef044b18058e51a50983205068d63d51943fbf3d63f47853bfba31935dc265e3ecf7432b210f - languageName: node - linkType: hard - "@jupyterlab/lsp@npm:^4.0.6": version: 4.0.6 resolution: "@jupyterlab/lsp@npm:4.0.6" @@ -3005,23 +2889,6 @@ __metadata: languageName: node linkType: hard -"@lumino/datagrid@npm:^2.2.0": - version: 2.2.0 - resolution: "@lumino/datagrid@npm:2.2.0" - dependencies: - "@lumino/algorithm": ^2.0.1 - "@lumino/coreutils": ^2.1.2 - "@lumino/disposable": ^2.1.2 - "@lumino/domutils": ^2.0.1 - "@lumino/dragdrop": ^2.1.3 - "@lumino/keyboard": ^2.0.1 - "@lumino/messaging": ^2.0.1 - "@lumino/signaling": ^2.1.2 - "@lumino/widgets": ^2.3.0 - checksum: dcd6e06500c05b0f30b9924a25a2cc4c1cb98b8432f488148e74e98a7fe092a1f19cadbdc9edfbede9e2030d30b84e5633e40753fbe8d6bbb120d3336d3675ff - languageName: node - linkType: hard - "@lumino/disposable@npm:^1.10.0 || ^2.0.0, @lumino/disposable@npm:^2.1.2": version: 2.1.2 resolution: "@lumino/disposable@npm:2.1.2" @@ -3178,17 +3045,6 @@ __metadata: languageName: node linkType: hard -"@playwright/test@npm:^1.32.2, @playwright/test@npm:^1.37.0": - version: 1.38.1 - resolution: "@playwright/test@npm:1.38.1" - dependencies: - playwright: 1.38.1 - bin: - playwright: cli.js - checksum: c5ec0b23261fe1ef163b6234f69263bc10e7e5a3fb676c7773ffc70b87459a7ab225f57c03b9de649475771638a04c2e00d9b2739304a4dcf5d3edf20a7a4a82 - languageName: node - linkType: hard - "@rjsf/core@npm:^5.1.0": version: 5.13.0 resolution: "@rjsf/core@npm:5.13.0" @@ -3245,410 +3101,6 @@ __metadata: languageName: node linkType: hard -"@stdlib/array@npm:^0.0.x": - version: 0.0.12 - resolution: "@stdlib/array@npm:0.0.12" - dependencies: - "@stdlib/assert": ^0.0.x - "@stdlib/blas": ^0.0.x - "@stdlib/complex": ^0.0.x - "@stdlib/constants": ^0.0.x - "@stdlib/math": ^0.0.x - "@stdlib/symbol": ^0.0.x - "@stdlib/types": ^0.0.x - "@stdlib/utils": ^0.0.x - checksum: 0d95690461f0c4560eabef0796d1170274415cd03de80333c6d39814d0484a6873ef4be04a64941ebf3a600747e84c3a4f23b21c7020e53842c07985331b39f1 - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/assert@npm:^0.0.x": - version: 0.0.12 - resolution: "@stdlib/assert@npm:0.0.12" - dependencies: - "@stdlib/array": ^0.0.x - "@stdlib/cli": ^0.0.x - "@stdlib/complex": ^0.0.x - "@stdlib/constants": ^0.0.x - "@stdlib/fs": ^0.0.x - "@stdlib/math": ^0.0.x - "@stdlib/ndarray": ^0.0.x - "@stdlib/number": ^0.0.x - "@stdlib/os": ^0.0.x - "@stdlib/process": ^0.0.x - "@stdlib/regexp": ^0.0.x - "@stdlib/streams": ^0.0.x - "@stdlib/string": ^0.0.x - "@stdlib/symbol": ^0.0.x - "@stdlib/types": ^0.0.x - "@stdlib/utils": ^0.0.x - checksum: d4dcbeabbfb86ba56cdd972ff785f43e7d25018b2b1800cab8b0deb9e5c54c795d6ead3d142f4dd13c351f636deba4dc1857c85147d6b059fdc78eb2c9510b99 - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/bigint@npm:^0.0.x": - version: 0.0.11 - resolution: "@stdlib/bigint@npm:0.0.11" - dependencies: - "@stdlib/utils": ^0.0.x - checksum: 7bf825d116e4b010e214209af239706ac1ef923eecb5c8b0af9229c9975450081355e441ecc7b4765d81a9e653141868e0492b8061d1e65724fa42fb8283aabd - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/blas@npm:^0.0.x": - version: 0.0.12 - resolution: "@stdlib/blas@npm:0.0.12" - dependencies: - "@stdlib/array": ^0.0.x - "@stdlib/assert": ^0.0.x - "@stdlib/math": ^0.0.x - "@stdlib/number": ^0.0.x - "@stdlib/types": ^0.0.x - "@stdlib/utils": ^0.0.x - checksum: 67ea00a968f7a9c710b37f718b7f756e2830e479a1a1ee44cbf6ec3cc27dd8863078928867707d9d1624007e81de89d040f2326d10f435e2cce913cab121975e - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/buffer@npm:^0.0.x": - version: 0.0.11 - resolution: "@stdlib/buffer@npm:0.0.11" - dependencies: - "@stdlib/array": ^0.0.x - "@stdlib/assert": ^0.0.x - "@stdlib/process": ^0.0.x - "@stdlib/types": ^0.0.x - "@stdlib/utils": ^0.0.x - checksum: 93df02e3bf548e940ff9cef65121566e7bf93b554f0614d62336c9dbccfc07c9f1b1c4e9a7aebbe4819ef16a6d2a33a7010c2fdf908fface8298a3109c3c4ef0 - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/cli@npm:^0.0.x": - version: 0.0.10 - resolution: "@stdlib/cli@npm:0.0.10" - dependencies: - "@stdlib/utils": ^0.0.x - minimist: ^1.2.0 - checksum: bbece8d3dbff2835518582a7726c6c4c22743dc408d2303d9e35a3b72151d5d0a8e78d61bc896663d4c3fb702e966abea7a1bd621ed943723a359f57053f121f - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/complex@npm:^0.0.x": - version: 0.0.12 - resolution: "@stdlib/complex@npm:0.0.12" - dependencies: - "@stdlib/array": ^0.0.x - "@stdlib/assert": ^0.0.x - "@stdlib/types": ^0.0.x - "@stdlib/utils": ^0.0.x - checksum: 8eda35027495417f1b0dd9bbbc2d4983f50ad3cf9e2276ffe0945ccdbe78f0fc66b9fc36ab71926d2a125c8fb7467c8970a222b230b42ff4bb8042c53314ca09 - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/constants@npm:^0.0.x": - version: 0.0.11 - resolution: "@stdlib/constants@npm:0.0.11" - dependencies: - "@stdlib/array": ^0.0.x - "@stdlib/assert": ^0.0.x - "@stdlib/number": ^0.0.x - "@stdlib/utils": ^0.0.x - checksum: fc19d055a4e71ae84b6c92e4a3a88371d50693da8f0a813df4063dc549374d19b9cf23f4fdae2fb7b2013e13929f713c3e1b9e4054767e741b75561ed43d15c3 - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/fs@npm:^0.0.x": - version: 0.0.12 - resolution: "@stdlib/fs@npm:0.0.12" - dependencies: - "@stdlib/array": ^0.0.x - "@stdlib/assert": ^0.0.x - "@stdlib/cli": ^0.0.x - "@stdlib/math": ^0.0.x - "@stdlib/process": ^0.0.x - "@stdlib/string": ^0.0.x - "@stdlib/utils": ^0.0.x - debug: ^2.6.9 - checksum: 33ac5ee4844d4599fe3a8a8402f1a3e2cafee31a5c9cf5b85df530a61a2b54ef17dc30a67be98dacdc2958219413edd0e4cdc3c28266f4bc30277ee024f6a49e - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/math@npm:^0.0.x": - version: 0.0.11 - resolution: "@stdlib/math@npm:0.0.11" - dependencies: - "@stdlib/assert": ^0.0.x - "@stdlib/constants": ^0.0.x - "@stdlib/ndarray": ^0.0.x - "@stdlib/number": ^0.0.x - "@stdlib/strided": ^0.0.x - "@stdlib/symbol": ^0.0.x - "@stdlib/types": ^0.0.x - "@stdlib/utils": ^0.0.x - debug: ^2.6.9 - checksum: 6c4c9dda36fbce50553e1437354c5286aa782c42399534dbed8e696ddeb1b91ef6cff5fe5962f1c9e1eb2ef63c63d9bd58f7ca4b87d59018aaac20099c3fb79a - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/ndarray@npm:^0.0.x": - version: 0.0.13 - resolution: "@stdlib/ndarray@npm:0.0.13" - dependencies: - "@stdlib/array": ^0.0.x - "@stdlib/assert": ^0.0.x - "@stdlib/bigint": ^0.0.x - "@stdlib/buffer": ^0.0.x - "@stdlib/complex": ^0.0.x - "@stdlib/constants": ^0.0.x - "@stdlib/math": ^0.0.x - "@stdlib/number": ^0.0.x - "@stdlib/string": ^0.0.x - "@stdlib/types": ^0.0.x - "@stdlib/utils": ^0.0.x - checksum: 842a94afce5fc74bf8a964b75a302ddb8713eadbc79616e6799f1310c8bce860ed9e9877adc4a39338d9136b8798947ee21cf03368d46408308a313c8075d49a - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/nlp@npm:^0.0.x": - version: 0.0.11 - resolution: "@stdlib/nlp@npm:0.0.11" - dependencies: - "@stdlib/array": ^0.0.x - "@stdlib/assert": ^0.0.x - "@stdlib/math": ^0.0.x - "@stdlib/random": ^0.0.x - "@stdlib/string": ^0.0.x - "@stdlib/utils": ^0.0.x - checksum: 398fe2853fb95404bb6598e3e199ca3e0435b94447d50e14e2e30582cadfb91f43464f23d80a0e1da4d64567a4a108a7299d7440509f1ab26b02aea7bb16e9a8 - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/number@npm:^0.0.x": - version: 0.0.10 - resolution: "@stdlib/number@npm:0.0.10" - dependencies: - "@stdlib/array": ^0.0.x - "@stdlib/assert": ^0.0.x - "@stdlib/constants": ^0.0.x - "@stdlib/math": ^0.0.x - "@stdlib/os": ^0.0.x - "@stdlib/string": ^0.0.x - "@stdlib/types": ^0.0.x - "@stdlib/utils": ^0.0.x - checksum: 326190956c787cbf9321c332beedab5ba4b3fa97d52a82aa708a0349b4678c0df7a351424f00a606f4eaca4fb4ba4cc191580c99d7c64ee0f08d37baa3de14f2 - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/os@npm:^0.0.x": - version: 0.0.12 - resolution: "@stdlib/os@npm:0.0.12" - dependencies: - "@stdlib/assert": ^0.0.x - "@stdlib/cli": ^0.0.x - "@stdlib/fs": ^0.0.x - "@stdlib/process": ^0.0.x - "@stdlib/utils": ^0.0.x - checksum: 37156b0c723da70d7740d92d08fc592eae803461c1d546cff6ac044765d6e40722fdad342219277e747c39344b513096ac1d0aa1e733cf3079bd8a9a8578612a - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/process@npm:^0.0.x": - version: 0.0.12 - resolution: "@stdlib/process@npm:0.0.12" - dependencies: - "@stdlib/assert": ^0.0.x - "@stdlib/buffer": ^0.0.x - "@stdlib/cli": ^0.0.x - "@stdlib/fs": ^0.0.x - "@stdlib/streams": ^0.0.x - "@stdlib/string": ^0.0.x - "@stdlib/utils": ^0.0.x - checksum: 6d5c3d943f9914d1ae39bd36ad7436f783cf64baa2bff67a808035c99258676ae3f704c328a78d62754951cf85fe99d8e9af5f4fa7d5f8cba347bca72767e357 - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/random@npm:^0.0.x": - version: 0.0.12 - resolution: "@stdlib/random@npm:0.0.12" - dependencies: - "@stdlib/array": ^0.0.x - "@stdlib/assert": ^0.0.x - "@stdlib/blas": ^0.0.x - "@stdlib/buffer": ^0.0.x - "@stdlib/cli": ^0.0.x - "@stdlib/constants": ^0.0.x - "@stdlib/fs": ^0.0.x - "@stdlib/math": ^0.0.x - "@stdlib/process": ^0.0.x - "@stdlib/stats": ^0.0.x - "@stdlib/streams": ^0.0.x - "@stdlib/symbol": ^0.0.x - "@stdlib/types": ^0.0.x - "@stdlib/utils": ^0.0.x - debug: ^2.6.9 - readable-stream: ^2.1.4 - checksum: 67fcb5553274f8596ceae91153e96ae297bacfd55279821cb09f19f2844845aaf892802e4a5962965323dbfded0c7df8a89a6ce77d60d5c8a5899d483055a964 - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/regexp@npm:^0.0.x": - version: 0.0.13 - resolution: "@stdlib/regexp@npm:0.0.13" - dependencies: - "@stdlib/assert": ^0.0.x - "@stdlib/utils": ^0.0.x - checksum: dd52adb096ff9a02d1c4818be2889ae01bc04a0cdbc0d52473685e0a7a4eaa13e1be603b964f140f7488d11450b644dc5f8c97029d77db1ed4a563554245ff1c - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/stats@npm:^0.0.x, @stdlib/stats@npm:~0.0.13": - version: 0.0.13 - resolution: "@stdlib/stats@npm:0.0.13" - dependencies: - "@stdlib/array": ^0.0.x - "@stdlib/assert": ^0.0.x - "@stdlib/blas": ^0.0.x - "@stdlib/constants": ^0.0.x - "@stdlib/math": ^0.0.x - "@stdlib/ndarray": ^0.0.x - "@stdlib/random": ^0.0.x - "@stdlib/string": ^0.0.x - "@stdlib/symbol": ^0.0.x - "@stdlib/types": ^0.0.x - "@stdlib/utils": ^0.0.x - checksum: 5ca12b2e123543f56a59aca828e14afaf525ad4aa40467bee7037a9178e21e55d4ce8ba3de9387cc9a0efe3e0d035d6c58705b12f634f77a2b3f87d334dfb076 - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/streams@npm:^0.0.x": - version: 0.0.12 - resolution: "@stdlib/streams@npm:0.0.12" - dependencies: - "@stdlib/assert": ^0.0.x - "@stdlib/buffer": ^0.0.x - "@stdlib/cli": ^0.0.x - "@stdlib/fs": ^0.0.x - "@stdlib/types": ^0.0.x - "@stdlib/utils": ^0.0.x - debug: ^2.6.9 - readable-stream: ^2.1.4 - checksum: 231b4607d082ea81d9dadbeab08002ec398a29c7eb5d611d8a4183f9db6964428e2f8a9e0f8edd085ca12b5d58258576987a575e9d8f6fcabcb5a62c6b8efe88 - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/strided@npm:^0.0.x": - version: 0.0.12 - resolution: "@stdlib/strided@npm:0.0.12" - dependencies: - "@stdlib/assert": ^0.0.x - "@stdlib/math": ^0.0.x - "@stdlib/ndarray": ^0.0.x - "@stdlib/types": ^0.0.x - "@stdlib/utils": ^0.0.x - checksum: 55ccc8543596894a2e3ad734b394700c69697b499a54b3bfbcf80cddd8d91509792c23931f5cebf7c89269676ac3f44352582e4f42e2c2c2898363cc3a76403d - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/string@npm:^0.0.x": - version: 0.0.14 - resolution: "@stdlib/string@npm:0.0.14" - dependencies: - "@stdlib/assert": ^0.0.x - "@stdlib/cli": ^0.0.x - "@stdlib/constants": ^0.0.x - "@stdlib/fs": ^0.0.x - "@stdlib/math": ^0.0.x - "@stdlib/nlp": ^0.0.x - "@stdlib/process": ^0.0.x - "@stdlib/regexp": ^0.0.x - "@stdlib/streams": ^0.0.x - "@stdlib/types": ^0.0.x - "@stdlib/utils": ^0.0.x - checksum: aaaaaddf381cccc67f15dbab76f43ce81cb71a4f5595bfa06ef915b6747458deca3c25c60ff3c002c0c36482687d92a150f364069559dfea915f63a040d5f603 - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/symbol@npm:^0.0.x": - version: 0.0.12 - resolution: "@stdlib/symbol@npm:0.0.12" - dependencies: - "@stdlib/assert": ^0.0.x - "@stdlib/utils": ^0.0.x - checksum: 2263341ce0296de2063d26038902bd63bf1d7b820307402fdf38c3b248bd026f17d96bccdc3189fd9fcc9c83a778eaab797dc11805bd66203b8ac9c6934f6588 - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/time@npm:^0.0.x": - version: 0.0.14 - resolution: "@stdlib/time@npm:0.0.14" - dependencies: - "@stdlib/assert": ^0.0.x - "@stdlib/cli": ^0.0.x - "@stdlib/constants": ^0.0.x - "@stdlib/fs": ^0.0.x - "@stdlib/math": ^0.0.x - "@stdlib/string": ^0.0.x - "@stdlib/utils": ^0.0.x - checksum: 6e8a1b985a09936ab09c98d44bf1b2c79e08995c3c73401494bc1f6f708747ef136d769af4809a8af92a9ceb3d390db6c4c4e01608cd8d794a86c4b57e343eb1 - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/types@npm:^0.0.x": - version: 0.0.14 - resolution: "@stdlib/types@npm:0.0.14" - checksum: 5680a655ddb3ad730f5c7eb2363a43e089f3e6a1b85b12546cab49f7749bb3baf293bd50fbfe55486f233f4227f1020b65eb461b754b94fb4a4bc2799647ec22 - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - -"@stdlib/utils@npm:^0.0.x": - version: 0.0.12 - resolution: "@stdlib/utils@npm:0.0.12" - dependencies: - "@stdlib/array": ^0.0.x - "@stdlib/assert": ^0.0.x - "@stdlib/blas": ^0.0.x - "@stdlib/buffer": ^0.0.x - "@stdlib/cli": ^0.0.x - "@stdlib/constants": ^0.0.x - "@stdlib/fs": ^0.0.x - "@stdlib/math": ^0.0.x - "@stdlib/os": ^0.0.x - "@stdlib/process": ^0.0.x - "@stdlib/random": ^0.0.x - "@stdlib/regexp": ^0.0.x - "@stdlib/streams": ^0.0.x - "@stdlib/string": ^0.0.x - "@stdlib/symbol": ^0.0.x - "@stdlib/time": ^0.0.x - "@stdlib/types": ^0.0.x - debug: ^2.6.9 - checksum: e0c3671c5f62c11bb3abd721f2958c41641b00a75d449bd25fbb62bcb8689cfe9c1f600c0688e7b6819ae870d6e5974d0fc7b2ec86081c45d9194b316b2a2ec2 - conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) - languageName: node - linkType: hard - "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" @@ -3724,13 +3176,6 @@ __metadata: languageName: node linkType: hard -"@types/geojson@npm:7946.0.4": - version: 7946.0.4 - resolution: "@types/geojson@npm:7946.0.4" - checksum: 541aea46540c918b9fe21ab73f497fe17b1eaf4d0d3baeb5f5614029b7f488c37f63843b644c024a8178dc2fb66d3d6623c25d9cf61d7b553aa19c8dc7f99047 - languageName: node - linkType: hard - "@types/graceful-fs@npm:^4.1.3": version: 4.1.7 resolution: "@types/graceful-fs@npm:4.1.7" @@ -4025,13 +3470,6 @@ __metadata: languageName: node linkType: hard -"@vscode/debugprotocol@npm:^1.51.0": - version: 1.63.0 - resolution: "@vscode/debugprotocol@npm:1.63.0" - checksum: 084bd8c246da30e3c2099110efbf8beb9f1471ecb5471bb30e834ee041ef375df3076395b13096520ec5f6e531a4a8a5621f26e37da9c8648054340e9b00a273 - languageName: node - linkType: hard - "@webassemblyjs/ast@npm:1.11.6, @webassemblyjs/ast@npm:^1.11.5": version: 1.11.6 resolution: "@webassemblyjs/ast@npm:1.11.6" @@ -4997,20 +4435,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:2, commander@npm:^2.20.0": - version: 2.20.3 - resolution: "commander@npm:2.20.3" - checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e - languageName: node - linkType: hard - -"commander@npm:7": - version: 7.2.0 - resolution: "commander@npm:7.2.0" - checksum: 53501cbeee61d5157546c0bef0fedb6cdfc763a882136284bed9a07225f09a14b82d2a84e7637edfd1a679fb35ed9502fd58ef1d091e6287f60d790147f68ddc - languageName: node - linkType: hard - "commander@npm:^10.0.1": version: 10.0.1 resolution: "commander@npm:10.0.1" @@ -5018,6 +4442,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^2.20.0": + version: 2.20.3 + resolution: "commander@npm:2.20.3" + checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e + languageName: node + linkType: hard + "commander@npm:^9.4.1": version: 9.5.0 resolution: "commander@npm:9.5.0" @@ -5055,15 +4486,6 @@ __metadata: languageName: node linkType: hard -"connect_jupyterlab-ui-tests@workspace:ui-tests": - version: 0.0.0-use.local - resolution: "connect_jupyterlab-ui-tests@workspace:ui-tests" - dependencies: - "@jupyterlab/galata": ^5.0.5 - "@playwright/test": ^1.37.0 - languageName: unknown - linkType: soft - "connect_jupyterlab@workspace:.": version: 0.0.0-use.local resolution: "connect_jupyterlab@workspace:." @@ -5137,13 +4559,6 @@ __metadata: languageName: node linkType: hard -"core-util-is@npm:~1.0.0": - version: 1.0.3 - resolution: "core-util-is@npm:1.0.3" - checksum: 9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99 - languageName: node - linkType: hard - "cosmiconfig@npm:^8.2.0": version: 8.3.6 resolution: "cosmiconfig@npm:8.3.6" @@ -5267,209 +4682,26 @@ __metadata: languageName: node linkType: hard -"cssstyle@npm:^2.3.0": - version: 2.3.0 - resolution: "cssstyle@npm:2.3.0" - dependencies: - cssom: ~0.3.6 - checksum: 5f05e6fd2e3df0b44695c2f08b9ef38b011862b274e320665176467c0725e44a53e341bc4959a41176e83b66064ab786262e7380fd1cabeae6efee0d255bb4e3 - languageName: node - linkType: hard - -"csstype@npm:3.0.10": - version: 3.0.10 - resolution: "csstype@npm:3.0.10" - checksum: 20a8fa324f2b33ddf94aa7507d1b6ab3daa6f3cc308888dc50126585d7952f2471de69b2dbe0635d1fdc31223fef8e070842691877e725caf456e2378685a631 - languageName: node - linkType: hard - -"csstype@npm:^3.0.2": - version: 3.1.2 - resolution: "csstype@npm:3.1.2" - checksum: e1a52e6c25c1314d6beef5168da704ab29c5186b877c07d822bd0806717d9a265e8493a2e35ca7e68d0f5d472d43fac1cdce70fd79fd0853dff81f3028d857b5 - languageName: node - linkType: hard - -"d3-array@npm:1 - 3, d3-array@npm:2 - 3, d3-array@npm:2.10.0 - 3, d3-array@npm:2.5.0 - 3, d3-array@npm:^3.2.2": - version: 3.2.4 - resolution: "d3-array@npm:3.2.4" - dependencies: - internmap: 1 - 2 - checksum: a5976a6d6205f69208478bb44920dd7ce3e788c9dceb86b304dbe401a4bfb42ecc8b04c20facde486e9adcb488b5d1800d49393a3f81a23902b68158e12cddd0 - languageName: node - linkType: hard - -"d3-array@npm:3.2.2": - version: 3.2.2 - resolution: "d3-array@npm:3.2.2" - dependencies: - internmap: 1 - 2 - checksum: 98af3db792685ceca5d9c3721efba0c567520da5532b2c7a590fd83627a598ea225d11c2cecbad404dc154120feb5ea6df0ded38f82ddf342c714cfd0c6143d1 - languageName: node - linkType: hard - -"d3-color@npm:1 - 3, d3-color@npm:^3.1.0": - version: 3.1.0 - resolution: "d3-color@npm:3.1.0" - checksum: 4931fbfda5d7c4b5cfa283a13c91a954f86e3b69d75ce588d06cde6c3628cebfc3af2069ccf225e982e8987c612aa7948b3932163ce15eb3c11cd7c003f3ee3b - languageName: node - linkType: hard - -"d3-delaunay@npm:^6.0.2": - version: 6.0.4 - resolution: "d3-delaunay@npm:6.0.4" - dependencies: - delaunator: 5 - checksum: ce6d267d5ef21a8aeadfe4606329fc80a22ab6e7748d47bc220bcc396ee8be84b77a5473033954c5ac4aa522d265ddc45d4165d30fe4787dd60a15ea66b9bbb4 - languageName: node - linkType: hard - -"d3-dispatch@npm:1 - 3": - version: 3.0.1 - resolution: "d3-dispatch@npm:3.0.1" - checksum: fdfd4a230f46463e28e5b22a45dd76d03be9345b605e1b5dc7d18bd7ebf504e6c00ae123fd6d03e23d9e2711e01f0e14ea89cd0632545b9f0c00b924ba4be223 - languageName: node - linkType: hard - -"d3-dsv@npm:^3.0.1": - version: 3.0.1 - resolution: "d3-dsv@npm:3.0.1" - dependencies: - commander: 7 - iconv-lite: 0.6 - rw: 1 - bin: - csv2json: bin/dsv2json.js - csv2tsv: bin/dsv2dsv.js - dsv2dsv: bin/dsv2dsv.js - dsv2json: bin/dsv2json.js - json2csv: bin/json2dsv.js - json2dsv: bin/json2dsv.js - json2tsv: bin/json2dsv.js - tsv2csv: bin/dsv2dsv.js - tsv2json: bin/dsv2json.js - checksum: 5fc0723647269d5dccd181d74f2265920ab368a2868b0b4f55ffa2fecdfb7814390ea28622cd61ee5d9594ab262879509059544e9f815c54fe76fbfb4ffa4c8a - languageName: node - linkType: hard - -"d3-force@npm:^3.0.0": - version: 3.0.0 - resolution: "d3-force@npm:3.0.0" - dependencies: - d3-dispatch: 1 - 3 - d3-quadtree: 1 - 3 - d3-timer: 1 - 3 - checksum: 6c7e96438cab62fa32aeadb0ade3297b62b51f81b1b38b0a60a5ec9fd627d74090c1189654d92df2250775f31b06812342f089f1d5947de9960a635ee3581def - languageName: node - linkType: hard - -"d3-format@npm:1 - 3, d3-format@npm:^3.1.0": - version: 3.1.0 - resolution: "d3-format@npm:3.1.0" - checksum: f345ec3b8ad3cab19bff5dead395bd9f5590628eb97a389b1dd89f0b204c7c4fc1d9520f13231c2c7cf14b7c9a8cf10f8ef15bde2befbab41454a569bd706ca2 - languageName: node - linkType: hard - -"d3-geo-projection@npm:^4.0.0": - version: 4.0.0 - resolution: "d3-geo-projection@npm:4.0.0" - dependencies: - commander: 7 - d3-array: 1 - 3 - d3-geo: 1.12.0 - 3 - bin: - geo2svg: bin/geo2svg.js - geograticule: bin/geograticule.js - geoproject: bin/geoproject.js - geoquantize: bin/geoquantize.js - geostitch: bin/geostitch.js - checksum: 631422b10dd78d1047ba5a3b073148bea27721060bd7087a5fa6c053ca80445d26432e505e0e3acbd6e0d76cf577c61bf9a5db70dabbc9310c493de1f7ff736d - languageName: node - linkType: hard - -"d3-geo@npm:1.12.0 - 3, d3-geo@npm:^3.1.0": - version: 3.1.0 - resolution: "d3-geo@npm:3.1.0" - dependencies: - d3-array: 2.5.0 - 3 - checksum: adf82b0c105c0c5951ae0a833d4dfc479a563791ad7938579fa14e1cffd623b469d8aa7a37dc413a327fb6ac56880f3da3f6c43d4abe3c923972dd98f34f37d1 - languageName: node - linkType: hard - -"d3-hierarchy@npm:^3.1.2": - version: 3.1.2 - resolution: "d3-hierarchy@npm:3.1.2" - checksum: 0fd946a8c5fd4686d43d3e11bbfc2037a145fda29d2261ccd0e36f70b66af6d7638e2c0c7112124d63fc3d3127197a00a6aecf676bd5bd392a94d7235a214263 - languageName: node - linkType: hard - -"d3-interpolate@npm:1.2.0 - 3, d3-interpolate@npm:^3.0.1": - version: 3.0.1 - resolution: "d3-interpolate@npm:3.0.1" - dependencies: - d3-color: 1 - 3 - checksum: a42ba314e295e95e5365eff0f604834e67e4a3b3c7102458781c477bd67e9b24b6bb9d8e41ff5521050a3f2c7c0c4bbbb6e187fd586daa3980943095b267e78b - languageName: node - linkType: hard - -"d3-path@npm:^3.1.0": - version: 3.1.0 - resolution: "d3-path@npm:3.1.0" - checksum: 2306f1bd9191e1eac895ec13e3064f732a85f243d6e627d242a313f9777756838a2215ea11562f0c7630c7c3b16a19ec1fe0948b1c82f3317fac55882f6ee5d8 - languageName: node - linkType: hard - -"d3-quadtree@npm:1 - 3": - version: 3.0.1 - resolution: "d3-quadtree@npm:3.0.1" - checksum: 5469d462763811475f34a7294d984f3eb100515b0585ca5b249656f6b1a6e99b20056a2d2e463cc9944b888896d2b1d07859c50f9c0cf23438df9cd2e3146066 - languageName: node - linkType: hard - -"d3-scale@npm:^4.0.2": - version: 4.0.2 - resolution: "d3-scale@npm:4.0.2" - dependencies: - d3-array: 2.10.0 - 3 - d3-format: 1 - 3 - d3-interpolate: 1.2.0 - 3 - d3-time: 2.1.1 - 3 - d3-time-format: 2 - 4 - checksum: a9c770d283162c3bd11477c3d9d485d07f8db2071665f1a4ad23eec3e515e2cefbd369059ec677c9ac849877d1a765494e90e92051d4f21111aa56791c98729e - languageName: node - linkType: hard - -"d3-shape@npm:^3.2.0": - version: 3.2.0 - resolution: "d3-shape@npm:3.2.0" - dependencies: - d3-path: ^3.1.0 - checksum: de2af5fc9a93036a7b68581ca0bfc4aca2d5a328aa7ba7064c11aedd44d24f310c20c40157cb654359d4c15c3ef369f95ee53d71221017276e34172c7b719cfa - languageName: node - linkType: hard - -"d3-time-format@npm:2 - 4, d3-time-format@npm:^4.1.0": - version: 4.1.0 - resolution: "d3-time-format@npm:4.1.0" +"cssstyle@npm:^2.3.0": + version: 2.3.0 + resolution: "cssstyle@npm:2.3.0" dependencies: - d3-time: 1 - 3 - checksum: 7342bce28355378152bbd4db4e275405439cabba082d9cd01946d40581140481c8328456d91740b0fe513c51ec4a467f4471ffa390c7e0e30ea30e9ec98fcdf4 + cssom: ~0.3.6 + checksum: 5f05e6fd2e3df0b44695c2f08b9ef38b011862b274e320665176467c0725e44a53e341bc4959a41176e83b66064ab786262e7380fd1cabeae6efee0d255bb4e3 languageName: node linkType: hard -"d3-time@npm:1 - 3, d3-time@npm:2.1.1 - 3, d3-time@npm:^3.1.0": - version: 3.1.0 - resolution: "d3-time@npm:3.1.0" - dependencies: - d3-array: 2 - 3 - checksum: 613b435352a78d9f31b7f68540788186d8c331b63feca60ad21c88e9db1989fe888f97f242322ebd6365e45ec3fb206a4324cd4ca0dfffa1d9b5feb856ba00a7 +"csstype@npm:3.0.10": + version: 3.0.10 + resolution: "csstype@npm:3.0.10" + checksum: 20a8fa324f2b33ddf94aa7507d1b6ab3daa6f3cc308888dc50126585d7952f2471de69b2dbe0635d1fdc31223fef8e070842691877e725caf456e2378685a631 languageName: node linkType: hard -"d3-timer@npm:1 - 3, d3-timer@npm:^3.0.1": - version: 3.0.1 - resolution: "d3-timer@npm:3.0.1" - checksum: 1cfddf86d7bca22f73f2c427f52dfa35c49f50d64e187eb788dcad6e927625c636aa18ae4edd44d084eb9d1f81d8ca4ec305dae7f733c15846a824575b789d73 +"csstype@npm:^3.0.2": + version: 3.1.2 + resolution: "csstype@npm:3.1.2" + checksum: e1a52e6c25c1314d6beef5168da704ab29c5186b877c07d822bd0806717d9a265e8493a2e35ca7e68d0f5d472d43fac1cdce70fd79fd0853dff81f3028d857b5 languageName: node linkType: hard @@ -5507,15 +4739,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:^2.6.9": - version: 2.6.9 - resolution: "debug@npm:2.6.9" - dependencies: - ms: 2.0.0 - checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 - languageName: node - linkType: hard - "decamelize-keys@npm:^1.1.0": version: 1.1.1 resolution: "decamelize-keys@npm:1.1.1" @@ -5624,15 +4847,6 @@ __metadata: languageName: node linkType: hard -"delaunator@npm:5": - version: 5.0.0 - resolution: "delaunator@npm:5.0.0" - dependencies: - robust-predicates: ^3.0.0 - checksum: d6764188442b7f7c6bcacebd96edc00e35f542a96f1af3ef600e586bfb9849a3682c489c0ab423440c90bc4c7cac77f28761babff76fa29e193e1cf50a95b860 - languageName: node - linkType: hard - "delayed-stream@npm:~1.0.0": version: 1.0.0 resolution: "delayed-stream@npm:1.0.0" @@ -6401,16 +5615,6 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:2.3.2": - version: 2.3.2 - resolution: "fsevents@npm:2.3.2" - dependencies: - node-gyp: latest - checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f - conditions: os=darwin - languageName: node - linkType: hard - "fsevents@npm:^2.3.2": version: 2.3.3 resolution: "fsevents@npm:2.3.3" @@ -6421,15 +5625,6 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@2.3.2#~builtin": - version: 2.3.2 - resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=df0bf1" - dependencies: - node-gyp: latest - conditions: os=darwin - languageName: node - linkType: hard - "fsevents@patch:fsevents@^2.3.2#~builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#~builtin::version=2.3.3&hash=df0bf1" @@ -6873,7 +6068,7 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.6, iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": +"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" dependencies: @@ -6967,20 +6162,13 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:~2.0.3": +"inherits@npm:2, inherits@npm:^2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 languageName: node linkType: hard -"inherits@npm:2.0.3": - version: 2.0.3 - resolution: "inherits@npm:2.0.3" - checksum: 78cb8d7d850d20a5e9a7f3620db31483aa00ad5f722ce03a55b110e5a723539b3716a3b463e2b96ce3fe286f33afc7c131fa2f91407528ba80cea98a7545d4c0 - languageName: node - linkType: hard - "ini@npm:^1.3.5": version: 1.3.8 resolution: "ini@npm:1.3.8" @@ -6999,13 +6187,6 @@ __metadata: languageName: node linkType: hard -"internmap@npm:1 - 2": - version: 2.0.3 - resolution: "internmap@npm:2.0.3" - checksum: 7ca41ec6aba8f0072fc32fa8a023450a9f44503e2d8e403583c55714b25efd6390c38a87161ec456bf42d7bc83aab62eb28f5aef34876b1ac4e60693d5e1d241 - languageName: node - linkType: hard - "interpret@npm:^3.1.1": version: 3.1.1 resolution: "interpret@npm:3.1.1" @@ -7293,13 +6474,6 @@ __metadata: languageName: node linkType: hard -"isarray@npm:~1.0.0": - version: 1.0.0 - resolution: "isarray@npm:1.0.0" - checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab - languageName: node - linkType: hard - "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" @@ -8031,13 +7205,6 @@ __metadata: languageName: node linkType: hard -"json-stringify-pretty-compact@npm:~3.0.0": - version: 3.0.0 - resolution: "json-stringify-pretty-compact@npm:3.0.0" - checksum: 01ab5c5c8260299414868d96db97f53aef93c290fe469edd9a1363818e795006e01c952fa2fd7b47cbbab506d5768998eccc25e1da4fa2ccfebd1788c6098791 - languageName: node - linkType: hard - "json5@npm:^2.1.2, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" @@ -8515,7 +7682,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.2.0, minimist@npm:~1.2.0": +"minimist@npm:~1.2.0": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 @@ -8615,13 +7782,6 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.0.0": - version: 2.0.0 - resolution: "ms@npm:2.0.0" - checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 - languageName: node - linkType: hard - "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" @@ -8673,7 +7833,7 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.7": +"node-fetch@npm:^2.6.0": version: 2.7.0 resolution: "node-fetch@npm:2.7.0" dependencies: @@ -9082,16 +8242,6 @@ __metadata: languageName: node linkType: hard -"path@npm:~0.12.7": - version: 0.12.7 - resolution: "path@npm:0.12.7" - dependencies: - process: ^0.11.1 - util: ^0.10.3 - checksum: 5dedb71e78fc008fcba797defc0b4e1cf06c1f18e0a631e03ba5bb505136f587ff017afc14f9a3d481cbe77aeedff7dc0c1d2ce4d820c1ebf3c4281ca49423a1 - languageName: node - linkType: hard - "picocolors@npm:^1.0.0": version: 1.0.0 resolution: "picocolors@npm:1.0.0" @@ -9138,30 +8288,6 @@ __metadata: languageName: node linkType: hard -"playwright-core@npm:1.38.1": - version: 1.38.1 - resolution: "playwright-core@npm:1.38.1" - bin: - playwright-core: cli.js - checksum: 66e83fe040f309b13ad94ba39dea40ac207bfcbbc22de13141af88dbdedd64e1c4e3ce1d0cb070d4efd8050d7e579953ec3681dd8a0acf2c1cc738d9c50e545e - languageName: node - linkType: hard - -"playwright@npm:1.38.1": - version: 1.38.1 - resolution: "playwright@npm:1.38.1" - dependencies: - fsevents: 2.3.2 - playwright-core: 1.38.1 - dependenciesMeta: - fsevents: - optional: true - bin: - playwright: cli.js - checksum: 4e01d4ee52d9ccf75a80d8492829106802590721d56bff7c5957ff1f21eb3c328ee5bc3c1784a59c4b515df1b98d08ef92e4a35a807f454cd00dc481d30fadc2 - languageName: node - linkType: hard - "postcss-modules-extract-imports@npm:^3.0.0": version: 3.0.0 resolution: "postcss-modules-extract-imports@npm:3.0.0" @@ -9286,14 +8412,7 @@ __metadata: languageName: node linkType: hard -"process-nextick-args@npm:~2.0.0": - version: 2.0.1 - resolution: "process-nextick-args@npm:2.0.1" - checksum: 1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf - languageName: node - linkType: hard - -"process@npm:^0.11.1, process@npm:^0.11.10": +"process@npm:^0.11.10": version: 0.11.10 resolution: "process@npm:0.11.10" checksum: bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c3 @@ -9451,21 +8570,6 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^2.1.4": - version: 2.3.8 - resolution: "readable-stream@npm:2.3.8" - dependencies: - core-util-is: ~1.0.0 - inherits: ~2.0.3 - isarray: ~1.0.0 - process-nextick-args: ~2.0.0 - safe-buffer: ~5.1.1 - string_decoder: ~1.1.1 - util-deprecate: ~1.0.1 - checksum: 65645467038704f0c8aaf026a72fbb588a9e2ef7a75cd57a01702ee9db1c4a1e4b03aaad36861a6a0926546a74d174149c8c207527963e0c2d3eee2f37678a42 - languageName: node - linkType: hard - "readable-stream@npm:^3.6.0": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" @@ -9528,24 +8632,6 @@ __metadata: languageName: node linkType: hard -"regexp-match-indices@npm:^1.0.2": - version: 1.0.2 - resolution: "regexp-match-indices@npm:1.0.2" - dependencies: - regexp-tree: ^0.1.11 - checksum: 8cc779f6cf8f404ead828d09970a7d4bd66bd78d43ab9eb2b5e65f2ef2ba1ed53536f5b5fa839fb90b350365fb44b6a851c7f16289afc3f37789c113ab2a7916 - languageName: node - linkType: hard - -"regexp-tree@npm:^0.1.11": - version: 0.1.27 - resolution: "regexp-tree@npm:0.1.27" - bin: - regexp-tree: bin/regexp-tree - checksum: 129aebb34dae22d6694ab2ac328be3f99105143737528ab072ef624d599afecbcfae1f5c96a166fa9e5f64fa1ecf30b411c4691e7924c3e11bbaf1712c260c54 - languageName: node - linkType: hard - "regexp.prototype.flags@npm:^1.5.1": version: 1.5.1 resolution: "regexp.prototype.flags@npm:1.5.1" @@ -9695,13 +8781,6 @@ __metadata: languageName: node linkType: hard -"robust-predicates@npm:^3.0.0": - version: 3.0.2 - resolution: "robust-predicates@npm:3.0.2" - checksum: 36854c1321548ceca96d36ad9d6e0a5a512986029ec6929ad6ed3ec1612c22cc8b46cc72d2c5674af42e8074a119d793f6f0ea3a5b51373e3ab926c64b172d7a - languageName: node - linkType: hard - "run-applescript@npm:^5.0.0": version: 5.0.0 resolution: "run-applescript@npm:5.0.0" @@ -9720,13 +8799,6 @@ __metadata: languageName: node linkType: hard -"rw@npm:1": - version: 1.3.3 - resolution: "rw@npm:1.3.3" - checksum: c20d82421f5a71c86a13f76121b751553a99cd4a70ea27db86f9b23f33db941f3f06019c30f60d50c356d0bd674c8e74764ac146ea55e217c091bde6fba82aa3 - languageName: node - linkType: hard - "safe-array-concat@npm:^1.0.1": version: 1.0.1 resolution: "safe-array-concat@npm:1.0.1" @@ -9746,13 +8818,6 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": - version: 5.1.2 - resolution: "safe-buffer@npm:5.1.2" - checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c - languageName: node - linkType: hard - "safe-regex-test@npm:^1.0.0": version: 1.0.0 resolution: "safe-regex-test@npm:1.0.0" @@ -10244,15 +9309,6 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:~1.1.1": - version: 1.1.1 - resolution: "string_decoder@npm:1.1.1" - dependencies: - safe-buffer: ~5.1.0 - checksum: 9ab7e56f9d60a28f2be697419917c50cac19f3e8e6c28ef26ed5f4852289fe0de5d6997d29becf59028556f2c62983790c1d9ba1e2a3cc401768ca12d5183a5b - languageName: node - linkType: hard - "strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": version: 6.0.1 resolution: "strip-ansi@npm:6.0.1" @@ -10499,16 +9555,6 @@ __metadata: languageName: node linkType: hard -"systeminformation@npm:^5.8.6": - version: 5.21.9 - resolution: "systeminformation@npm:5.21.9" - bin: - systeminformation: lib/cli.js - checksum: 33f8ee313f4e15d5dfde98e071110c5ee377dace8e34d5a4775224efd4cc1005771898a99a4f20ef4948c5249ad4ad961c10f10f235a11c3042399e879677b87 - conditions: (os=darwin | os=linux | os=win32 | os=freebsd | os=openbsd | os=netbsd | os=sunos | os=android) - languageName: node - linkType: hard - "table@npm:^6.8.1": version: 6.8.1 resolution: "table@npm:6.8.1" @@ -10627,19 +9673,6 @@ __metadata: languageName: node linkType: hard -"topojson-client@npm:^3.1.0": - version: 3.1.0 - resolution: "topojson-client@npm:3.1.0" - dependencies: - commander: 2 - bin: - topo2geo: bin/topo2geo - topomerge: bin/topomerge - topoquantize: bin/topoquantize - checksum: 8c029a4f18324ace0b8b55dd90edbd40c9e3c6de18bafbb5da37ca20ebf20e26fbd4420891acb3c2c264e214185f7557871f5651a9eee517028663be98d836de - languageName: node - linkType: hard - "tough-cookie@npm:^4.1.2": version: 4.1.3 resolution: "tough-cookie@npm:4.1.3" @@ -10726,7 +9759,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.5.0, tslib@npm:^2.6.0, tslib@npm:~2.6.2": +"tslib@npm:^2.5.0, tslib@npm:^2.6.0": version: 2.6.2 resolution: "tslib@npm:2.6.2" checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad @@ -10962,22 +9995,13 @@ __metadata: languageName: node linkType: hard -"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": +"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 languageName: node linkType: hard -"util@npm:^0.10.3": - version: 0.10.4 - resolution: "util@npm:0.10.4" - dependencies: - inherits: 2.0.3 - checksum: 913f9a90d05a60e91f91af01b8bd37e06bca4cc02d7b49e01089f9d5b78be2fffd61fb1a41b517de7238c5fc7337fa939c62d1fb4eb82e014894c7bee6637aaf - languageName: node - linkType: hard - "uuid@npm:^8.3.2": version: 8.3.2 resolution: "uuid@npm:8.3.2" @@ -11048,403 +10072,6 @@ __metadata: languageName: node linkType: hard -"vega-canvas@npm:^1.2.6, vega-canvas@npm:^1.2.7": - version: 1.2.7 - resolution: "vega-canvas@npm:1.2.7" - checksum: 6ff92fcdf0c359f2f662909c859a7f4cb4a502436136ab2f4c02373c47a621996ec0eea23e2108f11d62a618be301de86cd8528b5058c2e207a53ddd7ff58d1b - languageName: node - linkType: hard - -"vega-crossfilter@npm:~4.1.1": - version: 4.1.1 - resolution: "vega-crossfilter@npm:4.1.1" - dependencies: - d3-array: ^3.2.2 - vega-dataflow: ^5.7.5 - vega-util: ^1.17.1 - checksum: e399f7e92d7ba273ad5c1a9e29d362a9ec7feaeacb976eff3aa205b318382fb37a9fac3150ec1cb806364cd2b2cb54d5f23aea3285db684df2b4c27836422464 - languageName: node - linkType: hard - -"vega-dataflow@npm:^5.7.3, vega-dataflow@npm:^5.7.5, vega-dataflow@npm:~5.7.5": - version: 5.7.5 - resolution: "vega-dataflow@npm:5.7.5" - dependencies: - vega-format: ^1.1.1 - vega-loader: ^4.5.1 - vega-util: ^1.17.1 - checksum: 917ed63e88b0871169a883f68da127a404d88e50c9ed6fa3f063a706016b064594fb804a2bf99f09bc4a899819cac320bdde12467edc861af1acc024552dd202 - languageName: node - linkType: hard - -"vega-encode@npm:~4.9.2": - version: 4.9.2 - resolution: "vega-encode@npm:4.9.2" - dependencies: - d3-array: ^3.2.2 - d3-interpolate: ^3.0.1 - vega-dataflow: ^5.7.5 - vega-scale: ^7.3.0 - vega-util: ^1.17.1 - checksum: fcba123d2efb865b4f6cf8e9d64e0752ebae163dcfe61013f4874f7fe6fce3003ea9dd83b89db3ffab2a1530532a7c902dd24dfec226eb53d08dcf69189f308d - languageName: node - linkType: hard - -"vega-event-selector@npm:^3.0.1, vega-event-selector@npm:~3.0.1": - version: 3.0.1 - resolution: "vega-event-selector@npm:3.0.1" - checksum: 66d09b5800a19a9b0c75f28811b140a1a2e70e84be6d6f87c568cdbce6e17c8e195f130f4e3de5d6dc737142d1f46f4fe7645177e154582cc8ba27c6845b54e8 - languageName: node - linkType: hard - -"vega-expression@npm:^5.0.1, vega-expression@npm:^5.1.0, vega-expression@npm:~5.1.0": - version: 5.1.0 - resolution: "vega-expression@npm:5.1.0" - dependencies: - "@types/estree": ^1.0.0 - vega-util: ^1.17.1 - checksum: 0355ebb6edd8f2ccc2dcf277a29b42b13f971725443212ce8a64cb8a02049f75f0add7ca9afcd3bc6744b93be791b526e7f983d9080d5052e9b0ca55bd488ae5 - languageName: node - linkType: hard - -"vega-force@npm:~4.2.0": - version: 4.2.0 - resolution: "vega-force@npm:4.2.0" - dependencies: - d3-force: ^3.0.0 - vega-dataflow: ^5.7.5 - vega-util: ^1.17.1 - checksum: 8a371ca8d0892bc3e932cc279bbf54fe8b88e2b384c42f8df9877c801191953f3ee3e2f516f675a69ecb052ed081232dfb3438989620e8ad5c2a316ccee60277 - languageName: node - linkType: hard - -"vega-format@npm:^1.1.1, vega-format@npm:~1.1.1": - version: 1.1.1 - resolution: "vega-format@npm:1.1.1" - dependencies: - d3-array: ^3.2.2 - d3-format: ^3.1.0 - d3-time-format: ^4.1.0 - vega-time: ^2.1.1 - vega-util: ^1.17.1 - checksum: d506acb8611a6340ff419ebf308a758a54aaf3cf141863553df83980dcf8dc7bf806bee257d11a52d43682d159d7be03ab8a92bdd4d018d8c9f39a70c45cb197 - languageName: node - linkType: hard - -"vega-functions@npm:^5.13.1, vega-functions@npm:~5.13.2": - version: 5.13.2 - resolution: "vega-functions@npm:5.13.2" - dependencies: - d3-array: ^3.2.2 - d3-color: ^3.1.0 - d3-geo: ^3.1.0 - vega-dataflow: ^5.7.5 - vega-expression: ^5.1.0 - vega-scale: ^7.3.0 - vega-scenegraph: ^4.10.2 - vega-selections: ^5.4.1 - vega-statistics: ^1.8.1 - vega-time: ^2.1.1 - vega-util: ^1.17.1 - checksum: 178498cf93c3d9ef392fb57a5c7992dbb9118c546a6acb4cff9783f911fb30dbf50634cbfd6e3a9bc358c4aec9a571bd55f9cf3de551213cd386f152ac882986 - languageName: node - linkType: hard - -"vega-geo@npm:~4.4.1": - version: 4.4.1 - resolution: "vega-geo@npm:4.4.1" - dependencies: - d3-array: ^3.2.2 - d3-color: ^3.1.0 - d3-geo: ^3.1.0 - vega-canvas: ^1.2.7 - vega-dataflow: ^5.7.5 - vega-projection: ^1.6.0 - vega-statistics: ^1.8.1 - vega-util: ^1.17.1 - checksum: e9c62d9134c2449a1a80cd5cb71ed6dc455d893a36fdcb1a696bcae3897670c32687cf14a0f366b0ec76905e5be406131dc671e5d607ffcbef74e94b8c697007 - languageName: node - linkType: hard - -"vega-hierarchy@npm:~4.1.1": - version: 4.1.1 - resolution: "vega-hierarchy@npm:4.1.1" - dependencies: - d3-hierarchy: ^3.1.2 - vega-dataflow: ^5.7.5 - vega-util: ^1.17.1 - checksum: beb23948922f1b52bf03b836d71d3a5a36db3a6bfe2af74b6a5fc45a2e2e877226313e2389772be62a459728467618175d8c02a07e88330844fdec45fd5f69ac - languageName: node - linkType: hard - -"vega-label@npm:~1.2.1": - version: 1.2.1 - resolution: "vega-label@npm:1.2.1" - dependencies: - vega-canvas: ^1.2.6 - vega-dataflow: ^5.7.3 - vega-scenegraph: ^4.9.2 - vega-util: ^1.15.2 - checksum: 2704c99328ead677441e746acd8f4529301437d08b2758933fc13353d2eab9af353e4ebcc4ff1f09f41d600401b097e2df3c9e8e56d4861e5216222dd9e29185 - languageName: node - linkType: hard - -"vega-lite@npm:^5.6.1": - version: 5.15.0 - resolution: "vega-lite@npm:5.15.0" - dependencies: - json-stringify-pretty-compact: ~3.0.0 - tslib: ~2.6.2 - vega-event-selector: ~3.0.1 - vega-expression: ~5.1.0 - vega-util: ~1.17.2 - yargs: ~17.7.2 - peerDependencies: - vega: ^5.24.0 - bin: - vl2pdf: bin/vl2pdf - vl2png: bin/vl2png - vl2svg: bin/vl2svg - vl2vg: bin/vl2vg - checksum: 174c435dd7a637385c1e77117a7a919ae168f7d4611c3d647c7acd756fe9bca43070f7169171273b3680f5076f4d705ce1cd84bf02742aab94991f6db0509a97 - languageName: node - linkType: hard - -"vega-loader@npm:^4.5.1, vega-loader@npm:~4.5.1": - version: 4.5.1 - resolution: "vega-loader@npm:4.5.1" - dependencies: - d3-dsv: ^3.0.1 - node-fetch: ^2.6.7 - topojson-client: ^3.1.0 - vega-format: ^1.1.1 - vega-util: ^1.17.1 - checksum: 95f6eebc75a97665cf34faaea431934047e1b2e9d7532f48f62dab4884d606a7d9da53962e1631a5790a7a867f720581852a3db9be1a7f667882062f6c102ee0 - languageName: node - linkType: hard - -"vega-parser@npm:~6.2.0": - version: 6.2.0 - resolution: "vega-parser@npm:6.2.0" - dependencies: - vega-dataflow: ^5.7.5 - vega-event-selector: ^3.0.1 - vega-functions: ^5.13.1 - vega-scale: ^7.3.0 - vega-util: ^1.17.1 - checksum: 19872153c16aab30c4df338e0df7bd331e0bf74c7c6afce5428df555b9bdb0c4acf76b54092cacd4726a1349912ea803c90e1b30d53f4a02044e0559873969a7 - languageName: node - linkType: hard - -"vega-projection@npm:^1.6.0, vega-projection@npm:~1.6.0": - version: 1.6.0 - resolution: "vega-projection@npm:1.6.0" - dependencies: - d3-geo: ^3.1.0 - d3-geo-projection: ^4.0.0 - vega-scale: ^7.3.0 - checksum: 9c52848e294ff68051fe9f44fa536656c4e6be3d474bd3359e21aa154ab282755eaee624ac31b1ca01816227900e1d81a6d191e36f46e47525ed6648397f0fa0 - languageName: node - linkType: hard - -"vega-regression@npm:~1.2.0": - version: 1.2.0 - resolution: "vega-regression@npm:1.2.0" - dependencies: - d3-array: ^3.2.2 - vega-dataflow: ^5.7.3 - vega-statistics: ^1.9.0 - vega-util: ^1.15.2 - checksum: 5f79db18c7849b465550e00ca8fec9d896aa3cf6d6279daac8b862beb632d841dcb6a93136d6b827c37e3d1cbd2bb2f7dec58f96c572763870c2d38f2cc4e0b3 - languageName: node - linkType: hard - -"vega-runtime@npm:^6.1.4, vega-runtime@npm:~6.1.4": - version: 6.1.4 - resolution: "vega-runtime@npm:6.1.4" - dependencies: - vega-dataflow: ^5.7.5 - vega-util: ^1.17.1 - checksum: a1da40ddb3109f1ced8e61d2e7b52784fbb29936ee4c47cb5630dbbeb12ef6e0c3cd3cd189c34377f82402bf19c61dd148d90330fec743b8667635ac48e4ba29 - languageName: node - linkType: hard - -"vega-scale@npm:^7.3.0, vega-scale@npm:~7.3.0": - version: 7.3.0 - resolution: "vega-scale@npm:7.3.0" - dependencies: - d3-array: ^3.2.2 - d3-interpolate: ^3.0.1 - d3-scale: ^4.0.2 - vega-time: ^2.1.1 - vega-util: ^1.17.1 - checksum: 8e434f27a51a913dd18374ec0d2bc33758eda7db1ee6342721644f977e705268b8df6b3e89813774d776d03a0cd24f91d4d59f9e80951f67dfbbf8637f5a69ad - languageName: node - linkType: hard - -"vega-scenegraph@npm:^4.10.2, vega-scenegraph@npm:^4.9.2, vega-scenegraph@npm:~4.10.2": - version: 4.10.2 - resolution: "vega-scenegraph@npm:4.10.2" - dependencies: - d3-path: ^3.1.0 - d3-shape: ^3.2.0 - vega-canvas: ^1.2.7 - vega-loader: ^4.5.1 - vega-scale: ^7.3.0 - vega-util: ^1.17.1 - checksum: 6caf3e298297b918c8b6a72f019e51e2bfbaecd316e4d1c37d855ac9366d177cdbf16e9c8857c5ccde128bcd9645af7ee7dc81111bcd743d192e1a3b9a9d7185 - languageName: node - linkType: hard - -"vega-selections@npm:^5.4.1": - version: 5.4.1 - resolution: "vega-selections@npm:5.4.1" - dependencies: - d3-array: 3.2.2 - vega-expression: ^5.0.1 - vega-util: ^1.17.1 - checksum: c594d41ec3886af94976e4dc4e152bea9b3975a22d435aa38dac2aab105851cb83fd4aa0f1e81a47f8bc0bea1677af93816331e3ed084ab3ec2e51b3544c109f - languageName: node - linkType: hard - -"vega-statistics@npm:^1.7.9, vega-statistics@npm:^1.8.1, vega-statistics@npm:^1.9.0, vega-statistics@npm:~1.9.0": - version: 1.9.0 - resolution: "vega-statistics@npm:1.9.0" - dependencies: - d3-array: ^3.2.2 - checksum: bbf2ea088c5a6a662c6aed1bf57996c06a82a98228730ada8a97e57824a6ed391999ea974f16dcde6e73bf88799976d91aff748842848d38ab45dbb9fafba3f9 - languageName: node - linkType: hard - -"vega-time@npm:^2.1.1, vega-time@npm:~2.1.1": - version: 2.1.1 - resolution: "vega-time@npm:2.1.1" - dependencies: - d3-array: ^3.2.2 - d3-time: ^3.1.0 - vega-util: ^1.17.1 - checksum: 3d6a50f779be4b5e7f27bd2aae766035c29e59e03e62d2e96b94a2f759ed3104c1102c1006dd416e7b819ee501880ae7a722c2fa9aabf9efac86503c1aada14a - languageName: node - linkType: hard - -"vega-transforms@npm:~4.10.2": - version: 4.10.2 - resolution: "vega-transforms@npm:4.10.2" - dependencies: - d3-array: ^3.2.2 - vega-dataflow: ^5.7.5 - vega-statistics: ^1.8.1 - vega-time: ^2.1.1 - vega-util: ^1.17.1 - checksum: 2dbe4c767542a5dc4dbb453fd1317b00912e47dbdb3de637259b2552497dd8039c20c795318ad57341eb0d30b69712c55a2da16dc9ad2329a68c35fb75b4fee6 - languageName: node - linkType: hard - -"vega-typings@npm:~0.24.0": - version: 0.24.2 - resolution: "vega-typings@npm:0.24.2" - dependencies: - "@types/geojson": 7946.0.4 - vega-event-selector: ^3.0.1 - vega-expression: ^5.0.1 - vega-util: ^1.17.1 - checksum: 9c06430b2c8a5e6a8b29448333aa95b0946aa69c181933f52eb69f0e3594a0f308be7760f0febe13253a0b7414721841fce790b2b3812a7fb3b0a3f0391e6ace - languageName: node - linkType: hard - -"vega-util@npm:^1.15.2, vega-util@npm:^1.17.1, vega-util@npm:~1.17.2": - version: 1.17.2 - resolution: "vega-util@npm:1.17.2" - checksum: 5d681cb1a6ffda7af1b74df7c1c46a32f1d874daef54f9c9c65c7d7c7bfc4271dc6d9b1c1c7a853b14eb6e4cc8ec811b0132cd3ea25fa85259eac92e1b4f07fa - languageName: node - linkType: hard - -"vega-view-transforms@npm:~4.5.9": - version: 4.5.9 - resolution: "vega-view-transforms@npm:4.5.9" - dependencies: - vega-dataflow: ^5.7.5 - vega-scenegraph: ^4.10.2 - vega-util: ^1.17.1 - checksum: aeeaf3c2f1a02b1303c16a586dbcb20f208c101d06d7e988e18ab71fb67d87be5d8ff228ebf25971535d6e41dc816168cfa68b8676e7250df07a40aefdea32a7 - languageName: node - linkType: hard - -"vega-view@npm:~5.11.1": - version: 5.11.1 - resolution: "vega-view@npm:5.11.1" - dependencies: - d3-array: ^3.2.2 - d3-timer: ^3.0.1 - vega-dataflow: ^5.7.5 - vega-format: ^1.1.1 - vega-functions: ^5.13.1 - vega-runtime: ^6.1.4 - vega-scenegraph: ^4.10.2 - vega-util: ^1.17.1 - checksum: 82ddc74593b3a359d0b3458bc06573673ff9bf13f84020cb36fb4676c5d7f547e9650eb6faaa76799fbcedd27bcd266603dbd08c420e2d2229cc6b9f48a4a66d - languageName: node - linkType: hard - -"vega-voronoi@npm:~4.2.1": - version: 4.2.1 - resolution: "vega-voronoi@npm:4.2.1" - dependencies: - d3-delaunay: ^6.0.2 - vega-dataflow: ^5.7.5 - vega-util: ^1.17.1 - checksum: f618174ad5f451c507a80e373288bb2c0da7a8a908d62f885bc77b354c4334504ae2d1042742f68ad419ade7b548aeca9ca1042ae5541bebd7f5297afc23bb35 - languageName: node - linkType: hard - -"vega-wordcloud@npm:~4.1.4": - version: 4.1.4 - resolution: "vega-wordcloud@npm:4.1.4" - dependencies: - vega-canvas: ^1.2.7 - vega-dataflow: ^5.7.5 - vega-scale: ^7.3.0 - vega-statistics: ^1.8.1 - vega-util: ^1.17.1 - checksum: 34d1882651d3a2f34ce40a6eaeed700de126f627cdf041ec2bcc7ada46d7b4b68a38a2974236eec87ee876d9abd095af7ab17e7698b0e2fbc831460767969d7a - languageName: node - linkType: hard - -"vega@npm:^5.20.0": - version: 5.25.0 - resolution: "vega@npm:5.25.0" - dependencies: - vega-crossfilter: ~4.1.1 - vega-dataflow: ~5.7.5 - vega-encode: ~4.9.2 - vega-event-selector: ~3.0.1 - vega-expression: ~5.1.0 - vega-force: ~4.2.0 - vega-format: ~1.1.1 - vega-functions: ~5.13.2 - vega-geo: ~4.4.1 - vega-hierarchy: ~4.1.1 - vega-label: ~1.2.1 - vega-loader: ~4.5.1 - vega-parser: ~6.2.0 - vega-projection: ~1.6.0 - vega-regression: ~1.2.0 - vega-runtime: ~6.1.4 - vega-scale: ~7.3.0 - vega-scenegraph: ~4.10.2 - vega-statistics: ~1.9.0 - vega-time: ~2.1.1 - vega-transforms: ~4.10.2 - vega-typings: ~0.24.0 - vega-util: ~1.17.2 - vega-view: ~5.11.1 - vega-view-transforms: ~4.5.9 - vega-voronoi: ~4.2.1 - vega-wordcloud: ~4.1.4 - checksum: ddc7b1f2a70c72b842e111d32bdd8ff050992a50e385e8ddc6e35c02e7c481a652383c81c547b7ebfd31cda04ab9f9acf0a8cc47c6bd19b91765b254aac30d24 - languageName: node - linkType: hard - "vscode-jsonrpc@npm:8.2.0, vscode-jsonrpc@npm:^8.0.2": version: 8.2.0 resolution: "vscode-jsonrpc@npm:8.2.0" @@ -11905,7 +10532,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.3.1, yargs@npm:~17.7.2": +"yargs@npm:^17.3.1": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: From 85c48e6d72db9ac5d0d0bd5236232a9ffc1286aa Mon Sep 17 00:00:00 2001 From: Michael Marchetti Date: Fri, 13 Oct 2023 13:49:42 -0400 Subject: [PATCH 100/100] install python deps --- .github/workflows/pull-request.yaml | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index f79d6ce17..b4fad5e30 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -692,11 +692,9 @@ jobs: run: working-directory: ./extensions/jupyterlab/connect_jupyterlab steps: - - - name: Checkout + - name: Checkout uses: actions/checkout@v3 - - - name: Setup Just + - name: Setup Just uses: extractions/setup-just@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -709,9 +707,9 @@ jobs: run: python -m pip install -U "jupyterlab>=4.0.0,<5" - name: Install JS dependencies run: jlpm install - - - name: Validate extension code + - name: Install connect_jupyterlab package + run: just install + - name: Validate extension code run: just validate - - - name: Test extension code + - name: Test extension code run: just test