diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..fb5325f09 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# 忽略文件配置 +__pycache__/ +*.pyc diff --git a/README.md b/README.md new file mode 100644 index 000000000..ba497ec5b --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# 开源分析项目 +项目根目录:D:\kaiyuanfenxixiangmu +源代码目录:src\ +提交时间:2025/12/27 周六 21:11:37.74 diff --git a/src/.devcontainer/Dockerfile b/src/.devcontainer/Dockerfile new file mode 100644 index 000000000..2e773add9 --- /dev/null +++ b/src/.devcontainer/Dockerfile @@ -0,0 +1,13 @@ +FROM mcr.microsoft.com/devcontainers/base:jammy + +ARG PIXI_VERSION=v0.42.1 + +RUN curl -L -o /usr/local/bin/pixi -fsSL --compressed "https://github.com/prefix-dev/pixi/releases/download/${PIXI_VERSION}/pixi-$(uname -m)-unknown-linux-musl" \ + && chmod +x /usr/local/bin/pixi \ + && pixi info + +# set some user and workdir settings to work nicely with vscode +USER vscode +WORKDIR /home/vscode + +RUN echo 'eval "$(pixi completion -s bash)"' >> /home/vscode/.bashrc diff --git a/src/.devcontainer/devcontainer.json b/src/.devcontainer/devcontainer.json new file mode 100644 index 000000000..7a475ea4d --- /dev/null +++ b/src/.devcontainer/devcontainer.json @@ -0,0 +1,21 @@ +{ + "name": "Jupyter Notebook", + "build": { + "dockerfile": "Dockerfile", + "context": ".." + }, + "forwardPorts": [8888], + "customizations": { + "vscode": { + "settings": {}, + "extensions": ["ms-python.python", "charliermarsh.ruff", "GitHub.copilot"] + } + }, + "features": { + "ghcr.io/devcontainers/features/docker-in-docker:2": {} + }, + "mounts": [ + "source=${localWorkspaceFolderBasename}-pixi,target=${containerWorkspaceFolder}/.pixi,type=volume" + ], + "postCreateCommand": "sudo chown vscode .pixi && pixi install && pixi run develop && pixi run pre-commit install -f" +} diff --git a/src/.eslintignore b/src/.eslintignore new file mode 100644 index 000000000..09a9b90d5 --- /dev/null +++ b/src/.eslintignore @@ -0,0 +1,23 @@ +node_modules +**/build +**/lib +**/node_modules +**/mock_packages +**/static +**/typings +**/schemas +**/themes +coverage +*.map.js +*.bundle.js +app/index.template.js + +# jetbrains IDE stuff +.idea/ + +# ms IDE stuff +.history/ +.vscode/ + +# Pixi environments +.pixi diff --git a/src/.eslintrc.js b/src/.eslintrc.js new file mode 100644 index 000000000..252d32453 --- /dev/null +++ b/src/.eslintrc.js @@ -0,0 +1,57 @@ +module.exports = { + env: { + browser: true, + es6: true, + commonjs: true, + node: true, + 'jest/globals': true, + }, + root: true, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/eslint-recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:prettier/recommended', + 'plugin:react/recommended', + 'plugin:jest/recommended', + ], + parser: '@typescript-eslint/parser', + parserOptions: { + project: 'tsconfig.eslint.json', + sourceType: 'module', + }, + plugins: ['@typescript-eslint', 'jest'], + 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-var-requires': 'off', + '@typescript-eslint/no-use-before-define': 'off', + '@typescript-eslint/no-empty-interface': 'off', + '@typescript-eslint/quotes': [ + 'error', + 'single', + { avoidEscape: true, allowTemplateLiterals: false }, + ], + 'jest/no-done-callback': 'off', + curly: ['error', 'all'], + eqeqeq: 'error', + 'prefer-arrow-callback': 'error', + }, + settings: { + react: { + version: 'detect', + }, + }, +}; diff --git a/src/.eslintrc.json b/src/.eslintrc.json new file mode 100644 index 000000000..3b41a5ad9 --- /dev/null +++ b/src/.eslintrc.json @@ -0,0 +1,13 @@ +{ + "parserOptions": { + "ecmaVersion": 6, + "sourceType": "module" + }, + "rules": { + "semi": 1, + "no-cond-assign": 2, + "no-debugger": 2, + "comma-dangle": 0, + "no-unreachable": 2 + } +} diff --git a/src/.git-blame-ignore-revs b/src/.git-blame-ignore-revs new file mode 100644 index 000000000..9b6e24ffe --- /dev/null +++ b/src/.git-blame-ignore-revs @@ -0,0 +1,2 @@ +# Run auto-formatters: https://github.com/jupyter/notebook/pull/6335 +a7717d90f128368296fe3434deba5acd6031edab diff --git a/src/.gitattributes b/src/.gitattributes new file mode 100644 index 000000000..887a2c18f --- /dev/null +++ b/src/.gitattributes @@ -0,0 +1,2 @@ +# SCM syntax highlighting & preventing 3-way merges +pixi.lock merge=binary linguist-language=YAML linguist-generated=true diff --git a/src/.github/ISSUE_TEMPLATE/bug_report.md b/src/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 000000000..d9e70611b --- /dev/null +++ b/src/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,79 @@ +--- +name: "\U0001F41B Bug report" +about: Create a report to help us repair something that is currently broken +labels: bug, status:Needs Triage +--- + + + + + +## Description + + + +## Reproduce + + + +1. Go to '...' +2. Click on '...' +3. Scroll down to '...' +4. See error '...' + + + +## Expected behavior + + + +## Context + + + +- Operating System and version: +- Browser and version: + +- Jupyter Notebook version: + + + +
Troubleshoot Output +
+Paste the output from running `jupyter troubleshoot` from the command line here.
+You may want to sanitize the paths in the output.
+
+
+ +
Command Line Output +
+Paste the output from your command line running `jupyter notebook` here, use `--debug` if possible.
+
+
+ +
Browser Output + +
+Paste the output from your browser Javascript console here, if applicable.
+
+
+
diff --git a/src/.github/ISSUE_TEMPLATE/config.yml b/src/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000..3fb09a63d --- /dev/null +++ b/src/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,14 @@ +blank_issues_enabled: false +contact_links: + - name: Is this a common issue? See our Docs. + url: https://jupyter-notebook.readthedocs.io/en/latest/troubleshooting.html#what-to-do-when-things-go-wrong + about: Before opening an issue, make sure your issue hasn't already been addressed in the documentation. + - name: 馃 Support and all other questions, including if you're not sure what to do. + url: https://discourse.jupyter.org/c/notebook/31 + about: If you have a question or you're having issues installing Jupyter Notebook, try posting on Discourse. + - name: 馃挰 Chat with the devs + url: https://jupyter.zulipchat.com/ + about: Ask short questions about using Jupyter Notebook + - name: 馃摑 Do you have a feature request that may be applied upstream? See JupyterLab. + url: https://github.com/jupyterlab/jupyterlab + about: We recommend that you cross-reference JupyterLab for information when requesting new features and support for Notebook 7. We won't likely accept new features for Jupyter Notebook 6.x. diff --git a/src/.github/ISSUE_TEMPLATE/feature_request.md b/src/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 000000000..4904f7223 --- /dev/null +++ b/src/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,41 @@ +--- +name: "\U0001F680 Feature Request" +about: Suggest a new feature or a change +labels: enhancement, status:Needs Triage +--- + + + + + +### Problem + + + +### Proposed Solution + + + +### Additional context + + diff --git a/src/.github/actions/build-dist/action.yml b/src/.github/actions/build-dist/action.yml new file mode 100644 index 000000000..4747b6954 --- /dev/null +++ b/src/.github/actions/build-dist/action.yml @@ -0,0 +1,44 @@ +name: 'Build Jupyter Notebook' +description: 'Build Jupyter Notebook from source' +runs: + using: 'composite' + steps: + - name: Base Setup + uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + + - name: Install dependencies + shell: bash + run: | + python -m pip install hatch + + - name: Build pypi distributions + shell: bash + run: | + hatch build + + - name: Build npm distributions + shell: bash + run: | + mkdir pkgs + hatch run npm_pack + cp packages/*/*.tgz pkgs + + - name: Build checksum file + shell: bash + run: | + cd dist + sha256sum * | tee SHA256SUMS + cd ../pkgs + sha256sum * | tee SHA256SUMS + + - name: Upload distributions + uses: actions/upload-artifact@v4 + with: + name: notebook-dist-${{ github.run_number }} + path: ./dist + + - name: Upload distributions + uses: actions/upload-artifact@v4 + with: + name: notebook-pkgs-${{ github.run_number }} + path: ./pkgs diff --git a/src/.github/answered.yml b/src/.github/answered.yml new file mode 100644 index 000000000..e01cf284c --- /dev/null +++ b/src/.github/answered.yml @@ -0,0 +1,20 @@ +# This action automatically schedules issues to be closed that have been +# labeled as answered if there is no activity on them for 30 days. This takes +# care of the common usecase of an issue being answered to the best of our +# ability and no other follow-up from the submitter. +name: 'Close answered issues' +on: + schedule: + - cron: '30 1 * * *' + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v3 + with: + skip-stale-issue-message: true + days-before-stale: 30 + days-before-close: 7 + stale-issue-label: 'status:Closing as Answered' + only-issue-labels: 'status:Answered' diff --git a/src/.github/dependabot.yml b/src/.github/dependabot.yml new file mode 100644 index 000000000..7bec22842 --- /dev/null +++ b/src/.github/dependabot.yml @@ -0,0 +1,14 @@ +version: 2 +updates: + - package-ecosystem: 'github-actions' + directory: '/' + schedule: + interval: 'weekly' + groups: + actions: + patterns: + - "*" + - package-ecosystem: 'pip' + directory: '/' + schedule: + interval: 'weekly' diff --git a/src/.github/jupyterlab-probot.yml b/src/.github/jupyterlab-probot.yml new file mode 100644 index 000000000..bc128e667 --- /dev/null +++ b/src/.github/jupyterlab-probot.yml @@ -0,0 +1,2 @@ +addBinderLink: false +triageLabel: 'status:Needs Triage' diff --git a/src/.github/workflows/auto_author_assign.yml b/src/.github/workflows/auto_author_assign.yml new file mode 100644 index 000000000..5d16e8d48 --- /dev/null +++ b/src/.github/workflows/auto_author_assign.yml @@ -0,0 +1,17 @@ +# https://github.com/marketplace/actions/auto-author-assign +name: 'Auto Author Assign' + +on: + pull_request_target: + types: [opened, reopened] + +permissions: + contents: read + +jobs: + assign-author: + runs-on: ubuntu-latest + permissions: + pull-requests: write + steps: + - uses: toshimaru/auto-author-assign@v2.1.1 diff --git a/src/.github/workflows/binder.yml b/src/.github/workflows/binder.yml new file mode 100644 index 000000000..1ff492bb0 --- /dev/null +++ b/src/.github/workflows/binder.yml @@ -0,0 +1,18 @@ +name: Binder Badge +on: + pull_request_target: + types: [opened] + +permissions: + contents: read + +jobs: + binder: + runs-on: ubuntu-latest + permissions: + pull-requests: write + steps: + - uses: jupyterlab/maintainer-tools/.github/actions/binder-link@v1 + with: + github_token: ${{ secrets.github_token }} + url_path: tree diff --git a/src/.github/workflows/build.yml b/src/.github/workflows/build.yml new file mode 100644 index 000000000..f2963ebd1 --- /dev/null +++ b/src/.github/workflows/build.yml @@ -0,0 +1,214 @@ +name: Build + +on: + push: + branches: ['main'] + pull_request: + schedule: + - cron: '0 0 * * *' + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} + cancel-in-progress: true + +env: + PIP_DISABLE_PIP_VERSION_CHECK: 1 + +defaults: + run: + shell: bash -eux {0} + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Build + uses: ./.github/actions/build-dist + + test: + runs-on: ubuntu-latest + timeout-minutes: 20 + strategy: + fail-fast: false + matrix: + # used by the jupyterlab/maintainer-tools base-setup action + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Base Setup + uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + + - name: Test the package + run: hatch run cov:test + + - name: JavaScript tests + run: | + hatch run js_test + + - name: Integration Tests + run: | + pip install . + cd + jupyter labextension list 2>&1 | grep -ie "@jupyter-notebook/lab-extension.*enabled.*ok" - + jupyter server extension list 2>&1 | grep -ie "notebook.*enabled" - + python -m jupyterlab.browser_check + + - uses: jupyterlab/maintainer-tools/.github/actions/upload-coverage@v1 + + coverage: + runs-on: ubuntu-latest + needs: + - test + steps: + - uses: actions/checkout@v6 + - uses: jupyterlab/maintainer-tools/.github/actions/report-coverage@v1 + with: + fail_under: 78 + + test_docs: + name: Test Docs + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + - run: | + sudo apt-get update + sudo apt install enchant-2 # for spelling + + # pandoc is not up to date in the ubuntu repos, so we install directly + wget https://github.com/jgm/pandoc/releases/download/2.14.2/pandoc-2.14.2-1-amd64.deb && sudo dpkg -i pandoc-2.14.2-1-amd64.deb + - run: hatch run docs:build + + test_minimum_versions: + name: Test Minimum Versions + timeout-minutes: 20 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + with: + dependency_type: minimum + python_version: '3.10' + - name: Run the unit tests + run: | + hatch run test:nowarn || hatch run test:nowarn --lf + + test_prereleases: + name: Test Prereleases + runs-on: ubuntu-latest + timeout-minutes: 20 + steps: + - uses: actions/checkout@v6 + - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + with: + dependency_type: pre + - name: Run the tests + run: | + hatch run test:nowarn || hatch run test:nowarn --lf + + install: + needs: [build] + runs-on: ${{ matrix.os }} + timeout-minutes: 15 + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + python: ['3.9', '3.11', '3.13'] + include: + - python: '3.9' + dist: 'notebook*.tar.gz' + - python: '3.11' + dist: 'notebook*.whl' + - python: '3.13' + dist: 'notebook*.whl' + - os: windows-latest + py_cmd: python + - os: macos-latest + py_cmd: python3 + - os: ubuntu-latest + py_cmd: python + steps: + - name: Install Python + uses: actions/setup-python@v6 + with: + python-version: ${{ matrix.python }} + allow-prereleases: true + - uses: actions/download-artifact@v6 + with: + name: notebook-dist-${{ github.run_number }} + path: ./dist + - name: Install the prerequisites + run: | + ${{ matrix.py_cmd }} -m pip install -U pip wheel + - name: Install the package + run: | + cd dist + ${{ matrix.py_cmd }} -m pip install -vv ${{ matrix.dist }} + - name: Validate environment + run: | + ${{ matrix.py_cmd }} -m pip freeze + ${{ matrix.py_cmd }} -m pip check + - name: Validate the install + run: | + jupyter labextension list + jupyter labextension list 2>&1 | grep -ie "@jupyter-notebook/lab-extension.*enabled.*ok" - + jupyter server extension list + jupyter server extension list 2>&1 | grep -ie "notebook.*enabled" - + jupyter notebook --version + jupyter notebook --help + + check_links: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - uses: actions/checkout@v6 + - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + - uses: jupyterlab/maintainer-tools/.github/actions/check-links@v1 + with: + ignore_links: 'https://playwright.dev/docs/test-cli/ https://blog.jupyter.org/.* https://mybinder.org/v2/gh/jupyter/notebook/main https://nbviewer.jupyter.org https://stackoverflow.com https://github.com/[^/]+/?$' + ignore_glob: 'ui-tests/test/notebooks/*' + + test_lint: + name: Test Lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + - name: Run Linters + run: | + hatch run typing:test + hatch run lint:build + pipx run interrogate -v . + pipx run doc8 --max-line-length=200 docs/source *.md + npm install -g yarn + yarn + yarn eslint:check + yarn prettier:check + yarn build:utils + yarn integrity + + tests_check: # This job does nothing and is only used for the branch protection + if: always() + needs: + - coverage + - install + - test_lint + - test_docs + - test_minimum_versions + - test_prereleases + - check_links + runs-on: ubuntu-latest + steps: + - name: Decide whether the needed jobs succeeded or failed + uses: re-actors/alls-green@release/v1 + with: + jobs: ${{ toJSON(needs) }} diff --git a/src/.github/workflows/buildutils.yml b/src/.github/workflows/buildutils.yml new file mode 100644 index 000000000..ab59fd96a --- /dev/null +++ b/src/.github/workflows/buildutils.yml @@ -0,0 +1,84 @@ +name: Build Utilities + +on: + push: + branches: ['main'] + pull_request: + +defaults: + run: + shell: bash -l {0} + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + versioning: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Base Setup + uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + + - name: Install dependencies + run: | + python -m pip install -U "jupyterlab>=4.6.0a0,<4.7" hatch + jlpm + jlpm run build + + - name: Configure git identity to commit + run: | + git config --global user.email "you@example.com" + git config --global user.name "Your Name" + + - name: Reset version + run: | + hatch version 9.8.7 + jlpm run lerna version 9.8.7 --no-push --force-publish --no-git-tag-version --yes + git commit -am "Release 9.8.7" + + - name: Patch Release + run: | + jlpm release:patch --force + + - name: Minor Release + run: | + jlpm release:bump minor --force + + - name: Release Cycle + run: | + # beta + jlpm release:bump release --force + # rc + jlpm release:bump release --force + # final + jlpm release:bump release --force + + - name: Major Release + run: | + jlpm release:bump major --force + + npm: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Install Python + uses: actions/setup-python@v6 + with: + python-version: '3.10' + architecture: 'x64' + + - name: Install dependencies + run: | + python -m pip install -U "jupyterlab>=4.6.0a0,<4.7" pip + jlpm + jlpm run build diff --git a/src/.github/workflows/check-release.yml b/src/.github/workflows/check-release.yml new file mode 100644 index 000000000..ef463c60a --- /dev/null +++ b/src/.github/workflows/check-release.yml @@ -0,0 +1,33 @@ +name: Check Release +on: + push: + branches: ['main'] + pull_request: + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} + cancel-in-progress: true + +jobs: + check_release: + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - name: Checkout + uses: actions/checkout@v6 + - 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 }} + version_spec: next + + - name: Upload Distributions + uses: actions/upload-artifact@v5 + with: + name: notebook-jupyter-releaser-dist-${{ github.run_number }} + path: .jupyter_releaser_checkout/dist diff --git a/src/.github/workflows/enforce-label.yml b/src/.github/workflows/enforce-label.yml new file mode 100644 index 000000000..2217a7b76 --- /dev/null +++ b/src/.github/workflows/enforce-label.yml @@ -0,0 +1,16 @@ +name: Enforce PR label + +permissions: + contents: read + +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/src/.github/workflows/lock.yml b/src/.github/workflows/lock.yml new file mode 100644 index 000000000..a0b1b732b --- /dev/null +++ b/src/.github/workflows/lock.yml @@ -0,0 +1,23 @@ +name: 'Lock Closed Threads' + +on: + schedule: + - cron: '0 0 * * *' + +permissions: + contents: read + +jobs: + lock: + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + steps: + - uses: dessant/lock-threads@v5 + with: + github-token: ${{ github.token }} + issue-lock-inactive-days: '180' + issue-lock-labels: 'status:resolved-locked' + pr-lock-inactive-days: '180' + pr-lock-labels: 'status:resolved-locked' diff --git a/src/.github/workflows/playwright-update.yml b/src/.github/workflows/playwright-update.yml new file mode 100644 index 000000000..4df92af12 --- /dev/null +++ b/src/.github/workflows/playwright-update.yml @@ -0,0 +1,117 @@ +name: Update Playwright Snapshots + +on: + issue_comment: + types: [created, edited] + +permissions: + contents: read + +jobs: + update-snapshots: + if: > + ( + github.event.issue.author_association == 'OWNER' || + github.event.issue.author_association == 'COLLABORATOR' || + github.event.issue.author_association == 'MEMBER' || + github.event.comment.author_association == 'OWNER' || + github.event.comment.author_association == 'COLLABORATOR' || + github.event.comment.author_association == 'MEMBER' + ) && github.event.issue.pull_request && ( + contains(github.event.comment.body, 'please update playwright snapshots') || + contains(github.event.comment.body, 'please update galata snapshots') || + contains(github.event.comment.body, 'please update snapshots') + ) + runs-on: ubuntu-latest + permissions: + # Required by actions/update-snapshots + contents: write + pull-requests: write + strategy: + fail-fast: false + matrix: + browser: [firefox, chromium] + + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: React to the triggering comment + run: | + gh api repos/${{ github.repository }}/issues/comments/${{ github.event.comment.id }}/reactions --raw-field 'content=+1' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Configure git to use https + run: git config --global hub.protocol https + + - name: Get PR Info + id: pr + env: + PR_NUMBER: ${{ github.event.issue.number }} + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_REPO: ${{ github.repository }} + COMMENT_AT: ${{ github.event.comment.created_at }} + run: | + pr="$(gh api /repos/${GH_REPO}/pulls/${PR_NUMBER})" + head_sha="$(echo "$pr" | jq -r .head.sha)" + pushed_at="$(echo "$pr" | jq -r .pushed_at)" + + if [[ $(date -d "$pushed_at" +%s) -gt $(date -d "$COMMENT_AT" +%s) ]]; then + echo "Updating is not allowed because the PR was pushed to (at $pushed_at) after the triggering comment was issued (at $COMMENT_AT)" + exit 1 + fi + + echo "head_sha=$head_sha" >> $GITHUB_OUTPUT + + - name: Checkout the branch from the PR that triggered the job + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: gh pr checkout ${{ github.event.issue.number }} + + - name: Validate the fetched branch HEAD revision + env: + EXPECTED_SHA: ${{ steps.pr.outputs.head_sha }} + run: | + actual_sha="$(git rev-parse HEAD)" + + if [[ "$actual_sha" != "$EXPECTED_SHA" ]]; then + echo "The HEAD of the checked out branch ($actual_sha) differs from the HEAD commit available at the time when trigger comment was submitted ($EXPECTED_SHA)" + exit 1 + fi + + - name: Base Setup + uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + + - name: Build + uses: ./.github/actions/build-dist + + - uses: actions/download-artifact@v6 + with: + name: notebook-dist-${{ github.run_number }} + path: ./dist + + - name: Install the package + run: | + cd dist + python -m pip install -vv notebook*.whl + + # disable git hooks + git config core.hooksPath no-hooks + + - name: Install the test dependencies + run: | + cd ui-tests + jlpm + jlpm playwright install + + - name: Update snapshots + uses: jupyterlab/maintainer-tools/.github/actions/update-snapshots@v1 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + npm_client: jlpm + test_folder: ui-tests + start_server_script: 'null' + update_script: test:update --browser ${{ matrix.browser }} + env: + DEBUG: pw:webserver diff --git a/src/.github/workflows/prep-release.yml b/src/.github/workflows/prep-release.yml new file mode 100644 index 000000000..396330bb9 --- /dev/null +++ b/src/.github/workflows/prep-release.yml @@ -0,0 +1,49 @@ +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 + silent: + description: "Set a placeholder in the changelog and don't publish the release." + required: false + type: boolean + 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 + permissions: + contents: write + 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.GITHUB_TOKEN }} + version_spec: ${{ github.event.inputs.version_spec }} + silent: ${{ github.event.inputs.silent }} + post_version_spec: ${{ github.event.inputs.post_version_spec }} + target: ${{ github.event.inputs.target }} + 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/src/.github/workflows/publish-changelog.yml b/src/.github/workflows/publish-changelog.yml new file mode 100644 index 000000000..c576a5487 --- /dev/null +++ b/src/.github/workflows/publish-changelog.yml @@ -0,0 +1,34 @@ +name: "Publish Changelog" +on: + release: + types: [published] + + workflow_dispatch: + inputs: + branch: + description: "The branch to target" + required: false + +jobs: + publish_changelog: + runs-on: ubuntu-latest + environment: release + steps: + - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + + - uses: actions/create-github-app-token@v2 + id: app-token + with: + app-id: ${{ vars.APP_ID }} + private-key: ${{ secrets.APP_PRIVATE_KEY }} + + - name: Publish changelog + id: publish-changelog + uses: jupyter-server/jupyter_releaser/.github/actions/publish-changelog@v2 + with: + token: ${{ steps.app-token.outputs.token }} + branch: ${{ github.event.inputs.branch }} + + - name: "** Next Step **" + run: | + echo "Merge the changelog update PR: ${{ steps.publish-changelog.outputs.pr_url }}" diff --git a/src/.github/workflows/publish-release.yml b/src/.github/workflows/publish-release.yml new file mode 100644 index 000000000..5235ff4df --- /dev/null +++ b/src/.github/workflows/publish-release.yml @@ -0,0 +1,60 @@ +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 + environment: release + permissions: + id-token: write + steps: + - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + with: + node_version: '24' + + - uses: actions/create-github-app-token@v2 + id: app-token + with: + app-id: ${{ vars.APP_ID }} + private-key: ${{ secrets.APP_PRIVATE_KEY }} + + - name: Populate Release + id: populate-release + uses: jupyter-server/jupyter_releaser/.github/actions/populate-release@v2 + with: + token: ${{ steps.app-token.outputs.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: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + uses: jupyter-server/jupyter_releaser/.github/actions/finalize-release@v2 + with: + token: ${{ steps.app-token.outputs.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/src/.github/workflows/ui-tests.yml b/src/.github/workflows/ui-tests.yml new file mode 100644 index 000000000..4a81f4658 --- /dev/null +++ b/src/.github/workflows/ui-tests.yml @@ -0,0 +1,93 @@ +name: UI Tests + +on: + push: + branches: ['main'] + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + build: + name: Build + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Build + uses: ./.github/actions/build-dist + + ui-tests: + needs: [build] + runs-on: ubuntu-latest + timeout-minutes: 20 + strategy: + fail-fast: false + matrix: + browser: [firefox, chromium] + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Base Setup + uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + + - uses: actions/download-artifact@v6 + with: + name: notebook-dist-${{ github.run_number }} + path: ./dist + + - name: Install the package + run: | + cd dist + python -m pip install -vv notebook*.whl + + - name: Install the test dependencies + run: | + cd ui-tests + jlpm + jlpm playwright install + + - name: Test + run: | + cd ui-tests + jlpm test --browser ${{ matrix.browser }} + + - name: Upload Playwright Test assets + if: always() + uses: actions/upload-artifact@v5 + with: + name: notebook-${{ matrix.browser }}-test-assets + path: | + ui-tests/test-results + + - name: Upload Playwright Test report + if: always() + uses: actions/upload-artifact@v5 + with: + name: notebook-${{ matrix.browser }}-test-report + path: | + ui-tests/playwright-report + + - name: Update snapshots + if: failure() + run: | + cd ui-tests + # remove previous snapshots from other browser + jlpm rimraf "test/**/*-snapshots/*.png" + # generate new snapshots + jlpm run test:update --browser ${{ matrix.browser }} + + - name: Upload updated snapshots + if: failure() + uses: actions/upload-artifact@v5 + with: + name: notebook-${{ matrix.browser }}-updated-snapshots + path: ui-tests/test diff --git a/src/.github/workflows/upgrade-jupyterlab-dependencies.yml b/src/.github/workflows/upgrade-jupyterlab-dependencies.yml new file mode 100644 index 000000000..372834e5b --- /dev/null +++ b/src/.github/workflows/upgrade-jupyterlab-dependencies.yml @@ -0,0 +1,128 @@ +name: Check for latest JupyterLab releases + +on: + # schedule: + # - cron: 30 17 * * * + workflow_dispatch: + inputs: + version: + description: 'JupyterLab version' + default: latest + required: true + type: string + branch: + description: 'The branch to target' + default: main + required: false + type: string + target_repo: + description: 'Target repository' + required: false + default: jupyter/notebook + type: string + +env: + version_tag: 'latest' + +permissions: + actions: write + contents: write + pull-requests: write + +jobs: + check_for_lab_updates: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v6 + with: + ref: ${{ inputs.branch || 'main' }} + + - name: Set up Python + uses: actions/setup-python@v6 + with: + python-version: '3.11' + + - name: Install Node + uses: actions/setup-node@v6 + with: + node-version: '20.x' + + - name: Install npm dependencies and build buildutils + run: | + python -m pip install -e ".[dev]" + + jlpm + jlpm run build:utils + + - name: Check for new releases and update + shell: bash + run: | + set -eux + for version in ${{ inputs.version || env.version_tag }} + do + if [[ "${version}" == "latest" ]]; then + export LATEST=$(jlpm run get:lab:version --set-version ${version}) + else + export LATEST=${version} + fi + done + + echo "latest=${LATEST}" >> $GITHUB_ENV + jlpm upgrade:lab:dependencies --set-version ${LATEST} + if [[ ! -z "$(git status --porcelain package.json)" ]]; then + jlpm + jlpm deduplicate + + cd ui-tests + jlpm + jlpm deduplicate + fi + - uses: prefix-dev/setup-pixi@v0.9.3 + with: + pixi-version: v0.41.4 + manifest-path: pyproject.toml + locked: false + + - name: Update pixi.lock + run: pixi install + + - name: Create a PR + env: + GITHUB_TOKEN: ${{ secrets.PERSONAL_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + run: | + set -eux + + export LATEST=${{ env.latest }} + export BRANCH_NAME=update-to-v${LATEST} + + # if resulted in any change: + if [[ ! -z "$(git status --porcelain package.json)" ]]; then + # if branch already exists. + if git ls-remote --heads origin | grep "refs/heads/${BRANCH_NAME}$" > /dev/null; then + echo "Branch '${BRANCH_NAME}' exists." + else + # new branch is created + git checkout -b "${BRANCH_NAME}" + git config user.name "github-actions[bot]" + git config user.email 'github-actions[bot]@users.noreply.github.com' + + git commit . -m "Update to JupyterLab v${LATEST}" + + git push --set-upstream origin "${BRANCH_NAME}" + + PR_ARGS=( + --base "${{ inputs.branch || 'main' }}" + --title "Update to JupyterLab v${LATEST}" + --body "New JupyterLab release [v${LATEST}](https://github.com/jupyterlab/jupyterlab/releases/tag/v${LATEST}) is available. Please review the lock file carefully." + ) + + # Add --repo flag only if target_repo is specified + if [[ -n "${{ inputs.target_repo }}" ]]; then + PR_ARGS+=(--repo "${{ inputs.target_repo }}") + fi + + gh pr create "${PR_ARGS[@]}" + fi + fi diff --git a/src/.gitignore b/src/.gitignore new file mode 100644 index 000000000..e64792f0d --- /dev/null +++ b/src/.gitignore @@ -0,0 +1,20 @@ +# Python缓存文件 +__pycache__/ +*.pyc +*.pyo +ECHO 处于打开状态。 +# 临时文件 +*.swp +*.swo +ECHO 处于打开状态。 +# IDE配置文件 +.vscode/ +.idea/ +ECHO 处于打开状态。 +# 系统文件 +.DS_Store +Thumbs.db +ECHO 处于打开状态。 +# 大型依赖目录 +node_modules/ +.yarn/ diff --git a/src/.pre-commit-config.yaml b/src/.pre-commit-config.yaml new file mode 100644 index 000000000..902b27f4d --- /dev/null +++ b/src/.pre-commit-config.yaml @@ -0,0 +1,86 @@ +ci: + autoupdate_schedule: monthly + autoupdate_commit_msg: 'chore: update pre-commit hooks' + +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v5.0.0 + hooks: + - id: check-case-conflict + - id: check-ast + - id: check-docstring-first + - id: check-executables-have-shebangs + - id: check-added-large-files + - id: check-case-conflict + - id: check-merge-conflict + - id: check-json + - id: check-toml + - id: check-yaml + - id: debug-statements + - id: end-of-file-fixer + - id: trailing-whitespace + + - repo: https://github.com/python-jsonschema/check-jsonschema + rev: 0.30.0 + hooks: + - id: check-github-workflows + + - repo: https://github.com/codespell-project/codespell + rev: 'v2.3.0' + hooks: + - id: codespell + args: ['-L', 'hart,noteable', '--skip', "*.spec.ts"] + exclude: | + (?x)^( + yarn.lock| + pixi.lock| + binder/example.ipynb| + docs/source/examples/images/FrontendKernel.graffle/data.plist| + )$ + + - repo: https://github.com/pre-commit/mirrors-mypy + rev: "v1.14.1" + hooks: + - id: mypy + files: "^notebook" + stages: [manual] + args: ["--install-types", "--non-interactive"] + additional_dependencies: ["traitlets>=5.13", "tornado", "jupyter_server>=2.10", "jupyterlab_server>=2.25", "jupyterlab>=4.6.0a0,<4.7"] + + - repo: https://github.com/pre-commit/pygrep-hooks + rev: 'v1.10.0' + hooks: + - id: rst-backticks + - id: rst-directive-colons + - id: rst-inline-touching-normal + + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.8.6 + hooks: + - id: ruff + types_or: [ python, jupyter ] + exclude: '^docs/source/examples/Notebook/Importing Notebooks.ipynb' + args: ['--fix', '--show-fixes'] + - id: ruff-format + types_or: [ python, jupyter ] + exclude: '^docs/source/examples/Notebook/Importing Notebooks.ipynb' + + - repo: https://github.com/scientific-python/cookie + rev: '2024.08.19' + hooks: + - id: sp-repo-review + additional_dependencies: ['repo-review[cli]'] + + - repo: local + hooks: + - id: prettier + name: prettier + entry: 'npm run prettier:files' + language: node + types_or: [json, ts, tsx, javascript, jsx, css, markdown] + stages: [manual] + - id: integrity + name: integrity + entry: 'npm run integrity --force' + language: node + stages: [pre-push] diff --git a/src/.prettierignore b/src/.prettierignore new file mode 100644 index 000000000..8eba6956b --- /dev/null +++ b/src/.prettierignore @@ -0,0 +1,12 @@ +node_modules +.mypy_cache +.ruff_cache +**/node_modules +**/lib +**/package.json +**/static +**/labextension +build +CHANGELOG.md +app/index.template.js +.pixi diff --git a/src/.prettierrc b/src/.prettierrc new file mode 100644 index 000000000..544138be4 --- /dev/null +++ b/src/.prettierrc @@ -0,0 +1,3 @@ +{ + "singleQuote": true +} diff --git a/src/.readthedocs.yaml b/src/.readthedocs.yaml new file mode 100644 index 000000000..52d94a4a3 --- /dev/null +++ b/src/.readthedocs.yaml @@ -0,0 +1,13 @@ +version: 2 +sphinx: + configuration: docs/source/conf.py +build: + os: ubuntu-22.04 + tools: + python: '3.9' + nodejs: '16' +python: + install: + # install notebook itself + - method: pip + path: '.[docs]' diff --git a/src/.yarnrc.yml b/src/.yarnrc.yml new file mode 100644 index 000000000..72353e525 --- /dev/null +++ b/src/.yarnrc.yml @@ -0,0 +1,5 @@ +enableImmutableInstalls: false +enableInlineBuilds: false +enableTelemetry: false +httpTimeout: 60000 +nodeLinker: node-modules diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md new file mode 100644 index 000000000..9a6092566 --- /dev/null +++ b/src/CHANGELOG.md @@ -0,0 +1,3894 @@ +# Changelog + +A summary of changes in the Jupyter notebook. For more detailed +information, see [GitHub](https://github.com/jupyter/notebook). + +Use `pip install notebook --upgrade` or `conda upgrade notebook` to +upgrade to the latest release. + +We strongly recommend that you upgrade pip to version 9+ of pip before +upgrading `notebook`. + +Use `pip install pip --upgrade` to upgrade pip. Check pip version with +`pip --version`. + +## 7.5 + +Jupyter Notebook 7.5 is based on JupyterLab 4.5, and includes a number of new features, bug fixes, and enhancements for extension developers. This release is compatible with extensions supporting JupyterLab 4.0. Extension authors are recommended to consult the [Extension Migration Guide](https://jupyterlab.readthedocs.io/en/latest/extension/extension_migration.html#jupyterlab-4-4-to-4-5) which lists deprecations and changes to the public API. + +Below are a few highlights for this new release. Most of the new features and improvements come from the update to JupyterLab 4.5, although they may not all be supported in Notebook 7.5. + +For reference you may have a look at the [JupyterLab 4.5 changelog](https://jupyterlab.readthedocs.io/en/latest/getting_started/changelog.html#v4-5) to learn more. + +### Notebook improvements + +The default windowing mode is now `contentVisibility` which improves cell rendering and alleviates previously reported issues. The minimap can be enabled for all windowing modes and all notebooks via the `Settings` menu, or by toggling the minimap per notebook with the `View` -> `Show Minimap` option. + +Additional fixes improve layout containment and scrollbar behavior when working with long cells. + +### Debugger and console enhancements + +The debugger's evaluate dialog has been replaced with an interactive console featuring syntax highlighting and code completion. The variables panel now preserves state when switching editors. Visual improvements include highlighted selected breakpoints, improved empty line handling, and a paused indicator. Debugger panels now reference cell execution counts. + +Debugger panels with reference to execution counts and paused indicator as well as console evaluation + +Log Console users can configure default log levels and customize toolbars. + +### Terminal enhancements + +The terminal now includes search functionality, with search highlights that adapt to theme changes. + +### Media and content support + +Built-in audio and video viewers allow direct file playback within Jupyter Notebook. + +Video file opened in a Jupyter Notebook tab + +### File browser enhancements + +- There is a new `allowFileUploads` setting to control upload permissions. +- Menu options for creating Python, R, or Julia files are now available from the New menu. +- The "Select All" command is now available with the Ctrl + A (or Cmd + A on macOS) keyboard shortcut in the file browser. +- Breadcrumbs are now configurable through `breadcrumbsLeftItems` and `breadcrumbsRightItems` settings. + +### Settings editor improvements + +The `addExtraLineOnCellMerge` setting removes extra lines when merging cells, matching classic notebook behavior. + +### Cell toolbar settings + +The cell toolbar settings are now exposed in the Settings Editor, making it easier to customize the cell toolbar appearance and behavior. + +### Keyboard shortcuts + +The `O` key has been defined as the keyboard shortcut to toggle cell outputs, restoring this familiar functionality from the classic notebook. + +### User interface and accessibility + +Automatic theme switching between light and dark modes is now available when system synchronization is enabled. Dialog components display buttons and checkboxes on separate lines for improved readability. Terminal selections show better visibility under high-contrast themes. Keyboard navigation and status bar tab ordering have been improved. + +### Breaking changes + +Python 3.8 support has been dropped in this release. + + + +## 7.6.0a0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.1...e7f5e5d50ea18b0b17fe8a9df674025fcc6ab5d1)) + +### Maintenance and upkeep improvements + +- Bump systeminformation from 5.23.14 to 5.27.14 in /ui-tests [#7788](https://github.com/jupyter/notebook/pull/7788) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab `4.6.0a0` [#7787](https://github.com/jupyter/notebook/pull/7787) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +The following people contributed discussions, new ideas, code and documentation contributions, and review. +See [our definition of contributors](https://github-activity.readthedocs.io/en/latest/#how-does-this-tool-define-contributions-in-the-reports). + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-12-16&to=2025-12-17&type=c)) + +@jtpio ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-12-16..2025-12-17&type=Issues)) + + + +## 7.5.1 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0...fccf56801be0a27a3de76c00d2710a941f255b10)) + +### Bugs fixed + +- Fix selector for the `O` keyboard shortcut [#7782](https://github.com/jupyter/notebook/pull/7782) ([@jtpio](https://github.com/jtpio), [@krassowski](https://github.com/krassowski)) +- Fix missing debugger display provider in Notebook [#7774](https://github.com/jupyter/notebook/pull/7774) ([@arjxn-py](https://github.com/arjxn-py), [@jtpio](https://github.com/jtpio), [@martinRenou](https://github.com/martinRenou)) + +### Maintenance and upkeep improvements + +- Update to JupyterLab v4.5.1 [#7785](https://github.com/jupyter/notebook/pull/7785) ([@jtpio](https://github.com/jtpio)) +- Fix link to the IPython install page [#7783](https://github.com/jupyter/notebook/pull/7783) ([@jtpio](https://github.com/jtpio)) +- Fix `hatch build`, ignore links to `blog.jupyter.org` [#7780](https://github.com/jupyter/notebook/pull/7780) ([@jtpio](https://github.com/jtpio)) +- Bump the actions group with 4 updates [#7773](https://github.com/jupyter/notebook/pull/7773) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +The following people contributed discussions, new ideas, code and documentation contributions, and review. +See [our definition of contributors](https://github-activity.readthedocs.io/en/latest/#how-does-this-tool-define-contributions-in-the-reports). + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-11-19&to=2025-12-16&type=c)) + +@arjxn-py ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aarjxn-py+updated%3A2025-11-19..2025-12-16&type=Issues)) | @jtpio ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-11-19..2025-12-16&type=Issues)) | @krassowski ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2025-11-19..2025-12-16&type=Issues)) | @martinRenou ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AmartinRenou+updated%3A2025-11-19..2025-12-16&type=Issues)) + +## 7.5.0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0...be53ec8bc96cdbcb64b6f1c5ec39c123c087a348)) + +### Enhancements made + +- Update to JupyterLab v4.5.0b1 [#7746](https://github.com/jupyter/notebook/pull/7746) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab v4.5.0b0 [#7739](https://github.com/jupyter/notebook/pull/7739) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab v4.5.0a4 [#7728](https://github.com/jupyter/notebook/pull/7728) ([@jtpio](https://github.com/jtpio)) +- Increase the checkpoint polling interval to 30s [#7711](https://github.com/jupyter/notebook/pull/7711) ([@jtpio](https://github.com/jtpio)) +- Define `O` as the keyboard shortcut to toggle cell outputs [#7709](https://github.com/jupyter/notebook/pull/7709) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab v4.5.0a3 [#7703](https://github.com/jupyter/notebook/pull/7703) ([@jtpio](https://github.com/jtpio)) + +### Bugs fixed + +- Expose the cell toolbar settings [#7766](https://github.com/jupyter/notebook/pull/7766) ([@jtpio](https://github.com/jtpio)) +- Handle file rename errors [#7710](https://github.com/jupyter/notebook/pull/7710) ([@jtpio](https://github.com/jtpio)) +- Fix open file with 鈥#鈥 in the filename [#7698](https://github.com/jupyter/notebook/pull/7698) ([@itsmevichu](https://github.com/itsmevichu)) + +### Maintenance and upkeep improvements + +- Update to JupyterLab v4.5.0 [#7768](https://github.com/jupyter/notebook/pull/7768) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab v4.5.0rc1 [#7764](https://github.com/jupyter/notebook/pull/7764) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab v4.5.0rc0 [#7755](https://github.com/jupyter/notebook/pull/7755) ([@jtpio](https://github.com/jtpio)) +- Bump the actions group across 1 directory with 3 updates [#7751](https://github.com/jupyter/notebook/pull/7751) ([@dependabot](https://github.com/dependabot)) +- Use Node.js 24 / npm 11 to publish releases [#7749](https://github.com/jupyter/notebook/pull/7749) ([@jtpio](https://github.com/jtpio)) +- Revert "Pin `click<8.3`" [#7733](https://github.com/jupyter/notebook/pull/7733) ([@jtpio](https://github.com/jtpio)) +- Remove link to `npmjs.com` [#7730](https://github.com/jupyter/notebook/pull/7730) ([@jtpio](https://github.com/jtpio)) +- Pin `click<8.3` [#7729](https://github.com/jupyter/notebook/pull/7729) ([@jtpio](https://github.com/jtpio)) +- Bump the actions group across 1 directory with 3 updates [#7704](https://github.com/jupyter/notebook/pull/7704) ([@dependabot](https://github.com/dependabot)) +- Update to JupyterLab v4.5.0a2 [#7694](https://github.com/jupyter/notebook/pull/7694) ([@jtpio](https://github.com/jtpio)) +- Pin `httpx` [#7691](https://github.com/jupyter/notebook/pull/7691) ([@jtpio](https://github.com/jtpio)) +- Bump prefix-dev/setup-pixi from 0.8.10 to 0.8.11 in the actions group [#7675](https://github.com/jupyter/notebook/pull/7675) ([@dependabot](https://github.com/dependabot)) +- Bump prefix-dev/setup-pixi from 0.8.8 to 0.8.10 in the actions group [#7665](https://github.com/jupyter/notebook/pull/7665) ([@dependabot](https://github.com/dependabot)) +- Bump brace-expansion from 1.1.11 to 1.1.12 in /ui-tests [#7664](https://github.com/jupyter/notebook/pull/7664) ([@dependabot](https://github.com/dependabot)) +- Revert "CI: pin to `jupyter-core<5.8.0` on Windows" [#7657](https://github.com/jupyter/notebook/pull/7657) ([@minrk](https://github.com/minrk)) +- Update to JupyterLab v4.5.0a1 [#7656](https://github.com/jupyter/notebook/pull/7656) ([@jtpio](https://github.com/jtpio)) +- CI: pin to `jupyter-core<5.8.0` on Windows [#7655](https://github.com/jupyter/notebook/pull/7655) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab v4.5.0a0 [#7650](https://github.com/jupyter/notebook/pull/7650) ([@jtpio](https://github.com/jtpio)) +- Run UI tests on `ubuntu-latest` [#7639](https://github.com/jupyter/notebook/pull/7639) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab v4.4.1 [#7638](https://github.com/jupyter/notebook/pull/7638) ([@jtpio](https://github.com/jtpio)) +- Bump prefix-dev/setup-pixi from 0.8.5 to 0.8.8 in the actions group [#7637](https://github.com/jupyter/notebook/pull/7637) ([@dependabot](https://github.com/dependabot)) +- chore: Fix UP006 [#7633](https://github.com/jupyter/notebook/pull/7633) ([@honnix](https://github.com/honnix)) +- Bump prefix-dev/setup-pixi from 0.8.4 to 0.8.5 in the actions group [#7632](https://github.com/jupyter/notebook/pull/7632) ([@dependabot](https://github.com/dependabot)) +- Drop support for Python 3.8 [#7628](https://github.com/jupyter/notebook/pull/7628) ([@honnix](https://github.com/honnix)) + +### Documentation improvements + +- User facing changelog for 7.5 [#7770](https://github.com/jupyter/notebook/pull/7770) ([@jtpio](https://github.com/jtpio)) +- Clean up references to Gitpod [#7767](https://github.com/jupyter/notebook/pull/7767) ([@jtpio](https://github.com/jtpio)) +- Fix link to Code of Conduct in CONTRIBUTING.md [#7758](https://github.com/jupyter/notebook/pull/7758) ([@jtpio](https://github.com/jtpio)) +- Remove JupyterCon 2025 announcement banner [#7757](https://github.com/jupyter/notebook/pull/7757) ([@jasongrout](https://github.com/jasongrout)) +- Update JupyterCon 2025 announcement links [#7744](https://github.com/jupyter/notebook/pull/7744) ([@krassowski](https://github.com/krassowski)) +- Add JupyterCon banner and add Jupyter colors [#7727](https://github.com/jupyter/notebook/pull/7727) ([@choldgraf](https://github.com/choldgraf)) +- Fix grammatical issues in Contributing.md [#7669](https://github.com/jupyter/notebook/pull/7669) ([@sangampaudel530](https://github.com/sangampaudel530)) +- Fixed grammar and typos in CONTRIBUTING.md [#7645](https://github.com/jupyter/notebook/pull/7645) ([@jchen1223](https://github.com/jchen1223)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-04-09&to=2025-11-19&type=c)) + +[@afshin](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aafshin+updated%3A2025-04-09..2025-11-19&type=Issues) | [@choldgraf](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Acholdgraf+updated%3A2025-04-09..2025-11-19&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2025-04-09..2025-11-19&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-04-09..2025-11-19&type=Issues) | [@honnix](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ahonnix+updated%3A2025-04-09..2025-11-19&type=Issues) | [@itsmevichu](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aitsmevichu+updated%3A2025-04-09..2025-11-19&type=Issues) | [@jasongrout](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajasongrout+updated%3A2025-04-09..2025-11-19&type=Issues) | [@jchen1223](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajchen1223+updated%3A2025-04-09..2025-11-19&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-04-09..2025-11-19&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2025-04-09..2025-11-19&type=Issues) | [@lumberbot-app](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Alumberbot-app+updated%3A2025-04-09..2025-11-19&type=Issues) | [@minrk](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aminrk+updated%3A2025-04-09..2025-11-19&type=Issues) | [@nkn2022](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ankn2022+updated%3A2025-04-09..2025-11-19&type=Issues) | [@sangampaudel530](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Asangampaudel530+updated%3A2025-04-09..2025-11-19&type=Issues) + +## 7.5.0rc1 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0-rc.0...7533ccab5e4adc765e57a35b1791850daf952044)) + +### Maintenance and upkeep improvements + +- Update to JupyterLab v4.5.0rc1 [#7764](https://github.com/jupyter/notebook/pull/7764) ([@jtpio](https://github.com/jtpio)) +- Bump the actions group across 1 directory with 3 updates [#7751](https://github.com/jupyter/notebook/pull/7751) ([@dependabot](https://github.com/dependabot)) + +### Documentation improvements + +- Fix link to Code of Conduct in CONTRIBUTING.md [#7758](https://github.com/jupyter/notebook/pull/7758) ([@jtpio](https://github.com/jtpio)) +- Remove JupyterCon 2025 announcement banner [#7757](https://github.com/jupyter/notebook/pull/7757) ([@jasongrout](https://github.com/jasongrout)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-11-03&to=2025-11-14&type=c)) + +[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2025-11-03..2025-11-14&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-11-03..2025-11-14&type=Issues) | [@jasongrout](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajasongrout+updated%3A2025-11-03..2025-11-14&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-11-03..2025-11-14&type=Issues) + +## 7.5.0rc0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0-beta.1...18ba796a58402999044b7e8c4401319b76fed0ce)) + +### Maintenance and upkeep improvements + +- Update to JupyterLab v4.5.0rc0 [#7755](https://github.com/jupyter/notebook/pull/7755) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-10-20&to=2025-11-03&type=c)) + +[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2025-10-20..2025-11-03&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-10-20..2025-11-03&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-10-20..2025-11-03&type=Issues) + +## 7.5.0b1 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0-beta.0...7f84b95ed6550508f9de03d27cd8c2cb84777648)) + +### Enhancements made + +- Update to JupyterLab v4.5.0b1 [#7746](https://github.com/jupyter/notebook/pull/7746) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Use Node.js 24 / npm 11 to publish releases [#7749](https://github.com/jupyter/notebook/pull/7749) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Update JupyterCon 2025 announcement links [#7744](https://github.com/jupyter/notebook/pull/7744) ([@krassowski](https://github.com/krassowski)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-09-29&to=2025-10-20&type=c)) + +[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-09-29..2025-10-20&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-09-29..2025-10-20&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2025-09-29..2025-10-20&type=Issues) | [@nkn2022](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ankn2022+updated%3A2025-09-29..2025-10-20&type=Issues) + +## 7.5.0b0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0-alpha.3...828708ec26cc4d2ff9f8b725b00024481ae42d2d)) + +### Enhancements made + +- Update to JupyterLab v4.5.0b0 [#7739](https://github.com/jupyter/notebook/pull/7739) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Add JupyterCon banner and add Jupyter colors [#7727](https://github.com/jupyter/notebook/pull/7727) ([@choldgraf](https://github.com/choldgraf)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-09-24&to=2025-09-29&type=c)) + +[@choldgraf](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Acholdgraf+updated%3A2025-09-24..2025-09-29&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-09-24..2025-09-29&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-09-24..2025-09-29&type=Issues) + +## 7.5.0a3 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0-alpha.2...254b06ca4b232a0a96ad2dddde560e41df371e57)) + +### Enhancements made + +- Update to JupyterLab v4.5.0a4 [#7728](https://github.com/jupyter/notebook/pull/7728) ([@jtpio](https://github.com/jtpio)) +- Increase the checkpoint polling interval to 30s [#7711](https://github.com/jupyter/notebook/pull/7711) ([@jtpio](https://github.com/jtpio)) +- Define `O` as the keyboard shortcut to toggle cell outputs [#7709](https://github.com/jupyter/notebook/pull/7709) ([@jtpio](https://github.com/jtpio)) + +### Bugs fixed + +- Handle file rename errors [#7710](https://github.com/jupyter/notebook/pull/7710) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Revert "Pin `click<8.3`" [#7733](https://github.com/jupyter/notebook/pull/7733) ([@jtpio](https://github.com/jtpio)) +- Remove link to `npmjs.com` [#7730](https://github.com/jupyter/notebook/pull/7730) ([@jtpio](https://github.com/jtpio)) +- Pin `click<8.3` [#7729](https://github.com/jupyter/notebook/pull/7729) ([@jtpio](https://github.com/jtpio)) +- Bump the actions group across 1 directory with 3 updates [#7704](https://github.com/jupyter/notebook/pull/7704) ([@dependabot](https://github.com/dependabot)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-08-18&to=2025-09-24&type=c)) + +[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2025-08-18..2025-09-24&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-08-18..2025-09-24&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-08-18..2025-09-24&type=Issues) | [@nkn2022](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ankn2022+updated%3A2025-08-18..2025-09-24&type=Issues) + +## 7.5.0a2 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0-alpha.1...3100d879bfe09c629b4add998bd2ac408ffa2af8)) + +### Enhancements made + +- Update to JupyterLab v4.5.0a3 [#7703](https://github.com/jupyter/notebook/pull/7703) ([@jtpio](https://github.com/jtpio)) + +### Bugs fixed + +- Fix open file with 鈥#鈥 in the filename [#7698](https://github.com/jupyter/notebook/pull/7698) ([@itsmevichu](https://github.com/itsmevichu)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-08-11&to=2025-08-18&type=c)) + +[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-08-11..2025-08-18&type=Issues) | [@itsmevichu](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aitsmevichu+updated%3A2025-08-11..2025-08-18&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-08-11..2025-08-18&type=Issues) + +## 7.5.0a1 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0-alpha.0...f56a27c17bfd85f37a27dea9512c675120571e63)) + +### Maintenance and upkeep improvements + +- Update to JupyterLab v4.5.0a2 [#7694](https://github.com/jupyter/notebook/pull/7694) ([@jtpio](https://github.com/jtpio)) +- Pin `httpx` [#7691](https://github.com/jupyter/notebook/pull/7691) ([@jtpio](https://github.com/jtpio)) +- Bump prefix-dev/setup-pixi from 0.8.10 to 0.8.11 in the actions group [#7675](https://github.com/jupyter/notebook/pull/7675) ([@dependabot](https://github.com/dependabot)) +- Bump prefix-dev/setup-pixi from 0.8.8 to 0.8.10 in the actions group [#7665](https://github.com/jupyter/notebook/pull/7665) ([@dependabot](https://github.com/dependabot)) +- Bump brace-expansion from 1.1.11 to 1.1.12 in /ui-tests [#7664](https://github.com/jupyter/notebook/pull/7664) ([@dependabot](https://github.com/dependabot)) +- Revert "CI: pin to `jupyter-core<5.8.0` on Windows" [#7657](https://github.com/jupyter/notebook/pull/7657) ([@minrk](https://github.com/minrk)) +- Update to JupyterLab v4.5.0a1 [#7656](https://github.com/jupyter/notebook/pull/7656) ([@jtpio](https://github.com/jtpio)) +- CI: pin to `jupyter-core<5.8.0` on Windows [#7655](https://github.com/jupyter/notebook/pull/7655) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Fix grammatical issues in Contributing.md [#7669](https://github.com/jupyter/notebook/pull/7669) ([@sangampaudel530](https://github.com/sangampaudel530)) +- Fixed grammar and typos in CONTRIBUTING.md [#7645](https://github.com/jupyter/notebook/pull/7645) ([@jchen1223](https://github.com/jchen1223)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-05-07&to=2025-08-11&type=c)) + +[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2025-05-07..2025-08-11&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-05-07..2025-08-11&type=Issues) | [@jchen1223](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajchen1223+updated%3A2025-05-07..2025-08-11&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-05-07..2025-08-11&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2025-05-07..2025-08-11&type=Issues) | [@minrk](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aminrk+updated%3A2025-05-07..2025-08-11&type=Issues) | [@sangampaudel530](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Asangampaudel530+updated%3A2025-05-07..2025-08-11&type=Issues) + +## 7.5.0a0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0...22e29fc41901ef8116670bc8a04eeb833858ff51)) + +### Maintenance and upkeep improvements + +- Update to JupyterLab v4.5.0a0 [#7650](https://github.com/jupyter/notebook/pull/7650) ([@jtpio](https://github.com/jtpio)) +- Run UI tests on `ubuntu-latest` [#7639](https://github.com/jupyter/notebook/pull/7639) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab v4.4.1 [#7638](https://github.com/jupyter/notebook/pull/7638) ([@jtpio](https://github.com/jtpio)) +- Bump prefix-dev/setup-pixi from 0.8.5 to 0.8.8 in the actions group [#7637](https://github.com/jupyter/notebook/pull/7637) ([@dependabot](https://github.com/dependabot)) +- chore: Fix UP006 [#7633](https://github.com/jupyter/notebook/pull/7633) ([@honnix](https://github.com/honnix)) +- Bump prefix-dev/setup-pixi from 0.8.4 to 0.8.5 in the actions group [#7632](https://github.com/jupyter/notebook/pull/7632) ([@dependabot](https://github.com/dependabot)) +- Drop support for Python 3.8 [#7628](https://github.com/jupyter/notebook/pull/7628) ([@honnix](https://github.com/honnix)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-04-09&to=2025-05-07&type=c)) + +[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2025-04-09..2025-05-07&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-04-09..2025-05-07&type=Issues) | [@honnix](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ahonnix+updated%3A2025-04-09..2025-05-07&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-04-09..2025-05-07&type=Issues) + +## 7.4 + +Jupyter Notebook 7.4 is based on JupyterLab 4.4, and includes a number of new features, bug fixes, and enhancements for extension developers. This release is compatible with extensions supporting JupyterLab 4.0. Extension authors are recommended to consult the [Extension Migration Guide](https://jupyterlab.readthedocs.io/en/latest/extension/extension_migration.html#jupyterlab-4-3-to-4-4) which lists deprecations and changes to the public API. + +Below are a few highlights for this new release. Most of the new features and improvements come from the update to JupyterLab 4.4, although they may not all be supported in Notebook 7.4. + +For reference you may have a look at the [JupyterLab 4.4 changelog](https://jupyterlab.readthedocs.io/en/latest/getting_started/changelog.html#v4-4) to learn more. + +### Code console improvements + +The code console prompt can now be positioned on the top, left, or right side of the console, +in addition to the default bottom placement. The placement is persisted in the Prompt Cell +Position setting. + +The console toolbar now includes buttons to: +- Execute code +- Restart the kernel +- Clear the cells +- Switch the kernel + +The option to change console prompt position is available under the three dots button in the console toolbar, which is the last toolbar button + +Additional settings for console behavior have been added: +- Clear Code Content on Execute (enabled by default) 鈥 When disabled, the code submitted for execution remains in the code editor, allowing for further edits. +- Hide Code Input 鈥 When enabled, only the execution output is shown in the console. +- Clear Cells on Execute 鈥 When enabled, only the last cell is displayed. + +Toggling all the three new settings transforms the console into an interactive editor +resembling an ephemeral notebook with a single cell. + +Toggling all the three new settings transforms the console into a single cell + +### Settings import and export + +Settings can now be exported to `overrides.json` from the Settings Editor, +which can be used to pre-configure defaults in deployments or to restore settings. + +The Import and Export buttons in the Settings Editor are the first two items in the toolbar panel + +### Support for collaboration without `RTC:` drive + +Real time collaboration in previous versions of JupyterLab and Jupyter Notebook +(which can be enabled by installing jupyter-collaboration package) +was implemented by swapping the default JupyterLab file system +drive to a collaborative drive with the `RTC:` prefix. +This approach was incompatible with multiple extensions. +JupyterLab 4.4 introduces the Content Providers API, which allows the next version of `jupyter-collaboration` to work without changing the drive prefix. +This improves compatibility with extensions that do not support arbitrary drives. + +### Context menu opt-out + +The context menu, available under right mouse click in browsers, can now be disabled globally +by toggling the `Enable Context Menu` option available in the Command Palette, +or via the JSON Settings Editor in the Application Context Menu. + +## 7.4.0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.3.2...fbfe36574e04b16ed7ba9303c5e819330f402f87)) + +### Highlights 鉁 + +To learn more about the highlights of the 7.4.0 release: https://jupyter-notebook.readthedocs.io/en/latest/changelog.html + +### Enhancements made + +- Update to JupyterLab v4.4.0rc1 [#7622](https://github.com/jupyter/notebook/pull/7622) ([@jtpio](https://github.com/jtpio)) +- Add support for a `down` area [#7619](https://github.com/jupyter/notebook/pull/7619) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab v4.4.0rc0 [#7618](https://github.com/jupyter/notebook/pull/7618) ([@jtpio](https://github.com/jtpio)) +- Support `ServiceManagerPlugin` [#7616](https://github.com/jupyter/notebook/pull/7616) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab `v4.4.0b1` [#7607](https://github.com/jupyter/notebook/pull/7607) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab v4.4.0b0 [#7591](https://github.com/jupyter/notebook/pull/7591) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab v4.4.0a3 [#7577](https://github.com/jupyter/notebook/pull/7577) ([@jtpio](https://github.com/jtpio)) +- Add active cell border padding, remove double cell padding [#7570](https://github.com/jupyter/notebook/pull/7570) ([@andrii-i](https://github.com/andrii-i)) + +### Bugs fixed + +- Fix undefined error when checkpoints is empty [#7567](https://github.com/jupyter/notebook/pull/7567) ([@jdavid](https://github.com/jdavid)) + +### Maintenance and upkeep improvements + +- Bump the actions group with 2 updates [#7626](https://github.com/jupyter/notebook/pull/7626) ([@dependabot](https://github.com/dependabot)) +- Update to JupyterLab v4.4.0b2 [#7614](https://github.com/jupyter/notebook/pull/7614) ([@jtpio](https://github.com/jtpio)) +- Add pixi step to the update workflow [#7608](https://github.com/jupyter/notebook/pull/7608) ([@jtpio](https://github.com/jtpio)) +- Update `@babel` dependencies [#7605](https://github.com/jupyter/notebook/pull/7605) ([@jtpio](https://github.com/jtpio)) +- Add devcontainer support, backed by pixi [#7602](https://github.com/jupyter/notebook/pull/7602) ([@jtpio](https://github.com/jtpio)) +- Manual dependabot bumps [#7599](https://github.com/jupyter/notebook/pull/7599) ([@jtpio](https://github.com/jtpio)) +- Bump vega-selections from 5.4.1 to 5.5.0 in /ui-tests [#7592](https://github.com/jupyter/notebook/pull/7592) ([@dependabot](https://github.com/dependabot)) +- Improve handling of optional notebook tracker [#7581](https://github.com/jupyter/notebook/pull/7581) ([@jtpio](https://github.com/jtpio)) +- Fix upgrade script [#7579](https://github.com/jupyter/notebook/pull/7579) ([@jtpio](https://github.com/jtpio)) +- Allow owners/members/collab to trigger galata update on other's PR [#7572](https://github.com/jupyter/notebook/pull/7572) ([@krassowski](https://github.com/krassowski)) +- Update `typescript` and `lerna` [#7562](https://github.com/jupyter/notebook/pull/7562) ([@jtpio](https://github.com/jtpio)) +- Update pre-commit hooks [#7561](https://github.com/jupyter/notebook/pull/7561) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab v4.4.0a2 [#7559](https://github.com/jupyter/notebook/pull/7559) ([@jtpio](https://github.com/jtpio)) +- Bump the actions group across 1 directory with 2 updates [#7558](https://github.com/jupyter/notebook/pull/7558) ([@dependabot](https://github.com/dependabot)) +- Improve update script [#7556](https://github.com/jupyter/notebook/pull/7556) ([@jtpio](https://github.com/jtpio)) +- Disable cron scheduling for now [#7555](https://github.com/jupyter/notebook/pull/7555) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab v4.4.0a1 [#7554](https://github.com/jupyter/notebook/pull/7554) ([@jtpio](https://github.com/jtpio)) +- Update workflow improvements [#7552](https://github.com/jupyter/notebook/pull/7552) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- User facing changelog for 7.4 [#7612](https://github.com/jupyter/notebook/pull/7612) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-12-21&to=2025-04-09&type=c)) + +[@andrii-i](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aandrii-i+updated%3A2024-12-21..2025-04-09&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2024-12-21..2025-04-09&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-12-21..2025-04-09&type=Issues) | [@jdavid](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajdavid+updated%3A2024-12-21..2025-04-09&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-12-21..2025-04-09&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2024-12-21..2025-04-09&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2024-12-21..2025-04-09&type=Issues) + +## 7.4.0rc0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0-beta.3...7fa19999c9e01d713a684e0f25d8017dbc999528)) + +### Enhancements made + +- Update to JupyterLab v4.4.0rc1 [#7622](https://github.com/jupyter/notebook/pull/7622) ([@jtpio](https://github.com/jtpio)) +- Add support for a `down` area [#7619](https://github.com/jupyter/notebook/pull/7619) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-03-26&to=2025-04-03&type=c)) + +[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-03-26..2025-04-03&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-03-26..2025-04-03&type=Issues) + +## 7.4.0b3 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0-beta.2...434221c0fe3de3df3b4b54ed1005712e07957352)) + +### Enhancements made + +- Update to JupyterLab v4.4.0rc0 [#7618](https://github.com/jupyter/notebook/pull/7618) ([@jtpio](https://github.com/jtpio)) +- Support `ServiceManagerPlugin` [#7616](https://github.com/jupyter/notebook/pull/7616) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-03-20&to=2025-03-26&type=c)) + +[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-03-20..2025-03-26&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-03-20..2025-03-26&type=Issues) + +## 7.4.0b2 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0-beta.1...be2fd12f91a64796d9919ee8b8242f3093aac8a5)) + +### Maintenance and upkeep improvements + +- Update to JupyterLab v4.4.0b2 [#7614](https://github.com/jupyter/notebook/pull/7614) ([@jtpio](https://github.com/jtpio)) +- Add pixi step to the update workflow [#7608](https://github.com/jupyter/notebook/pull/7608) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- User facing changelog for 7.4 [#7612](https://github.com/jupyter/notebook/pull/7612) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-03-14&to=2025-03-20&type=c)) + +[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-03-14..2025-03-20&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-03-14..2025-03-20&type=Issues) + +## 7.4.0b1 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0-beta.0...6d06d97302bd1bb77e25864214ade2277f2e50d4)) + +### Enhancements made + +- Update to JupyterLab `v4.4.0b1` [#7607](https://github.com/jupyter/notebook/pull/7607) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Update `@babel` dependencies [#7605](https://github.com/jupyter/notebook/pull/7605) ([@jtpio](https://github.com/jtpio)) +- Add devcontainer support, backed by pixi [#7602](https://github.com/jupyter/notebook/pull/7602) ([@jtpio](https://github.com/jtpio)) +- Manual dependabot bumps [#7599](https://github.com/jupyter/notebook/pull/7599) ([@jtpio](https://github.com/jtpio)) +- Bump vega-selections from 5.4.1 to 5.5.0 in /ui-tests [#7592](https://github.com/jupyter/notebook/pull/7592) ([@dependabot](https://github.com/dependabot)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-02-20&to=2025-03-14&type=c)) + +[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2025-02-20..2025-03-14&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-02-20..2025-03-14&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-02-20..2025-03-14&type=Issues) + +## 7.4.0b0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0-alpha.3...48243197bbd004555008cd7cfa14c907147aceca)) + +### Enhancements made + +- Update to JupyterLab v4.4.0b0 [#7591](https://github.com/jupyter/notebook/pull/7591) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-02-05&to=2025-02-20&type=c)) + +[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-02-05..2025-02-20&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-02-05..2025-02-20&type=Issues) + +## 7.4.0a3 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0-alpha.2...48e52c759ffec0cea47dfef59f48d8e9fa6112d3)) + +### Enhancements made + +- Add active cell border padding, remove double cell padding [#7570](https://github.com/jupyter/notebook/pull/7570) ([@andrii-i](https://github.com/andrii-i)) + +### Maintenance and upkeep improvements + +- Improve handling of optional notebook tracker [#7581](https://github.com/jupyter/notebook/pull/7581) ([@jtpio](https://github.com/jtpio)) +- Fix upgrade script [#7579](https://github.com/jupyter/notebook/pull/7579) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-02-03&to=2025-02-05&type=c)) + +[@andrii-i](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aandrii-i+updated%3A2025-02-03..2025-02-05&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-02-03..2025-02-05&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-02-03..2025-02-05&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2025-02-03..2025-02-05&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2025-02-03..2025-02-05&type=Issues) + +## 7.4.0a2 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0-alpha.1...ef4f6346cd6b377ade271fcd61810b5d2a7d0f41)) + +### Enhancements made + +- Update to JupyterLab v4.4.0a3 [#7577](https://github.com/jupyter/notebook/pull/7577) ([@jtpio](https://github.com/jtpio)) + +### Bugs fixed + +- Fix undefined error when checkpoints is empty [#7567](https://github.com/jupyter/notebook/pull/7567) ([@jdavid](https://github.com/jdavid)) + +### Maintenance and upkeep improvements + +- Allow owners/members/collab to trigger galata update on other's PR [#7572](https://github.com/jupyter/notebook/pull/7572) ([@krassowski](https://github.com/krassowski)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-01-07&to=2025-02-03&type=c)) + +[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-01-07..2025-02-03&type=Issues) | [@jdavid](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajdavid+updated%3A2025-01-07..2025-02-03&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-01-07..2025-02-03&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2025-01-07..2025-02-03&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2025-01-07..2025-02-03&type=Issues) + +## 7.4.0a1 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0-alpha.0...18672b7e85ec5181e4c5c18d2e32c3e9eab7260c)) + +### Maintenance and upkeep improvements + +- Update `typescript` and `lerna` [#7562](https://github.com/jupyter/notebook/pull/7562) ([@jtpio](https://github.com/jtpio)) +- Update pre-commit hooks [#7561](https://github.com/jupyter/notebook/pull/7561) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab v4.4.0a2 [#7559](https://github.com/jupyter/notebook/pull/7559) ([@jtpio](https://github.com/jtpio)) +- Bump the actions group across 1 directory with 2 updates [#7558](https://github.com/jupyter/notebook/pull/7558) ([@dependabot](https://github.com/dependabot)) +- Improve update script [#7556](https://github.com/jupyter/notebook/pull/7556) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-12-21&to=2025-01-07&type=c)) + +[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2024-12-21..2025-01-07&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-12-21..2025-01-07&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-12-21..2025-01-07&type=Issues) + +## 7.4.0a0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.3.2...12efbe601858c317bf677dc835d314489357e20d)) + +### Maintenance and upkeep improvements + +- Disable cron scheduling for now [#7555](https://github.com/jupyter/notebook/pull/7555) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab v4.4.0a1 [#7554](https://github.com/jupyter/notebook/pull/7554) ([@jtpio](https://github.com/jtpio)) +- Update workflow improvements [#7552](https://github.com/jupyter/notebook/pull/7552) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-12-21&to=2024-12-21&type=c)) + +[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-12-21..2024-12-21&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-12-21..2024-12-21&type=Issues) + +## 7.3 + +Jupyter Notebook 7.3 is based on JupyterLab 4.3, and includes a number of new features, bug fixes, and enhancements for extension developers. This release is compatible with extensions supporting JupyterLab 4.0. Extension authors are recommended to consult the [Extension Migration Guide](https://jupyterlab.readthedocs.io/en/latest/extension/extension_migration.html#jupyterlab-4-2-to-4-3) which lists deprecations and changes to the public API. + +Below are a few highlights for this new release. Most of the new features and improvements come from the update to JupyterLab 4.3, although they may not all be supported in Notebook 7.3. + +For reference you may have a look at the [JupyterLab 4.3 changelog](https://jupyterlab.readthedocs.io/en/latest/getting_started/changelog.html#v4-3) to learn more. + +### Minimap + +The virtual scrollbar now acts as a minimap and exposes information on whether a cell: + +- is running/scheduled (`[*]`), idle (`[ ]`) or was already run (e.g. `[1]`) +- was modified since it was last executed (鈥渄irty鈥) - orange background +- has an output that contains an error - red background +- is markdown/code (`[ ]`/`[*]`/`[1]` for code, nothing for markdown) +- how much text/code it contains + +![a screenshot showing the notebook minimap](https://raw.githubusercontent.com/jupyterlab/jupyterlab/main/docs/source/getting_started/changelog_assets/4.3-minimap.png) + +To enable the minimap, click on the hamburger icon (鈮) which appears in the notebook鈥檚 toolbar. If you do not see the hamburger icon, go to `Settings 鈫 Notebook 鈫 Windowing mode` and choose 鈥渇ull鈥. + +### File browser enhancements + +The file browser now: + +- supports resizing the columns and remembers the column sizes after reloading JupyterLab +- supports uploading folders by drag-and-drop +- supports navigation with a single click +- adds a file filter collapsed by default (funnel icon) + +![a screenshot showing that it's now possible to resize the file browser columns](https://github.com/user-attachments/assets/b0d9cd0a-2828-43f7-a922-e8b271e5f7fc) + +In Jupyter Notebook, the single click navigation is enabled by default. If you would like to disable it to get the same experience as in JupyterLab, go to `Settings 鈫 File Browser` and make sure "Navigate files and directories with single click" is unchecked. + +### Improved kernel and server interactions + +The previous release enabled connecting to external kernels, such as those spawned by a third-party application like Blender. In this release the kernel selector dialog was improved to also show the external kernels. + +The previous release improved the awareness of the kernel/kernel specification distinction by providing both tree and list view in the kernels sidebar panel, but only the tree view featured the kernel identifiers. In this release both the list and tree view show the kernel identifier stub. + +A new toolbar button was added in the kernel allowing to shut down unused kernels (kernels with no widget attached). + +![a screenshot showing the list view of the kernels in the sidebar](https://github.com/user-attachments/assets/c7f958c5-4054-4b09-8fad-4df6db8c9b58) + +### Full Width Notebook + +It is now possible to configure the notebook to take up the full width of the page via: + +- a setting that can be defined by a user via the Settings Editor +- the `View > Enable Full Width Notebook` menu entry +- the command palette, searching for `Enable Full Width Notebook` + +![a screenshot showing how to enable full width notebook via the menu](https://github.com/user-attachments/assets/148b227a-874a-4bb3-a4c6-c7350525ccc4) + +This is particularly useful on large displays, or for those who prefer working with a wider notebook. + +It is also possible to use the JupyterLab interface for a more fully-featured experience, which allows for full-width notebooks too, and offers a "Simple Interface" mode for only showing a single notebook at a time. + +You can open JupyterLab by clicking on `View > Open JupyterLab`. + +## 7.3.2 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.3.1...7959ba0de553e9c541d2716d76108a8bc0bc2d6c)) + +### Maintenance and upkeep improvements + +- Fix update script [#7550](https://github.com/jupyter/notebook/pull/7550) ([@jtpio](https://github.com/jtpio)) +- Fix workflow to update the JupyterLab version [#7548](https://github.com/jupyter/notebook/pull/7548) ([@jtpio](https://github.com/jtpio)) +- Bump nanoid from 3.3.7 to 3.3.8 in /ui-tests [#7547](https://github.com/jupyter/notebook/pull/7547) ([@dependabot](https://github.com/dependabot)) +- Bump systeminformation from 5.21.8 to 5.23.14 in /ui-tests [#7546](https://github.com/jupyter/notebook/pull/7546) ([@dependabot](https://github.com/dependabot)) +- Workflow to update JupyterLab dependencies automatically [#7281](https://github.com/jupyter/notebook/pull/7281) ([@itsmevichu](https://github.com/itsmevichu)) +- Update to JupyterLab v4.3.4 [#7551](https://github.com/jupyter/notebook/pull/7551) ([@github-actions](https://github.com/apps/github-actions)) + +### Documentation improvements + +- Update chat links to Zulip. [#7539](https://github.com/jupyter/notebook/pull/7539) ([@ericsnekbytes](https://github.com/ericsnekbytes)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-12-04&to=2024-12-21&type=c)) + +[@Carreau](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ACarreau+updated%3A2024-12-04..2024-12-21&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2024-12-04..2024-12-21&type=Issues) | [@ericsnekbytes](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aericsnekbytes+updated%3A2024-12-04..2024-12-21&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-12-04..2024-12-21&type=Issues) | [@itsmevichu](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aitsmevichu+updated%3A2024-12-04..2024-12-21&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-12-04..2024-12-21&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2024-12-04..2024-12-21&type=Issues) + +## 7.3.1 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.3.0...21d0306ecef93ea23bf063bc1d8a0580450cd4df)) + +### Maintenance and upkeep improvements + +- Adds jupyter-ui-toolkit packages in shared scope [#7530](https://github.com/jupyter/notebook/pull/7530) ([@brichet](https://github.com/brichet)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-12-04&to=2024-12-04&type=c)) + +[@brichet](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2024-12-04..2024-12-04&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-12-04..2024-12-04&type=Issues) + +## 7.3.0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.2.0...b16eed26eff8e357eeccbef3f3434df77fb8ab48)) + +### Enhancements made + +- Fix for auto scroll output option [#7511](https://github.com/jupyter/notebook/pull/7511) ([@gjmooney](https://github.com/gjmooney)) +- Add a setting to enable the notebook to take up the full width [#7487](https://github.com/jupyter/notebook/pull/7487) ([@jtpio](https://github.com/jtpio)) +- Add the file filter button to the file browser toolbar [#7479](https://github.com/jupyter/notebook/pull/7479) ([@jtpio](https://github.com/jtpio)) +- Redirect paths from the notebooks route to the tree route if they are directories [#7446](https://github.com/jupyter/notebook/pull/7446) ([@andyscho](https://github.com/andyscho)) +- Update to JupyterLab `4.3.0a1` [#7416](https://github.com/jupyter/notebook/pull/7416) ([@jtpio](https://github.com/jtpio)) +- Support custom page_data_hook function [#7387](https://github.com/jupyter/notebook/pull/7387) ([@bluestealth](https://github.com/bluestealth)) +- Add missing "Open..." file menu [#7385](https://github.com/jupyter/notebook/pull/7385) ([@martinRenou](https://github.com/martinRenou)) +- Duplicate notebook menu option [#7374](https://github.com/jupyter/notebook/pull/7374) ([@JasonWeill](https://github.com/JasonWeill)) + +### Bugs fixed + +- Move handling of the file browser settings to a separate plugin, enable file browser single click navigation [#7481](https://github.com/jupyter/notebook/pull/7481) ([@jtpio](https://github.com/jtpio)) +- Remove pseudoelement obstructing the cell collapser [#7392](https://github.com/jupyter/notebook/pull/7392) ([@krassowski](https://github.com/krassowski)) +- "Close and Shut Down Notebook" shuts down without the confirmation dialog [#7384](https://github.com/jupyter/notebook/pull/7384) ([@JasonWeill](https://github.com/JasonWeill)) +- Adds message about building code before running 'develop' [#7382](https://github.com/jupyter/notebook/pull/7382) ([@JasonWeill](https://github.com/JasonWeill)) + +### Maintenance and upkeep improvements + +- Bump Python version used on CI [#7528](https://github.com/jupyter/notebook/pull/7528) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab 4.3.2 [#7527](https://github.com/jupyter/notebook/pull/7527) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab 4.3.1 [#7521](https://github.com/jupyter/notebook/pull/7521) ([@jtpio](https://github.com/jtpio)) +- Add webpack prod config [#7513](https://github.com/jupyter/notebook/pull/7513) ([@gjmooney](https://github.com/gjmooney)) +- Update to JupyterLab 4.3 final [#7507](https://github.com/jupyter/notebook/pull/7507) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab `4.3.0rc1` [#7497](https://github.com/jupyter/notebook/pull/7497) ([@jtpio](https://github.com/jtpio)) +- Remove the `StateDB` file browser trick [#7477](https://github.com/jupyter/notebook/pull/7477) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab `4.3.0rc0` [#7423](https://github.com/jupyter/notebook/pull/7423) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab 4.3.0a0 [#7378](https://github.com/jupyter/notebook/pull/7378) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Fix link to the JupyterLab 4.3 changelog [#7529](https://github.com/jupyter/notebook/pull/7529) ([@jtpio](https://github.com/jtpio)) +- Rename some header links to fit better [#7508](https://github.com/jupyter/notebook/pull/7508) ([@gjmooney](https://github.com/gjmooney)) +- Add user facing changelog for `7.3.0` [#7494](https://github.com/jupyter/notebook/pull/7494) ([@jtpio](https://github.com/jtpio)) +- Fix typos [#7472](https://github.com/jupyter/notebook/pull/7472) ([@algonell](https://github.com/algonell)) +- Adds message about building code before running 'develop' [#7382](https://github.com/jupyter/notebook/pull/7382) ([@JasonWeill](https://github.com/JasonWeill)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-05-16&to=2024-12-04&type=c)) + +[@algonell](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aalgonell+updated%3A2024-05-16..2024-12-04&type=Issues) | [@andyscho](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aandyscho+updated%3A2024-05-16..2024-12-04&type=Issues) | [@bluestealth](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abluestealth+updated%3A2024-05-16..2024-12-04&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-05-16..2024-12-04&type=Issues) | [@gjmooney](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agjmooney+updated%3A2024-05-16..2024-12-04&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AJasonWeill+updated%3A2024-05-16..2024-12-04&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-05-16..2024-12-04&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2024-05-16..2024-12-04&type=Issues) | [@martinRenou](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AmartinRenou+updated%3A2024-05-16..2024-12-04&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2024-05-16..2024-12-04&type=Issues) + +## 7.3.0rc0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.3.0-beta.2...b34449747a84fe0ba7951ae0fa8f2bb011444a60)) + +### Maintenance and upkeep improvements + +- Update to JupyterLab 4.3.1 [#7521](https://github.com/jupyter/notebook/pull/7521) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-11-06&to=2024-11-18&type=c)) + +[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-11-06..2024-11-18&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-11-06..2024-11-18&type=Issues) + +## 7.3.0b2 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.3.0-beta.1...110e728e4a239ffc7217bd07b9a50cf4eff0dff5)) + +### Enhancements made + +- Fix for auto scroll output option [#7511](https://github.com/jupyter/notebook/pull/7511) ([@gjmooney](https://github.com/gjmooney)) + +### Maintenance and upkeep improvements + +- Add webpack prod config [#7513](https://github.com/jupyter/notebook/pull/7513) ([@gjmooney](https://github.com/gjmooney)) +- Update to JupyterLab 4.3 final [#7507](https://github.com/jupyter/notebook/pull/7507) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Rename some header links to fit better [#7508](https://github.com/jupyter/notebook/pull/7508) ([@gjmooney](https://github.com/gjmooney)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-10-24&to=2024-11-06&type=c)) + +[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-10-24..2024-11-06&type=Issues) | [@gjmooney](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agjmooney+updated%3A2024-10-24..2024-11-06&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-10-24..2024-11-06&type=Issues) + +## 7.3.0b1 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.3.0-beta.0...f614f7c6387cc7da82e0307b70e10593b2cd6bff)) + +### Enhancements made + +- Add a setting to enable the notebook to take up the full width [#7487](https://github.com/jupyter/notebook/pull/7487) ([@jtpio](https://github.com/jtpio)) +- Add the file filter button to the file browser toolbar [#7479](https://github.com/jupyter/notebook/pull/7479) ([@jtpio](https://github.com/jtpio)) + +### Bugs fixed + +- Move handling of the file browser settings to a separate plugin, enable file browser single click navigation [#7481](https://github.com/jupyter/notebook/pull/7481) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Update to JupyterLab `4.3.0rc1` [#7497](https://github.com/jupyter/notebook/pull/7497) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Add user facing changelog for `7.3.0` [#7494](https://github.com/jupyter/notebook/pull/7494) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-10-15&to=2024-10-24&type=c)) + +[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-10-15..2024-10-24&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-10-15..2024-10-24&type=Issues) + +## 7.3.0b0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.3.0-alpha.1...fec4431305b2fd857ff81b7b60c2894dd125bec2)) + +### Enhancements made + +- Redirect paths from the notebooks route to the tree route if they are directories [#7446](https://github.com/jupyter/notebook/pull/7446) ([@andyscho](https://github.com/andyscho)) + +### Maintenance and upkeep improvements + +- Remove the `StateDB` file browser trick [#7477](https://github.com/jupyter/notebook/pull/7477) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab `4.3.0rc0` [#7423](https://github.com/jupyter/notebook/pull/7423) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Fix typos [#7472](https://github.com/jupyter/notebook/pull/7472) ([@algonell](https://github.com/algonell)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-07-01&to=2024-10-15&type=c)) + +[@algonell](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aalgonell+updated%3A2024-07-01..2024-10-15&type=Issues) | [@andyscho](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aandyscho+updated%3A2024-07-01..2024-10-15&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-07-01..2024-10-15&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-07-01..2024-10-15&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2024-07-01..2024-10-15&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2024-07-01..2024-10-15&type=Issues) + +## 7.3.0a1 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.3.0-alpha.0...ff2b822d066dc8d733a259f955177da4bd4d668c)) + +### Enhancements made + +- Update to JupyterLab `4.3.0a1` [#7416](https://github.com/jupyter/notebook/pull/7416) ([@jtpio](https://github.com/jtpio)) + +### Bugs fixed + +- Remove pseudoelement obstructing the cell collapser [#7392](https://github.com/jupyter/notebook/pull/7392) ([@krassowski](https://github.com/krassowski)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-05-31&to=2024-07-01&type=c)) + +[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-05-31..2024-07-01&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-05-31..2024-07-01&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2024-05-31..2024-07-01&type=Issues) + +## 7.3.0a0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.2.0...1a03b9d8e502f8177684e39d7b627bed1c772bb2)) + +### Enhancements made + +- Support custom page_data_hook function [#7387](https://github.com/jupyter/notebook/pull/7387) ([@bluestealth](https://github.com/bluestealth)) +- Add missing "Open..." file menu [#7385](https://github.com/jupyter/notebook/pull/7385) ([@martinRenou](https://github.com/martinRenou)) +- Duplicate notebook menu option [#7374](https://github.com/jupyter/notebook/pull/7374) ([@JasonWeill](https://github.com/JasonWeill)) + +### Bugs fixed + +- "Close and Shut Down Notebook" shuts down without the confirmation dialog [#7384](https://github.com/jupyter/notebook/pull/7384) ([@JasonWeill](https://github.com/JasonWeill)) +- Adds message about building code before running 'develop' [#7382](https://github.com/jupyter/notebook/pull/7382) ([@JasonWeill](https://github.com/JasonWeill)) + +### Maintenance and upkeep improvements + +- Update to JupyterLab 4.3.0a0 [#7378](https://github.com/jupyter/notebook/pull/7378) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Adds message about building code before running 'develop' [#7382](https://github.com/jupyter/notebook/pull/7382) ([@JasonWeill](https://github.com/JasonWeill)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-05-16&to=2024-05-31&type=c)) + +[@bluestealth](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abluestealth+updated%3A2024-05-16..2024-05-31&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-05-16..2024-05-31&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AJasonWeill+updated%3A2024-05-16..2024-05-31&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-05-16..2024-05-31&type=Issues) | [@martinRenou](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AmartinRenou+updated%3A2024-05-16..2024-05-31&type=Issues) + +## 7.2 + +Jupyter Notebook 7.2 is based on JupyterLab 4.2, and includes a number of new features, bug fixes, and enhancements for extension developers. This release is compatible with extensions supporting JupyterLab 4.0. Extension authors are recommended to consult the [Extension Migration Guide](https://jupyterlab.readthedocs.io/en/latest/extension/extension_migration.html#jupyterlab-4-0-to-4-1) which lists deprecations and changes to the public API. + +Below are a few highlights for this new release. Most of the new features and improvements come from the update to JupyterLab 4.2, although they are not all supported in Notebook 7.2. + +For reference you may have a look at the JupyterLab 4.2 changelog to learn more: https://jupyterlab.readthedocs.io/en/latest/getting_started/changelog.html#v4-2 + +### Full notebook windowing mode by default + +Notebooks in the `full` windowing mode only render the visible cells, significantly improving the performance of the application. One limitation of `full` mode is that the search function in your browser may produce false negatives; using the search function is recommended. To revert to the behaviour from Notebook 7.2, go to Settings 鈫 Settings Editor 鈫 Notebook, scroll to 鈥淲indowing mode鈥, and choose `defer`. + +### Improved Shortcuts Editor + +Among the numerous improvements and bug fixes for the keyboard shortcuts editor: + +- it is now possible to remove the default shortcuts, +- shortcuts are correctly sorted when using a language pack, +- shortcuts with different arguments are now correctly displayed as individual entries. + +A context menu opened over a keybinding in the Keyboard Shortcuts setting panel within the Settings widget + +### Dark high contrast theme + +A new theme, JupyterLab Dark High Contrast, which is intended to benefit users with the need for higher contrast, following the WCAG AAA accessibility standard for color contrast. To select this theme, from the menu bar, choose Settings 鈫 Theme 鈫 JupyterLab Dark High Contrast. Please provide feedback and suggestions on further improvements to this theme. + +A dark high contrast theme + +## 7.2.0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.1.2...31bf294e85175bbf39816a90dc8858dedaf73bde)) + +### Enhancements made + +- Update to JupyterLab 4.2.0 [#7357](https://github.com/jupyter/notebook/pull/7357) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab 4.2.0rc0 [#7333](https://github.com/jupyter/notebook/pull/7333) ([@jtpio](https://github.com/jtpio)) +- Add `@jupyterlab/theme-dark-high-contrast-extension` [#7331](https://github.com/jupyter/notebook/pull/7331) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab 4.2.0a2 [#7307](https://github.com/jupyter/notebook/pull/7307) ([@jtpio](https://github.com/jtpio)) + +### Bugs fixed + +- Add the `@jupyterlab/notebook-extension:copy-output` plugin [#7353](https://github.com/jupyter/notebook/pull/7353) ([@jtpio](https://github.com/jtpio)) +- Fix CSS for `full` windowing mode [#7337](https://github.com/jupyter/notebook/pull/7337) ([@jtpio](https://github.com/jtpio)) +- Force notebook windowing mode to `defer` [#7335](https://github.com/jupyter/notebook/pull/7335) ([@jtpio](https://github.com/jtpio)) +- Fix scrollbar always showing up by default [#7327](https://github.com/jupyter/notebook/pull/7327) ([@jtpio](https://github.com/jtpio)) +- Default to the `full` windowing mode [#7321](https://github.com/jupyter/notebook/pull/7321) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Fix emoji in create issue screen [#7363](https://github.com/jupyter/notebook/pull/7363) ([@JasonWeill](https://github.com/JasonWeill)) +- Update `@jupyterlab/galata` [#7361](https://github.com/jupyter/notebook/pull/7361) ([@jtpio](https://github.com/jtpio)) +- Pin on `macos-12` on CI for now [#7346](https://github.com/jupyter/notebook/pull/7346) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab `4.2.0b1` [#7319](https://github.com/jupyter/notebook/pull/7319) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab 4.2.0b0 [#7312](https://github.com/jupyter/notebook/pull/7312) ([@jtpio](https://github.com/jtpio)) +- Ignore links to GitHub user and organisation profiles [#7308](https://github.com/jupyter/notebook/pull/7308) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Add user facing changelog for 7.2 [#7372](https://github.com/jupyter/notebook/pull/7372) ([@jtpio](https://github.com/jtpio)) +- Fix emoji in create issue screen [#7363](https://github.com/jupyter/notebook/pull/7363) ([@JasonWeill](https://github.com/JasonWeill)) +- update RISE extension installation instructions [#7299](https://github.com/jupyter/notebook/pull/7299) ([@afeld](https://github.com/afeld)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-03-14&to=2024-05-16&type=c)) + +[@afeld](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aafeld+updated%3A2024-03-14..2024-05-16&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-03-14..2024-05-16&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AJasonWeill+updated%3A2024-03-14..2024-05-16&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-03-14..2024-05-16&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2024-03-14..2024-05-16&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2024-03-14..2024-05-16&type=Issues) | [@takluyver](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Atakluyver+updated%3A2024-03-14..2024-05-16&type=Issues) + +## 7.2.0rc1 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.2.0rc0...f5d8aea3bdc3eea25213792f9d101738f2a1f627)) + +### Enhancements made + +- Update to JupyterLab 4.2.0 [#7357](https://github.com/jupyter/notebook/pull/7357) ([@jtpio](https://github.com/jtpio)) + +### Bugs fixed + +- Add the `@jupyterlab/notebook-extension:copy-output` plugin [#7353](https://github.com/jupyter/notebook/pull/7353) ([@jtpio](https://github.com/jtpio)) +- Default to the `full` windowing mode [#7321](https://github.com/jupyter/notebook/pull/7321) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- update RISE extension installation instructions [#7299](https://github.com/jupyter/notebook/pull/7299) ([@afeld](https://github.com/afeld)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-05-01&to=2024-05-13&type=c)) + +[@afeld](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aafeld+updated%3A2024-05-01..2024-05-13&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-05-01..2024-05-13&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-05-01..2024-05-13&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2024-05-01..2024-05-13&type=Issues) | [@takluyver](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Atakluyver+updated%3A2024-05-01..2024-05-13&type=Issues) + +## 7.2.0rc0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.2.0b1...49ddd0fe1e4d4bfa24f74042f2232c5b91d1c36e)) + +### Enhancements made + +- Update to JupyterLab 4.2.0rc0 [#7333](https://github.com/jupyter/notebook/pull/7333) ([@jtpio](https://github.com/jtpio)) + +### Bugs fixed + +- Fix CSS for `full` windowing mode [#7337](https://github.com/jupyter/notebook/pull/7337) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Pin on `macos-12` on CI for now [#7346](https://github.com/jupyter/notebook/pull/7346) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-04-19&to=2024-05-01&type=c)) + +[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-04-19..2024-05-01&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-04-19..2024-05-01&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2024-04-19..2024-05-01&type=Issues) + +## 7.2.0b1 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.2.0-beta.0...b45d666d5ee1ee053b55ac9cb6e9aecde5d53945)) + +### Enhancements made + +- Add `@jupyterlab/theme-dark-high-contrast-extension` [#7331](https://github.com/jupyter/notebook/pull/7331) ([@jtpio](https://github.com/jtpio)) + +### Bugs fixed + +- Force notebook windowing mode to `defer` [#7335](https://github.com/jupyter/notebook/pull/7335) ([@jtpio](https://github.com/jtpio)) +- Fix scrollbar always showing up by default [#7327](https://github.com/jupyter/notebook/pull/7327) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-04-12&to=2024-04-19&type=c)) + +[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-04-12..2024-04-19&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-04-12..2024-04-19&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2024-04-12..2024-04-19&type=Issues) + +## 7.2.0b0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.2.0-alpha.0...09bcd99e6dfffce92acc9a7f9d11a2a2122131c0)) + +### Maintenance and upkeep improvements + +- Update to JupyterLab `4.2.0b1` [#7319](https://github.com/jupyter/notebook/pull/7319) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab 4.2.0b0 [#7312](https://github.com/jupyter/notebook/pull/7312) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-03-29&to=2024-04-12&type=c)) + +[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-03-29..2024-04-12&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-03-29..2024-04-12&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2024-03-29..2024-04-12&type=Issues) + +## 7.2.0a0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.1.2...80b582bce69e33e36e936af2ea981bcb22a4d285)) + +### Enhancements made + +- Update to JupyterLab 4.2.0a2 [#7307](https://github.com/jupyter/notebook/pull/7307) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Ignore links to GitHub user and organisation profiles [#7308](https://github.com/jupyter/notebook/pull/7308) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-03-14&to=2024-03-29&type=c)) + +[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-03-14..2024-03-29&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-03-14..2024-03-29&type=Issues) + +## v7.1 + +Jupyter Notebook 7.1 is based on JupyterLab 4.1, and includes a number of new features, bug fixes, and enhancements for extension developers. This release is compatible with extensions supporting JupyterLab 4.0. Extension authors are recommended to consult the [Extension Migration Guide](https://jupyterlab.readthedocs.io/en/latest/extension/extension_migration.html#jupyterlab-4-0-to-4-1) which lists deprecations and changes to the public API. + +Below are a few highlights for this new release. Most of the new features and improvements come from the update to JupyterLab 4.1, although they are not all supported in Notebook 7.1. + +For reference you may have a look at the JupyterLab 4.1 changelog to learn more: https://jupyterlab.readthedocs.io/en/latest/getting_started/changelog.html#v4-1 + +### Diagrams in Markdown + +Matching GitHub-Flavoured Markdown, JupyterLab 4.1 now supports [Mermaid](https://github.com/mermaid-js/mermaid) diagrams. +To create a mermaid diagram use the `mermaid` language specifier for a code block in a markdown cell or document, for example: + +~~~ +```mermaid +flowchart LR + +A[Hard] -->|Text| B(Round) +B --> C{Decision} +C -->|One| D[Result 1] +C -->|Two| E[Result 2] +``` +~~~ + +which renders as: + +Rendered Mermaid diagram going from left to right with modern look; the diagram contains blueish square node with text Hard pointing to round square node with text Round; over the arrow connecting the two nodes there is a word Text; the second node further connects to a rhombus-shaped node with text Decision which then connects to two further nodes, Result 1 and Result 2. + +### Inline completer + +JupyterLab now supports completion presented as ghost text in the cell and file editors, +allowing generative AI models to provide multi-line completions. This can now also be leveraged in Jupyter Notebook. + +The suggestions are provided by plugins implementing the ``IInlineCompletionProvider`` API; +by default a single provider which uses kernel history is available. + +In a code cell with `def fac` content a ghost text containing a suggestion representing further code of factorial function is shown; over the code cell there is a floating widget allowing to accept the suggestion and iterate between alternative suggestions + +The suggestions can be invoked as-you-type or manually using a configurable shortcut (by default Alt + \\). +The default keyboard shortcuts are displayed in the small widget shown when hovering over the ghost suggestion: +- Alt + End - accept suggestion +- Alt + [ - previous suggestion +- Alt + ] - next suggestion + +To enable the inline suggestions based on the kernel history, go to Settings 鈫 Inline Completer 鈫 History provider 鈫 check the "enabled" checkbox. + +In addition to the built-in history suggestions, +the [`jupyter-ai`](https://github.com/jupyterlab/jupyter-ai) extension will provide +suggestions from supported models. + +Note that the Jupyter AI extension is not yet compatible with Jupyter Notebook 7. + +### Keyboard navigation improvements + +Numerous improvements to keyboard navigation with focus on accessibility and usability are included in this release: +- the notebook cells now retain focus +- the focus can now be moved beyond the active notebook +- the toolbars can now be navigated using arrow keys + +For more details, see [this post on Jupyter Blog](https://blog.jupyter.org/recent-keyboard-navigation-improvements-in-jupyter-4df32f97628d). + +### Execution history in notebook + +The code from previously executed cells can be used to populate empty cells, +allowing to iterate on code from previous cells or even sessions +(depending on how a specific kernel stores history). + +To cycle between history items press Alt + Arrow Up and Alt + Arrow Down. + +To enable execution history, go to Settings 鈫 Notebook 鈫 check the "Kernel history access" checkbox. + +This feature was already available in the console in previous releases; it only works with kernels supporting execution history requests. +To clear the execution history consult the documentation of the kernel you are using (e.g., IPython/ipykernel). + +### Error indicator in the table of contents + +When a cell fails during execution, an error indicator will be displayed by the corresponding heading, +increasing awareness of the notebook state and enabling users to quickly navigate to the cell which requires attention. + +Error indicator in the shape of a triangle with exclamation sign (using 鈿 UTF character) shown next to one of the headings in the table of contents panel + +### Search improvements + +- The search box will now grow automatically to accommodate longer text +- Search in selection can now be toggled using Alt + L and automatic search in selection can be configured in settings +- Tooltips with shortcuts were added to the buttons in the search box to improve discoverability of the shortcuts + +### Miscellaneous + +- The current theme (dark/light) can now be synced with the browser/system preference (Settings menu 鈫 Theme 鈫 Synchronise with System Settings) +- A blue "read-only" status indicator is now displayed in the toolbar of documents which cannot be saved because their model is read-only. +- Native support for viewing jsonl/ndjson files was added +- Collapsing of breadcrumbs in the File Browser can be disabled in File Browser settings + +## 7.1.2 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.1.1...ca41222a9c8d75356c6d67d3bd36e34d71cce2d8)) + +### Maintenance and upkeep improvements + +- Update Release Scripts [#7295](https://github.com/jupyter/notebook/pull/7295) ([@blink1073](https://github.com/blink1073)) +- Fix jupyterlab install command in the releaser hook [#7294](https://github.com/jupyter/notebook/pull/7294) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab 4.1.5 packages [#7291](https://github.com/jupyter/notebook/pull/7291) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Add a section to use local dependencies [#7292](https://github.com/jupyter/notebook/pull/7292) ([@brichet](https://github.com/brichet)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-02-26&to=2024-03-14&type=c)) + +[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2024-02-26..2024-03-14&type=Issues) | [@brichet](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2024-02-26..2024-03-14&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-02-26..2024-03-14&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-02-26..2024-03-14&type=Issues) + +## 7.1.1 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.1.0...da7b8d400e96ceff0eec834badd891bc5d5f154d)) + +### Bugs fixed + +- Grayout "Edit Notebook Metadata" for other file formats. [#7265](https://github.com/jupyter/notebook/pull/7265) ([@itsmevichu](https://github.com/itsmevichu)) + +### Maintenance and upkeep improvements + +- Fix flaky mobile UI tests [#7278](https://github.com/jupyter/notebook/pull/7278) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab 4.1.2 packages [#7277](https://github.com/jupyter/notebook/pull/7277) ([@jtpio](https://github.com/jtpio)) +- Ignore stackoverflow link [#7274](https://github.com/jupyter/notebook/pull/7274) ([@jtpio](https://github.com/jtpio)) +- Expose `version_info` [#7273](https://github.com/jupyter/notebook/pull/7273) ([@jtpio](https://github.com/jtpio)) +- Bump ip from 2.0.0 to 2.0.1 in /ui-tests [#7268](https://github.com/jupyter/notebook/pull/7268) ([@dependabot](https://github.com/dependabot)) +- Bump ip from 2.0.0 to 2.0.1 [#7267](https://github.com/jupyter/notebook/pull/7267) ([@dependabot](https://github.com/dependabot)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-02-13&to=2024-02-26&type=c)) + +[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2024-02-13..2024-02-26&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-02-13..2024-02-26&type=Issues) | [@itsmevichu](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aitsmevichu+updated%3A2024-02-13..2024-02-26&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-02-13..2024-02-26&type=Issues) + +## 7.1.0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.0.6...b8ec7e4a8eda70a8d7dca19799acd3e96e019160)) + +### Enhancements made + +- Create a new notebook with a specific kernel from the new dropdown [#7255](https://github.com/jupyter/notebook/pull/7255) ([@jtpio](https://github.com/jtpio)) +- Add the plugin manager [#7198](https://github.com/jupyter/notebook/pull/7198) ([@jtpio](https://github.com/jtpio)) +- Fix toggle functionality for widgets. [#7178](https://github.com/jupyter/notebook/pull/7178) ([@haok1402](https://github.com/haok1402)) +- Bump to JupyterLab 4.1.0a4 bis [#7172](https://github.com/jupyter/notebook/pull/7172) ([@brichet](https://github.com/brichet)) +- Update to JupyterLab `4.1.0a3` [#7161](https://github.com/jupyter/notebook/pull/7161) ([@jtpio](https://github.com/jtpio)) +- Added Lumino Plugin Description (#7008) [#7127](https://github.com/jupyter/notebook/pull/7127) ([@Dilip-Jain](https://github.com/Dilip-Jain)) +- Added Edit Notebook Metadata Option (#6402) [#7099](https://github.com/jupyter/notebook/pull/7099) ([@Dilip-Jain](https://github.com/Dilip-Jain)) +- Update to JupyterLab 4.1 [#7096](https://github.com/jupyter/notebook/pull/7096) ([@jtpio](https://github.com/jtpio)) +- Add the JupyterLab resources plugin [#6968](https://github.com/jupyter/notebook/pull/6968) ([@jtpio](https://github.com/jtpio)) + +### Bugs fixed + +- Fix spurious kernel selection dialog on notebook creation [#7258](https://github.com/jupyter/notebook/pull/7258) ([@jtpio](https://github.com/jtpio)) +- Workaround for the file browser tracker focus issue [#7224](https://github.com/jupyter/notebook/pull/7224) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Update to JupyterLab 4.1.1 [#7256](https://github.com/jupyter/notebook/pull/7256) ([@jtpio](https://github.com/jtpio)) +- Follow JupyterLab minor versions [#7250](https://github.com/jupyter/notebook/pull/7250) ([@jtpio](https://github.com/jtpio)) +- chore: update pre-commit hooks [#7237](https://github.com/jupyter/notebook/pull/7237) ([@pre-commit-ci](https://github.com/pre-commit-ci)) +- Update to JupyterLab 4.1.0 final [#7234](https://github.com/jupyter/notebook/pull/7234) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab 4.1.0rc1 [#7230](https://github.com/jupyter/notebook/pull/7230) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab 4.1.0rc0 [#7227](https://github.com/jupyter/notebook/pull/7227) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab 4.1.0b2 [#7222](https://github.com/jupyter/notebook/pull/7222) ([@jtpio](https://github.com/jtpio)) +- Fix `check_links` on CI [#7219](https://github.com/jupyter/notebook/pull/7219) ([@jtpio](https://github.com/jtpio)) +- Bump the actions group with 1 update [#7218](https://github.com/jupyter/notebook/pull/7218) ([@dependabot](https://github.com/dependabot)) +- Bump the actions group with 2 updates [#7207](https://github.com/jupyter/notebook/pull/7207) ([@dependabot](https://github.com/dependabot)) +- chore: update pre-commit hooks [#7206](https://github.com/jupyter/notebook/pull/7206) ([@pre-commit-ci](https://github.com/pre-commit-ci)) +- Add nbviewer.jupyter.org to the ignore list [#7197](https://github.com/jupyter/notebook/pull/7197) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab 4.1.0b0 [#7196](https://github.com/jupyter/notebook/pull/7196) ([@jtpio](https://github.com/jtpio)) +- Update ruff config [#7190](https://github.com/jupyter/notebook/pull/7190) ([@blink1073](https://github.com/blink1073)) +- Bump @babel/traverse from 7.23.0 to 7.23.6 [#7187](https://github.com/jupyter/notebook/pull/7187) ([@dependabot](https://github.com/dependabot)) +- Bump actions/setup-python from 4 to 5 [#7180](https://github.com/jupyter/notebook/pull/7180) ([@dependabot](https://github.com/dependabot)) +- Update publish-release workflow for PyPI trusted publisher [#7176](https://github.com/jupyter/notebook/pull/7176) ([@jtpio](https://github.com/jtpio)) +- chore: update pre-commit hooks [#7174](https://github.com/jupyter/notebook/pull/7174) ([@pre-commit-ci](https://github.com/pre-commit-ci)) +- Update `yarn.lock` [#7170](https://github.com/jupyter/notebook/pull/7170) ([@jtpio](https://github.com/jtpio)) +- Bump axios from 1.5.1 to 1.6.2 [#7165](https://github.com/jupyter/notebook/pull/7165) ([@dependabot](https://github.com/dependabot)) +- Bump dessant/lock-threads from 4 to 5 [#7159](https://github.com/jupyter/notebook/pull/7159) ([@dependabot](https://github.com/dependabot)) +- Update ruff config and typing [#7145](https://github.com/jupyter/notebook/pull/7145) ([@blink1073](https://github.com/blink1073)) +- chore: update pre-commit hooks [#7143](https://github.com/jupyter/notebook/pull/7143) ([@pre-commit-ci](https://github.com/pre-commit-ci)) +- Clean up lint handling [#7142](https://github.com/jupyter/notebook/pull/7142) ([@blink1073](https://github.com/blink1073)) +- Adopt ruff format [#7132](https://github.com/jupyter/notebook/pull/7132) ([@blink1073](https://github.com/blink1073)) +- Fix python bumping to `minor` [#7131](https://github.com/jupyter/notebook/pull/7131) ([@jtpio](https://github.com/jtpio)) +- Add Python 3.12 classifier [#7111](https://github.com/jupyter/notebook/pull/7111) ([@jtpio](https://github.com/jtpio)) +- Remove viewport workaround in the UI tests [#6887](https://github.com/jupyter/notebook/pull/6887) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Add documentation for updating `notebook` imports [#7244](https://github.com/jupyter/notebook/pull/7244) ([@jtpio](https://github.com/jtpio)) +- Fix link in `CONTRIBUTING.md` [#7235](https://github.com/jupyter/notebook/pull/7235) ([@jtpio](https://github.com/jtpio)) +- Add user facing changelog for 7.1 [#7232](https://github.com/jupyter/notebook/pull/7232) ([@jtpio](https://github.com/jtpio)) +- Clarify README about supported versions (post v7 release) [#7193](https://github.com/jupyter/notebook/pull/7193) ([@akx](https://github.com/akx)) +- Set `navigation_with_keys` to `False` [#7129](https://github.com/jupyter/notebook/pull/7129) ([@jtpio](https://github.com/jtpio)) +- Updated ui-tests Configuration in Contributing.md [#7124](https://github.com/jupyter/notebook/pull/7124) ([@jayeshsingh9767](https://github.com/jayeshsingh9767)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-10-17&to=2024-02-13&type=c)) + +[@akx](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aakx+updated%3A2023-10-17..2024-02-13&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2023-10-17..2024-02-13&type=Issues) | [@brichet](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2023-10-17..2024-02-13&type=Issues) | [@d5423197](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ad5423197+updated%3A2023-10-17..2024-02-13&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2023-10-17..2024-02-13&type=Issues) | [@Dilip-Jain](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ADilip-Jain+updated%3A2023-10-17..2024-02-13&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-10-17..2024-02-13&type=Issues) | [@haok1402](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ahaok1402+updated%3A2023-10-17..2024-02-13&type=Issues) | [@jayeshsingh9767](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajayeshsingh9767+updated%3A2023-10-17..2024-02-13&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-10-17..2024-02-13&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2023-10-17..2024-02-13&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-10-17..2024-02-13&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AZsailer+updated%3A2023-10-17..2024-02-13&type=Issues) + +## 7.1.0rc1 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.1.0rc0...376a2f97c883e6e91f321d0a676e1ee9ff3b8d87)) + +### Maintenance and upkeep improvements + +- Follow JupyterLab minor versions [#7250](https://github.com/jupyter/notebook/pull/7250) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Add documentation for updating `notebook` imports [#7244](https://github.com/jupyter/notebook/pull/7244) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-02-07&to=2024-02-09&type=c)) + +[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-02-07..2024-02-09&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-02-07..2024-02-09&type=Issues) + +## 7.1.0rc0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.1.0b0...2d717f5896a1d4310baa2499c7e6197d1914201d)) + +### Enhancements made + +- Added Edit Notebook Metadata Option (#6402) [#7099](https://github.com/jupyter/notebook/pull/7099) ([@Dilip-Jain](https://github.com/Dilip-Jain)) + +### Maintenance and upkeep improvements + +- chore: update pre-commit hooks [#7237](https://github.com/jupyter/notebook/pull/7237) ([@pre-commit-ci](https://github.com/pre-commit-ci)) +- Update to JupyterLab 4.1.0 final [#7234](https://github.com/jupyter/notebook/pull/7234) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab 4.1.0rc1 [#7230](https://github.com/jupyter/notebook/pull/7230) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab 4.1.0rc0 [#7227](https://github.com/jupyter/notebook/pull/7227) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Fix link in `CONTRIBUTING.md` [#7235](https://github.com/jupyter/notebook/pull/7235) ([@jtpio](https://github.com/jtpio)) +- Add user facing changelog for 7.1 [#7232](https://github.com/jupyter/notebook/pull/7232) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-01-26&to=2024-02-07&type=c)) + +[@Dilip-Jain](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ADilip-Jain+updated%3A2024-01-26..2024-02-07&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-01-26..2024-02-07&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-01-26..2024-02-07&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2024-01-26..2024-02-07&type=Issues) + +## 7.1.0b0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.1.0a2...5d265b90ed5f097af4ca22d283ecdc705229ff92)) + +### Bugs fixed + +- Workaround for the file browser tracker focus issue [#7224](https://github.com/jupyter/notebook/pull/7224) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Update to JupyterLab 4.1.0b2 [#7222](https://github.com/jupyter/notebook/pull/7222) ([@jtpio](https://github.com/jtpio)) +- Fix `check_links` on CI [#7219](https://github.com/jupyter/notebook/pull/7219) ([@jtpio](https://github.com/jtpio)) +- Bump the actions group with 1 update [#7218](https://github.com/jupyter/notebook/pull/7218) ([@dependabot](https://github.com/dependabot)) +- Bump the actions group with 2 updates [#7207](https://github.com/jupyter/notebook/pull/7207) ([@dependabot](https://github.com/dependabot)) +- chore: update pre-commit hooks [#7206](https://github.com/jupyter/notebook/pull/7206) ([@pre-commit-ci](https://github.com/pre-commit-ci)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-12-27&to=2024-01-26&type=c)) + +[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2023-12-27..2024-01-26&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-12-27..2024-01-26&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-12-27..2024-01-26&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-12-27..2024-01-26&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AZsailer+updated%3A2023-12-27..2024-01-26&type=Issues) + +## 7.1.0a2 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.1.0a1...251e0e360603b6e63b280b3bd04a5406f7da28da)) + +### Enhancements made + +- Add the plugin manager [#7198](https://github.com/jupyter/notebook/pull/7198) ([@jtpio](https://github.com/jtpio)) +- Fix toggle functionality for widgets. [#7178](https://github.com/jupyter/notebook/pull/7178) ([@haok1402](https://github.com/haok1402)) + +### Maintenance and upkeep improvements + +- Add nbviewer.jupyter.org to the ignore list [#7197](https://github.com/jupyter/notebook/pull/7197) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab 4.1.0b0 [#7196](https://github.com/jupyter/notebook/pull/7196) ([@jtpio](https://github.com/jtpio)) +- Update ruff config [#7190](https://github.com/jupyter/notebook/pull/7190) ([@blink1073](https://github.com/blink1073)) +- Bump @babel/traverse from 7.23.0 to 7.23.6 [#7187](https://github.com/jupyter/notebook/pull/7187) ([@dependabot](https://github.com/dependabot)) +- Bump actions/setup-python from 4 to 5 [#7180](https://github.com/jupyter/notebook/pull/7180) ([@dependabot](https://github.com/dependabot)) +- Update publish-release workflow for PyPI trusted publisher [#7176](https://github.com/jupyter/notebook/pull/7176) ([@jtpio](https://github.com/jtpio)) +- chore: update pre-commit hooks [#7174](https://github.com/jupyter/notebook/pull/7174) ([@pre-commit-ci](https://github.com/pre-commit-ci)) +- Remove viewport workaround in the UI tests [#6887](https://github.com/jupyter/notebook/pull/6887) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Clarify README about supported versions (post v7 release) [#7193](https://github.com/jupyter/notebook/pull/7193) ([@akx](https://github.com/akx)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-12-04&to=2023-12-27&type=c)) + +[@akx](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aakx+updated%3A2023-12-04..2023-12-27&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2023-12-04..2023-12-27&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2023-12-04..2023-12-27&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-12-04..2023-12-27&type=Issues) | [@haok1402](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ahaok1402+updated%3A2023-12-04..2023-12-27&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-12-04..2023-12-27&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-12-04..2023-12-27&type=Issues) + +## 7.1.0a1 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.1.0-alpha.0...a74cd91871fcc6037d384fe59af8986557e783e5)) + +### Enhancements made + +- Bump to JupyterLab 4.1.0a4 bis [#7172](https://github.com/jupyter/notebook/pull/7172) ([@brichet](https://github.com/brichet)) +- Update to JupyterLab `4.1.0a3` [#7161](https://github.com/jupyter/notebook/pull/7161) ([@jtpio](https://github.com/jtpio)) +- Add the JupyterLab resources plugin [#6968](https://github.com/jupyter/notebook/pull/6968) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Update `yarn.lock` [#7170](https://github.com/jupyter/notebook/pull/7170) ([@jtpio](https://github.com/jtpio)) +- Bump axios from 1.5.1 to 1.6.2 [#7165](https://github.com/jupyter/notebook/pull/7165) ([@dependabot](https://github.com/dependabot)) +- Bump dessant/lock-threads from 4 to 5 [#7159](https://github.com/jupyter/notebook/pull/7159) ([@dependabot](https://github.com/dependabot)) +- Update ruff config and typing [#7145](https://github.com/jupyter/notebook/pull/7145) ([@blink1073](https://github.com/blink1073)) +- chore: update pre-commit hooks [#7143](https://github.com/jupyter/notebook/pull/7143) ([@pre-commit-ci](https://github.com/pre-commit-ci)) +- Clean up lint handling [#7142](https://github.com/jupyter/notebook/pull/7142) ([@blink1073](https://github.com/blink1073)) +- Adopt ruff format [#7132](https://github.com/jupyter/notebook/pull/7132) ([@blink1073](https://github.com/blink1073)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-10-27&to=2023-12-04&type=c)) + +[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2023-10-27..2023-12-04&type=Issues) | [@brichet](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2023-10-27..2023-12-04&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2023-10-27..2023-12-04&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-10-27..2023-12-04&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-10-27..2023-12-04&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2023-10-27..2023-12-04&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-10-27..2023-12-04&type=Issues) + +## 7.1.0a0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.0.6...0cd6104b926a398b419f2433538cef437592796f)) + +### Enhancements made + +- Added Lumino Plugin Description (#7008) [#7127](https://github.com/jupyter/notebook/pull/7127) ([@Dilip-Jain](https://github.com/Dilip-Jain)) +- Update to JupyterLab 4.1 [#7096](https://github.com/jupyter/notebook/pull/7096) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Fix python bumping to `minor` [#7131](https://github.com/jupyter/notebook/pull/7131) ([@jtpio](https://github.com/jtpio)) +- Add Python 3.12 classifier [#7111](https://github.com/jupyter/notebook/pull/7111) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Set `navigation_with_keys` to `False` [#7129](https://github.com/jupyter/notebook/pull/7129) ([@jtpio](https://github.com/jtpio)) +- Updated ui-tests Configuration in Contributing.md [#7124](https://github.com/jupyter/notebook/pull/7124) ([@jayeshsingh9767](https://github.com/jayeshsingh9767)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-10-17&to=2023-10-27&type=c)) + +[@Dilip-Jain](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ADilip-Jain+updated%3A2023-10-17..2023-10-27&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-10-17..2023-10-27&type=Issues) | [@jayeshsingh9767](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajayeshsingh9767+updated%3A2023-10-17..2023-10-27&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-10-17..2023-10-27&type=Issues) + +## v7.0 + +## 7.0.6 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/app@7.0.5...c62caffb02856737870cbc79a2cdb43b3e89c363)) + +### Bugs fixed + +- Updated fav-icon Base URL from JupyterLab PageConfig. [#7109](https://github.com/jupyter/notebook/pull/7109) ([@jayeshsingh9767](https://github.com/jayeshsingh9767)) + +### Maintenance and upkeep improvements + +- Fix typings [#7110](https://github.com/jupyter/notebook/pull/7110) ([@jtpio](https://github.com/jtpio)) +- Bump postcss from 8.4.27 to 8.4.31 [#7089](https://github.com/jupyter/notebook/pull/7089) ([@dependabot](https://github.com/dependabot)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-10-12&to=2023-10-17&type=c)) + +[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2023-10-12..2023-10-17&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-10-12..2023-10-17&type=Issues) | [@jayeshsingh9767](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajayeshsingh9767+updated%3A2023-10-12..2023-10-17&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-10-12..2023-10-17&type=Issues) + +## 7.0.5 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/app@7.0.4...839193d07f0780ded6f559892517f061f3776b02)) + +### Enhancements made + +- Update to JupyterLab 4.0.7 [#7103](https://github.com/jupyter/notebook/pull/7103) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Update `permissions` in the galata snapshot workflow [#7105](https://github.com/jupyter/notebook/pull/7105) ([@jtpio](https://github.com/jtpio)) +- Fix typings check on CI [#7104](https://github.com/jupyter/notebook/pull/7104) ([@jtpio](https://github.com/jtpio)) +- Ignore yarn.lock for codespell [#7098](https://github.com/jupyter/notebook/pull/7098) ([@jtpio](https://github.com/jtpio)) +- Remove link to the PDF documentation [#7094](https://github.com/jupyter/notebook/pull/7094) ([@jtpio](https://github.com/jtpio)) +- Bump postcss from 8.4.23 to 8.4.31 in /ui-tests [#7088](https://github.com/jupyter/notebook/pull/7088) ([@dependabot](https://github.com/dependabot)) +- React to the galata update comment [#7086](https://github.com/jupyter/notebook/pull/7086) ([@jtpio](https://github.com/jtpio)) +- Switch from `hub` to `gh` in the Playwright snapshots update workflow [#7085](https://github.com/jupyter/notebook/pull/7085) ([@jtpio](https://github.com/jtpio)) +- chore: update pre-commit hooks [#7084](https://github.com/jupyter/notebook/pull/7084) ([@pre-commit-ci](https://github.com/pre-commit-ci)) +- Fix traitlets typing [#7082](https://github.com/jupyter/notebook/pull/7082) ([@jtpio](https://github.com/jtpio)) +- Bump toshimaru/auto-author-assign from 2.0.0 to 2.0.1 [#7080](https://github.com/jupyter/notebook/pull/7080) ([@dependabot](https://github.com/dependabot)) +- Bump toshimaru/auto-author-assign from 1.6.2 to 2.0.0 [#7072](https://github.com/jupyter/notebook/pull/7072) ([@dependabot](https://github.com/dependabot)) +- ci: set minimal permissions to workflows [#7070](https://github.com/jupyter/notebook/pull/7070) ([@diogoteles08](https://github.com/diogoteles08)) +- Bump systeminformation from 5.17.12 to 5.21.8 in /ui-tests [#7064](https://github.com/jupyter/notebook/pull/7064) ([@dependabot](https://github.com/dependabot)) + +### Documentation improvements + +- Improve docs setup (SVG logos, repo links) [#7074](https://github.com/jupyter/notebook/pull/7074) ([@krassowski](https://github.com/krassowski)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-09-20&to=2023-10-12&type=c)) + +[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2023-09-20..2023-10-12&type=Issues) | [@diogoteles08](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adiogoteles08+updated%3A2023-09-20..2023-10-12&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-09-20..2023-10-12&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-09-20..2023-10-12&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2023-09-20..2023-10-12&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-09-20..2023-10-12&type=Issues) + +## 7.0.4 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/app@7.0.3...0e62386fc71ed4bd424c989f9d5493ca346f1d9a)) + +### Enhancements made + +- Update to JupyterLab 4.0.6 [#7049](https://github.com/jupyter/notebook/pull/7049) ([@jtpio](https://github.com/jtpio)) + +### Bugs fixed + +- Fix `app_version` [#7061](https://github.com/jupyter/notebook/pull/7061) ([@jtpio](https://github.com/jtpio)) +- fix trusted status indication [#7036](https://github.com/jupyter/notebook/pull/7036) ([@adigaboy](https://github.com/adigaboy)) + +### Maintenance and upkeep improvements + +- Update Binder environment [#7059](https://github.com/jupyter/notebook/pull/7059) ([@jtpio](https://github.com/jtpio)) +- Add `deduplicate` top-level script [#7058](https://github.com/jupyter/notebook/pull/7058) ([@jtpio](https://github.com/jtpio)) +- Move opening path in new browser tabs to a separate plugin [#7056](https://github.com/jupyter/notebook/pull/7056) ([@jtpio](https://github.com/jtpio)) +- Enable the Playwright trace [#7050](https://github.com/jupyter/notebook/pull/7050) ([@jtpio](https://github.com/jtpio)) +- Bump actions/checkout from 3 to 4 [#7040](https://github.com/jupyter/notebook/pull/7040) ([@dependabot](https://github.com/dependabot)) +- Adopt sp-repo-review [#7039](https://github.com/jupyter/notebook/pull/7039) ([@blink1073](https://github.com/blink1073)) +- Add `datetime.datetime.utc()` to the filter list [#7037](https://github.com/jupyter/notebook/pull/7037) ([@jtpio](https://github.com/jtpio)) +- Fix docs build on Gitpod [#7026](https://github.com/jupyter/notebook/pull/7026) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-08-30&to=2023-09-20&type=c)) + +[@adigaboy](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aadigaboy+updated%3A2023-08-30..2023-09-20&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2023-08-30..2023-09-20&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2023-08-30..2023-09-20&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-08-30..2023-09-20&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-08-30..2023-09-20&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-08-30..2023-09-20&type=Issues) + +## 7.0.3 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/app@7.0.2...e2eb8f2a166ba7b339309b8bfbff40e6c9e0a9b9)) + +### Bugs fixed + +- Require importlib_resources for testing on Python \< 3.10 [#7016](https://github.com/jupyter/notebook/pull/7016) ([@bnavigator](https://github.com/bnavigator)) +- Fix Python 3.12 compatibility [#6965](https://github.com/jupyter/notebook/pull/6965) ([@frenzymadness](https://github.com/frenzymadness)) + +### Maintenance and upkeep improvements + +- Update to JupyterLab 4.0.5 [#7013](https://github.com/jupyter/notebook/pull/7013) ([@jtpio](https://github.com/jtpio)) +- Test against Python 3.12 [#6999](https://github.com/jupyter/notebook/pull/6999) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Mention the nx graph in the contributing guide [#7001](https://github.com/jupyter/notebook/pull/7001) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-08-04&to=2023-08-30&type=c)) + +[@bnavigator](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abnavigator+updated%3A2023-08-04..2023-08-30&type=Issues) | [@defjaf](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adefjaf+updated%3A2023-08-04..2023-08-30&type=Issues) | [@frenzymadness](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Afrenzymadness+updated%3A2023-08-04..2023-08-30&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-08-04..2023-08-30&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-08-04..2023-08-30&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2023-08-04..2023-08-30&type=Issues) + +## 7.0.2 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/app@7.0.1...af5edd42374cadba65feed2e6828b1ef96295daf)) + +### Enhancements made + +- Update to JupyterLab 4.0.4 packages [#6998](https://github.com/jupyter/notebook/pull/6998) ([@jtpio](https://github.com/jtpio)) +- Improve about dialog [#6996](https://github.com/jupyter/notebook/pull/6996) ([@yjrab](https://github.com/yjrab)) +- Added documentation link in Help menu [#6993](https://github.com/jupyter/notebook/pull/6993) ([@Mikil03](https://github.com/Mikil03)) + +### Bugs fixed + +- Remove `RedirectHandler` [#6997](https://github.com/jupyter/notebook/pull/6997) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-07-31&to=2023-08-04&type=c)) + +[@echarles](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aecharles+updated%3A2023-07-31..2023-08-04&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-07-31..2023-08-04&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-07-31..2023-08-04&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2023-07-31..2023-08-04&type=Issues) | [@Mikil03](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AMikil03+updated%3A2023-07-31..2023-08-04&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-07-31..2023-08-04&type=Issues) | [@shaneknapp](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ashaneknapp+updated%3A2023-07-31..2023-08-04&type=Issues) | [@yjrab](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ayjrab+updated%3A2023-07-31..2023-08-04&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AZsailer+updated%3A2023-07-31..2023-08-04&type=Issues) + +## 7.0.1 + +([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/app@7.0.0...ac3c882a246b46c15c1963ef4b65427a4257b132)) + +### Enhancements made + +- Update accessibly compliance section in the docs [#6982](https://github.com/jupyter/notebook/pull/6982) ([@andrii-i](https://github.com/andrii-i)) +- Update the browser tab favicon on kernel busy [#6980](https://github.com/jupyter/notebook/pull/6980) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Bump `word-wrap` and `semver` [#6979](https://github.com/jupyter/notebook/pull/6979) ([@jtpio](https://github.com/jtpio)) +- Enable lerna caching for build scripts [#6767](https://github.com/jupyter/notebook/pull/6767) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Update accessibly compliance section in the docs [#6982](https://github.com/jupyter/notebook/pull/6982) ([@andrii-i](https://github.com/andrii-i)) +- Fix link in `README.md` [#6973](https://github.com/jupyter/notebook/pull/6973) ([@jtpio](https://github.com/jtpio)) +- The future is now [#6972](https://github.com/jupyter/notebook/pull/6972) ([@frenzymadness](https://github.com/frenzymadness)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-07-19&to=2023-07-31&type=c)) + +[@andrii-i](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aandrii-i+updated%3A2023-07-19..2023-07-31&type=Issues) | [@echarles](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aecharles+updated%3A2023-07-19..2023-07-31&type=Issues) | [@frenzymadness](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Afrenzymadness+updated%3A2023-07-19..2023-07-31&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-07-19..2023-07-31&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-07-19..2023-07-31&type=Issues) | [@prof-lupin](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aprof-lupin+updated%3A2023-07-19..2023-07-31&type=Issues) + +## 7.0.0 + +Jupyter Notebook 7 is released :tada: + +Check the changelog: https://jupyter-notebook.readthedocs.io/en/latest/changelog.html + +And the new features in Notebook 7: https://jupyter-notebook.readthedocs.io/en/latest/notebook_7_features.html + +Migration Guide: https://jupyter-notebook.readthedocs.io/en/latest/migrate_to_notebook7.html + +______________________________________________________________________ + +For reference here is the changelog since the last `7.0.0rc2` release. + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0rc2...2be98e8f39af7f3ec2729006018f6baf0998f94b)) + +### Bugs fixed + +- Update Jupytext Notebook url path [#6961](https://github.com/jupyter/notebook/pull/6961) ([@RRosio](https://github.com/RRosio)) + +### Maintenance and upkeep improvements + +- Fix hatch version when going from rc [#6971](https://github.com/jupyter/notebook/pull/6971) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab 4.0.3 [#6967](https://github.com/jupyter/notebook/pull/6967) ([@jtpio](https://github.com/jtpio)) +- Bump semver from 7.5.0 to 7.5.3 in /ui-tests [#6950](https://github.com/jupyter/notebook/pull/6950) ([@dependabot](https://github.com/dependabot)) + +### Documentation improvements + +- fix: update link to troubleshooting guidelines [#6964](https://github.com/jupyter/notebook/pull/6964) ([@emmanuel-ferdman](https://github.com/emmanuel-ferdman)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-06-26&to=2023-07-19&type=c)) + +[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2023-06-26..2023-07-19&type=Issues) | [@emmanuel-ferdman](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aemmanuel-ferdman+updated%3A2023-06-26..2023-07-19&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-06-26..2023-07-19&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-06-26..2023-07-19&type=Issues) | [@parmentelat](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aparmentelat+updated%3A2023-06-26..2023-07-19&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-06-26..2023-07-19&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2023-06-26..2023-07-19&type=Issues) + +## 7.0.0rc2 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0rc1...27c00bc56afaa5b89713f760b0cc6eb88079224e)) + +### Bugs fixed + +- Fix opening files from the CLI [#6946](https://github.com/jupyter/notebook/pull/6946) ([@jtpio](https://github.com/jtpio)) +- Fix handling of the base url [#6943](https://github.com/jupyter/notebook/pull/6943) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-06-22&to=2023-06-26&type=c)) + +[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-06-22..2023-06-26&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-06-22..2023-06-26&type=Issues) | [@parmentelat](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aparmentelat+updated%3A2023-06-22..2023-06-26&type=Issues) + +## 7.0.0rc1 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0rc0...8493e1ba21ebaca5c192d68bdc829ccc5b29a799)) + +### Enhancements made + +- Close the browser tab when clicking on "Close and Shut Down Notebook" [#6937](https://github.com/jupyter/notebook/pull/6937) ([@jtpio](https://github.com/jtpio)) + +### Bugs fixed + +- Fix the redirect handler [#6941](https://github.com/jupyter/notebook/pull/6941) ([@jtpio](https://github.com/jtpio)) +- Make jupyter logo select properly (#6927) [#6938](https://github.com/jupyter/notebook/pull/6938) ([@Cheukting](https://github.com/Cheukting)) + +### Documentation improvements + +- Update issue templates [#6939](https://github.com/jupyter/notebook/pull/6939) ([@RRosio](https://github.com/RRosio)) +- Docs parity for find with JupyterLab. [#6917](https://github.com/jupyter/notebook/pull/6917) ([@ericsnekbytes](https://github.com/ericsnekbytes)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-06-19&to=2023-06-22&type=c)) + +[@andrii-i](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aandrii-i+updated%3A2023-06-19..2023-06-22&type=Issues) | [@Cheukting](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ACheukting+updated%3A2023-06-19..2023-06-22&type=Issues) | [@ericsnekbytes](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aericsnekbytes+updated%3A2023-06-19..2023-06-22&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-06-19..2023-06-22&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-06-19..2023-06-22&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2023-06-19..2023-06-22&type=Issues) + +## 7.0.0rc0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0b4...d0692112a4b2db20c2178205d4b5630184acbf7b)) + +### Enhancements made + +- Update JupyterLab, audit document viewers [#6922](https://github.com/jupyter/notebook/pull/6922) ([@jtpio](https://github.com/jtpio)) +- Customize the shell layout with the settings [#6921](https://github.com/jupyter/notebook/pull/6921) ([@jtpio](https://github.com/jtpio)) + +### Bugs fixed + +- Fix default viewers override [#6923](https://github.com/jupyter/notebook/pull/6923) ([@jtpio](https://github.com/jtpio)) +- Align JupyterHub config with JupyterLab [#6918](https://github.com/jupyter/notebook/pull/6918) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Added example of custom css files [#6919](https://github.com/jupyter/notebook/pull/6919) ([@RRosio](https://github.com/RRosio)) + +### API and Breaking Changes + +- Customize the shell layout with the settings [#6921](https://github.com/jupyter/notebook/pull/6921) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-06-12&to=2023-06-19&type=c)) + +[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-06-12..2023-06-19&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-06-12..2023-06-19&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2023-06-12..2023-06-19&type=Issues) + +## 7.0.0b4 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0b3...ee3e1c221226d482ca1c9bec6362c8af36f1da56)) + +### Enhancements made + +- Rename browser tab title to Home [#6913](https://github.com/jupyter/notebook/pull/6913) ([@Cheukting](https://github.com/Cheukting)) +- Add the notification plugin [#6900](https://github.com/jupyter/notebook/pull/6900) ([@jtpio](https://github.com/jtpio)) +- Configurable `default_url` for JupyterNotebookApp [#6899](https://github.com/jupyter/notebook/pull/6899) ([@paulgb](https://github.com/paulgb)) +- Enhancement: Added drop shadows to markdown, text, and tree views [#6893](https://github.com/jupyter/notebook/pull/6893) ([@rielAsh24](https://github.com/rielAsh24)) +- Update to JupyterLab 4.0.1 [#6892](https://github.com/jupyter/notebook/pull/6892) ([@jtpio](https://github.com/jtpio)) +- Add file browser actions to the file browser toolbar [#6888](https://github.com/jupyter/notebook/pull/6888) ([@jtpio](https://github.com/jtpio)) +- Add option to open a notebook in NbClassic if it is installed; show "Open in..." dropdown menu if there are multiple options, show single button otherwise [#6866](https://github.com/jupyter/notebook/pull/6866) ([@andrii-i](https://github.com/andrii-i)) +- Load custom CSS [#6841](https://github.com/jupyter/notebook/pull/6841) ([@RRosio](https://github.com/RRosio)) + +### Bugs fixed + +- Add an empty splash screen on notebook launch to avoid a flash of unstyled content [#6911](https://github.com/jupyter/notebook/pull/6911) ([@andrii-i](https://github.com/andrii-i)) +- Fix for "find searches only part of the file" bug [#6905](https://github.com/jupyter/notebook/pull/6905) ([@ericsnekbytes](https://github.com/ericsnekbytes)) +- Provide a custom rendermime plugin to handle local links [#6885](https://github.com/jupyter/notebook/pull/6885) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Fix check links on CI [#6910](https://github.com/jupyter/notebook/pull/6910) ([@jtpio](https://github.com/jtpio)) +- Add `JSONLicenseWebpackPlugin` [#6896](https://github.com/jupyter/notebook/pull/6896) ([@jtpio](https://github.com/jtpio)) +- Simplify Gitpod setup [#6894](https://github.com/jupyter/notebook/pull/6894) ([@jtpio](https://github.com/jtpio)) +- Fix action name in update workflow [#6884](https://github.com/jupyter/notebook/pull/6884) ([@jtpio](https://github.com/jtpio)) +- Fix playwright bot [#6880](https://github.com/jupyter/notebook/pull/6880) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Document how to manage plugins and extensions [#6909](https://github.com/jupyter/notebook/pull/6909) ([@jtpio](https://github.com/jtpio)) +- Jupyter Notebook ecosystem docs improvements [#6877](https://github.com/jupyter/notebook/pull/6877) ([@ericsnekbytes](https://github.com/ericsnekbytes)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-05-25&to=2023-06-12&type=c)) + +[@andrii-i](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aandrii-i+updated%3A2023-05-25..2023-06-12&type=Issues) | [@Cheukting](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ACheukting+updated%3A2023-05-25..2023-06-12&type=Issues) | [@echarles](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aecharles+updated%3A2023-05-25..2023-06-12&type=Issues) | [@ericsnekbytes](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aericsnekbytes+updated%3A2023-05-25..2023-06-12&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-05-25..2023-06-12&type=Issues) | [@henryiii](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ahenryiii+updated%3A2023-05-25..2023-06-12&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-05-25..2023-06-12&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2023-05-25..2023-06-12&type=Issues) | [@paulgb](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apaulgb+updated%3A2023-05-25..2023-06-12&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-05-25..2023-06-12&type=Issues) | [@rielAsh24](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ArielAsh24+updated%3A2023-05-25..2023-06-12&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2023-05-25..2023-06-12&type=Issues) | [@yuvipanda](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ayuvipanda+updated%3A2023-05-25..2023-06-12&type=Issues) + +## 7.0.0b3 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0b2...93e4d5e1c6ed7a3a4875eed284255587ac293819)) + +### Enhancements made + +- Copy edits for `migrate_to_notebook7` [#6879](https://github.com/jupyter/notebook/pull/6879) ([@JasonWeill](https://github.com/JasonWeill)) +- Enable add a cell button [#6872](https://github.com/jupyter/notebook/pull/6872) ([@tuncbkose](https://github.com/tuncbkose)) +- Update to JupyterLab 4 final [#6871](https://github.com/jupyter/notebook/pull/6871) ([@jtpio](https://github.com/jtpio)) +- Remove "Close Tab" menu entry [#6843](https://github.com/jupyter/notebook/pull/6843) ([@timmerk3](https://github.com/timmerk3)) + +### Bugs fixed + +- Fix handling of the default factory in the URL [#6873](https://github.com/jupyter/notebook/pull/6873) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Update to Playwright 1.33 [#6874](https://github.com/jupyter/notebook/pull/6874) ([@jtpio](https://github.com/jtpio)) +- Fix check links on CI [#6870](https://github.com/jupyter/notebook/pull/6870) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Copy edits for `migrate_to_notebook7` [#6879](https://github.com/jupyter/notebook/pull/6879) ([@JasonWeill](https://github.com/JasonWeill)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-05-09&to=2023-05-25&type=c)) + +[@andrii-i](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aandrii-i+updated%3A2023-05-09..2023-05-25&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-05-09..2023-05-25&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AJasonWeill+updated%3A2023-05-09..2023-05-25&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-05-09..2023-05-25&type=Issues) | [@timmerk3](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Atimmerk3+updated%3A2023-05-09..2023-05-25&type=Issues) | [@tuncbkose](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Atuncbkose+updated%3A2023-05-09..2023-05-25&type=Issues) + +## 7.0.0b2 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0b1...c0071d796019c0221df4900313b51c0529438bcf)) + +### Enhancements made + +- Update to JupyterLab 4.0.0rc1 [#6864](https://github.com/jupyter/notebook/pull/6864) ([@jtpio](https://github.com/jtpio)) +- Change "Interface" menu to "Open in...", shorten names of menu items inside [#6847](https://github.com/jupyter/notebook/pull/6847) ([@andrii-i](https://github.com/andrii-i)) +- Add Skip Link to Notebook [#6844](https://github.com/jupyter/notebook/pull/6844) ([@seirani](https://github.com/seirani)) + +### Bugs fixed + +- Fix top bar visibility not picking up settings overrides (#6833) [#6836](https://github.com/jupyter/notebook/pull/6836) ([@yumyumqing](https://github.com/yumyumqing)) + +### Maintenance and upkeep improvements + +- Update RTD image [#6861](https://github.com/jupyter/notebook/pull/6861) ([@blink1073](https://github.com/blink1073)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-04-28&to=2023-05-09&type=c)) + +[@andrii-i](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aandrii-i+updated%3A2023-04-28..2023-05-09&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2023-04-28..2023-05-09&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-04-28..2023-05-09&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-04-28..2023-05-09&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-04-28..2023-05-09&type=Issues) | [@seirani](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aseirani+updated%3A2023-04-28..2023-05-09&type=Issues) | [@yumyumqing](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ayumyumqing+updated%3A2023-04-28..2023-05-09&type=Issues) + +## 7.0.0b1 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0b0...4b6af274b24bcc20e43ad2330c9243c8d2c7d552)) + +### Enhancements made + +- Update to JupyterLab 4.0.0rc0 [#6853](https://github.com/jupyter/notebook/pull/6853) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab `4.0.0b1` and `4.0.0b2` [#6838](https://github.com/jupyter/notebook/pull/6838) ([@jtpio](https://github.com/jtpio)) + +### Bugs fixed + +- Fixes the notebooktools [#6834](https://github.com/jupyter/notebook/pull/6834) ([@brichet](https://github.com/brichet)) + +### Maintenance and upkeep improvements + +- Use local coverage [#6839](https://github.com/jupyter/notebook/pull/6839) ([@blink1073](https://github.com/blink1073)) + +### Documentation improvements + +- Added extra information and user-action summaries to 7 migration docs. [#6850](https://github.com/jupyter/notebook/pull/6850) ([@ericsnekbytes](https://github.com/ericsnekbytes)) +- Rename migration file to `migrate_to_notebook7` [#6831](https://github.com/jupyter/notebook/pull/6831) ([@jtpio](https://github.com/jtpio)) +- Use correct canonical URL while building docs [#6829](https://github.com/jupyter/notebook/pull/6829) ([@ashwinvis](https://github.com/ashwinvis)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-04-04&to=2023-04-28&type=c)) + +[@ashwinvis](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aashwinvis+updated%3A2023-04-04..2023-04-28&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2023-04-04..2023-04-28&type=Issues) | [@brichet](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2023-04-04..2023-04-28&type=Issues) | [@ericsnekbytes](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aericsnekbytes+updated%3A2023-04-04..2023-04-28&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-04-04..2023-04-28&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-04-04..2023-04-28&type=Issues) + +## 7.0.0b0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a18...b99718f57a8beac7b4019901a57c94984781dd49)) + +### Enhancements made + +- Update to JupyterLab `4.0.0b0` [#6803](https://github.com/jupyter/notebook/pull/6803) ([@jtpio](https://github.com/jtpio)) + +### Bugs fixed + +- added white space to bottom of edit files [#6804](https://github.com/jupyter/notebook/pull/6804) ([@jesuscastillx](https://github.com/jesuscastillx)) +- Hides 'micro' toolbars in notebook [#6791](https://github.com/jupyter/notebook/pull/6791) ([@JasonWeill](https://github.com/JasonWeill)) + +### Maintenance and upkeep improvements + +- Add missing singleton packages for RTC [#6816](https://github.com/jupyter/notebook/pull/6816) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Improve the documentation for Notebook 7 [#6813](https://github.com/jupyter/notebook/pull/6813) ([@jtpio](https://github.com/jtpio)) +- fix typo in the migration guide [#6812](https://github.com/jupyter/notebook/pull/6812) ([@Tiksagol](https://github.com/Tiksagol)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-03-24&to=2023-04-04&type=c)) + +[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-03-24..2023-04-04&type=Issues) | [@j-publius](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aj-publius+updated%3A2023-03-24..2023-04-04&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AJasonWeill+updated%3A2023-03-24..2023-04-04&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-03-24..2023-04-04&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-03-24..2023-04-04&type=Issues) | [@Tiksagol](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ATiksagol+updated%3A2023-03-24..2023-04-04&type=Issues) + +## 7.0.0a18 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a17...253efe279f8c8005f016f3dfe28c22233ee1d2dd)) + +### Enhancements made + +- Add back the `csvviewer-extension` [#6799](https://github.com/jupyter/notebook/pull/6799) ([@jtpio](https://github.com/jtpio)) +- Fix JSON setting editor not opening issue [#6795](https://github.com/jupyter/notebook/pull/6795) ([@yumyumqing](https://github.com/yumyumqing)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-03-20&to=2023-03-24&type=c)) + +[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-03-20..2023-03-24&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-03-20..2023-03-24&type=Issues) | [@yumyumqing](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ayumyumqing+updated%3A2023-03-20..2023-03-24&type=Issues) + +## 7.0.0a17 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a16...7903de83e83a6ce342d71895dc1e8c2ec8128174)) + +### Highlights + +This major change in this release is the update to the latest JupyterLab `4.0.0a37`. + +Check out the [JupyterLab `4.0.0a37` release notes](https://github.com/jupyterlab/jupyterlab/releases/tag/v4.0.0a37) for more details. + +### Enhancements made + +- Update to JupyterLab 4.0.0a37 [#6777](https://github.com/jupyter/notebook/pull/6777) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Replace the use of `toArray` by `Array.from` [#6775](https://github.com/jupyter/notebook/pull/6775) (`@tarunsamanta2k20`) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-03-15&to=2023-03-20&type=c)) + +[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-03-15..2023-03-20&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-03-15..2023-03-20&type=Issues) | [@tarunsamanta2k20](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Atarunsamanta2k20+updated%3A2023-03-15..2023-03-20&type=Issues) + +## 7.0.0a16 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a15...0faa88c8b65e0302f1904e4ca9cd2e551525f352)) + +### Enhancements made + +- Update to JupyterLab 4.0.0a36 [#6773](https://github.com/jupyter/notebook/pull/6773) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Clean up interface switcher plugin in preparation for release [#6766](https://github.com/jupyter/notebook/pull/6766) ([@afshin](https://github.com/afshin)) +- Remove empty `py.test` file [#6764](https://github.com/jupyter/notebook/pull/6764) ([@frenzymadness](https://github.com/frenzymadness)) + +### Documentation improvements + +- Add documentation for contributing to the docs [#6771](https://github.com/jupyter/notebook/pull/6771) ([@jtpio](https://github.com/jtpio)) +- Convert docs to Markdown [#6770](https://github.com/jupyter/notebook/pull/6770) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-03-08&to=2023-03-15&type=c)) + +[@afshin](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aafshin+updated%3A2023-03-08..2023-03-15&type=Issues) | [@frenzymadness](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Afrenzymadness+updated%3A2023-03-08..2023-03-15&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-03-08..2023-03-15&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-03-08..2023-03-15&type=Issues) + +## 7.0.0a15 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a14...1ccb8f15d6bf3557eed2405438a9df3c1d6cd040)) + +### Enhancements made + +- Update to JupyterLab 4.0.0a35 [#6757](https://github.com/jupyter/notebook/pull/6757) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Bump vega from 5.22.1 to 5.23.0 in /ui-tests [#6756](https://github.com/jupyter/notebook/pull/6756) ([@dependabot](https://github.com/dependabot)) +- Bump vega-functions from 5.13.0 to 5.13.1 in /ui-tests [#6754](https://github.com/jupyter/notebook/pull/6754) ([@dependabot](https://github.com/dependabot)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-03-01&to=2023-03-08&type=c)) + +[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2023-03-01..2023-03-08&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-03-01..2023-03-08&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-03-01..2023-03-08&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-03-01..2023-03-08&type=Issues) + +## 7.0.0a14 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a13...f9e427cf4e92dbaa5794fe0331ca92b41d45d52c)) + +### Enhancements made + +- Fix loading of plugins [#6750](https://github.com/jupyter/notebook/pull/6750) ([@jtpio](https://github.com/jtpio)) +- Add the extension manager [#6747](https://github.com/jupyter/notebook/pull/6747) ([@jtpio](https://github.com/jtpio)) +- File browser CSS tweaks [#6738](https://github.com/jupyter/notebook/pull/6738) ([@jtpio](https://github.com/jtpio)) +- Add trusted indicator [#6736](https://github.com/jupyter/notebook/pull/6736) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Clean up license [#6743](https://github.com/jupyter/notebook/pull/6743) ([@dcsaba89](https://github.com/dcsaba89)) +- Update to TypeScript 5 [#6735](https://github.com/jupyter/notebook/pull/6735) ([@jtpio](https://github.com/jtpio)) +- Enable `nx` [#6718](https://github.com/jupyter/notebook/pull/6718) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Corrected "Recomment" to "Recommend" [#6741](https://github.com/jupyter/notebook/pull/6741) ([@Tony-j77](https://github.com/Tony-j77)) +- Docs: add migrate to notebook7 page [#6737](https://github.com/jupyter/notebook/pull/6737) ([@echarles](https://github.com/echarles)) +- Add section about updating reference snapshots [#6733](https://github.com/jupyter/notebook/pull/6733) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-02-15&to=2023-03-01&type=c)) + +[@dcsaba89](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adcsaba89+updated%3A2023-02-15..2023-03-01&type=Issues) | [@echarles](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aecharles+updated%3A2023-02-15..2023-03-01&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-02-15..2023-03-01&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-02-15..2023-03-01&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2023-02-15..2023-03-01&type=Issues) | [@Tony-j77](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ATony-j77+updated%3A2023-02-15..2023-03-01&type=Issues) + +## 7.0.0a13 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a12...ef67879306b27dfa78b8d639d9cc142b50f8c7ba)) + +### Enhancements made + +- Update to JupyterLab 4.0.0a34 [#6732](https://github.com/jupyter/notebook/pull/6732) ([@jtpio](https://github.com/jtpio)) +- Hide the debugger button on mobile [#6731](https://github.com/jupyter/notebook/pull/6731) ([@jtpio](https://github.com/jtpio)) +- Adds translator to the NotebookShell [#6725](https://github.com/jupyter/notebook/pull/6725) ([@brichet](https://github.com/brichet)) +- Resolving some accessibility issues [#6719](https://github.com/jupyter/notebook/pull/6719) ([@brichet](https://github.com/brichet)) + +### Maintenance and upkeep improvements + +- Fix Playwright snapshot update workflow [#6724](https://github.com/jupyter/notebook/pull/6724) ([@jtpio](https://github.com/jtpio)) +- Add workflow to update snapshots [#6723](https://github.com/jupyter/notebook/pull/6723) ([@jtpio](https://github.com/jtpio)) +- Use Playwright `webServer` [#6720](https://github.com/jupyter/notebook/pull/6720) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-02-08&to=2023-02-15&type=c)) + +[@brichet](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2023-02-08..2023-02-15&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-02-08..2023-02-15&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-02-08..2023-02-15&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-02-08..2023-02-15&type=Issues) + +## 7.0.0a12 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a11...27c2bfbb80d42a3fd2541b13fae6143e2e91e4dd)) + +### Enhancements made + +- Update to JupyterLab 4.0.0a33 [#6713](https://github.com/jupyter/notebook/pull/6713) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Add more lint checks [#6706](https://github.com/jupyter/notebook/pull/6706) ([@blink1073](https://github.com/blink1073)) +- Reintroduce desktop file [#6705](https://github.com/jupyter/notebook/pull/6705) ([@frenzymadness](https://github.com/frenzymadness)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-01-19&to=2023-02-08&type=c)) + +[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2023-01-19..2023-02-08&type=Issues) | [@frenzymadness](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Afrenzymadness+updated%3A2023-01-19..2023-02-08&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-01-19..2023-02-08&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-01-19..2023-02-08&type=Issues) + +## 7.0.0a11 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a10...6d4eeed9d176e2523be7874ae4d9f46a99422d72)) + +### Enhancements made + +- Tree view enhancement [#6588](https://github.com/jupyter/notebook/pull/6588) ([@brichet](https://github.com/brichet)) +- Add the Settings Editor to the landing page [#6316](https://github.com/jupyter/notebook/pull/6316) ([@jtpio](https://github.com/jtpio)) + +### Bugs fixed + +- Fix console error when adding a widget to a side panel [#6694](https://github.com/jupyter/notebook/pull/6694) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Help-extension split into multiple plugins [#6700](https://github.com/jupyter/notebook/pull/6700) ([@RRosio](https://github.com/RRosio)) +- Add releaser workflows [#6698](https://github.com/jupyter/notebook/pull/6698) ([@blink1073](https://github.com/blink1073)) +- Create `auto_author_assign.yml` workflow [#6696](https://github.com/jupyter/notebook/pull/6696) ([@jtpio](https://github.com/jtpio)) +- Add back `# type:ignore` [#6695](https://github.com/jupyter/notebook/pull/6695) ([@jtpio](https://github.com/jtpio)) +- Fix environment activation on Gitpod [#6693](https://github.com/jupyter/notebook/pull/6693) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-01-09&to=2023-01-19&type=c)) + +[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2023-01-09..2023-01-19&type=Issues) | [@brichet](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2023-01-09..2023-01-19&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-01-09..2023-01-19&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-01-09..2023-01-19&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2023-01-09..2023-01-19&type=Issues) + +## 7.0.0a10 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a9...6205bf376f783b7202af71e1074f44086ee7056c)) + +### Enhancements made + +- Update to JupyterLab 4.0.0a32 [#6678](https://github.com/jupyter/notebook/pull/6678) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Bump json5 from 2.2.1 to 2.2.3 in /ui-tests [#6684](https://github.com/jupyter/notebook/pull/6684) ([@dependabot](https://github.com/dependabot)) +- Bump json5 from 1.0.1 to 1.0.2 [#6681](https://github.com/jupyter/notebook/pull/6681) ([@dependabot](https://github.com/dependabot)) +- Update the copyright date to 2023 in the about dialog [#6679](https://github.com/jupyter/notebook/pull/6679) ([@jtpio](https://github.com/jtpio)) +- Fix `check_links` and `Test Lint` CI failures [#6675](https://github.com/jupyter/notebook/pull/6675) ([@jtpio](https://github.com/jtpio)) +- Add spelling and docstring enforcement [#6669](https://github.com/jupyter/notebook/pull/6669) ([@blink1073](https://github.com/blink1073)) +- CI Cleanup [#6667](https://github.com/jupyter/notebook/pull/6667) ([@blink1073](https://github.com/blink1073)) +- Adopt ruff and typing [#6658](https://github.com/jupyter/notebook/pull/6658) ([@blink1073](https://github.com/blink1073)) +- Bump decode-uri-component from 0.2.0 to 0.2.2 [#6651](https://github.com/jupyter/notebook/pull/6651) ([@dependabot](https://github.com/dependabot)) +- Bump dessant/lock-threads from 3 to 4 [#6650](https://github.com/jupyter/notebook/pull/6650) ([@dependabot](https://github.com/dependabot)) +- Update to TypeScript 4.9 [#6640](https://github.com/jupyter/notebook/pull/6640) ([@jtpio](https://github.com/jtpio)) +- Add more Python tests [#6639](https://github.com/jupyter/notebook/pull/6639) ([@blink1073](https://github.com/blink1073)) +- use main branch for config [#6638](https://github.com/jupyter/notebook/pull/6638) ([@blink1073](https://github.com/blink1073)) +- Clean up workflows [#6635](https://github.com/jupyter/notebook/pull/6635) ([@blink1073](https://github.com/blink1073)) +- CI Cleanup [#6631](https://github.com/jupyter/notebook/pull/6631) ([@blink1073](https://github.com/blink1073)) +- Fix issue template formatting [#6626](https://github.com/jupyter/notebook/pull/6626) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Remove PDF link to Jupyter Notebook docs [#6648](https://github.com/jupyter/notebook/pull/6648) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-11-21&to=2023-01-09&type=c)) + +[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2022-11-21..2023-01-09&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2022-11-21..2023-01-09&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2022-11-21..2023-01-09&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2022-11-21..2023-01-09&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2022-11-21..2023-01-09&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2022-11-21..2023-01-09&type=Issues) | [@yacchin1205](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ayacchin1205+updated%3A2022-11-21..2023-01-09&type=Issues) + +## 7.0.0a9 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a8...b4006ce47bf37b31a7049a77971d7e5db1070660)) + +### Enhancements made + +- Update to JupyterLab 4.0.0a31 [#6627](https://github.com/jupyter/notebook/pull/6627) ([@jtpio](https://github.com/jtpio)) + +### Bugs fixed + +- Explicitly specify favicon for /tree view in Notebook [#6608](https://github.com/jupyter/notebook/pull/6608) ([@mcrutch](https://github.com/mcrutch)) + +### Maintenance and upkeep improvements + +- Add run-p (npm-run-all) to dev dependencies [#6629](https://github.com/jupyter/notebook/pull/6629) ([@gabalafou](https://github.com/gabalafou)) +- Moves panel related objects to a dedicated module file [#6625](https://github.com/jupyter/notebook/pull/6625) ([@brichet](https://github.com/brichet)) +- Use pathlib instead of os.path.join in `tests/conftest.py` [#6624](https://github.com/jupyter/notebook/pull/6624) ([@kianelbo](https://github.com/kianelbo)) +- Bump loader-utils from 1.4.1 to 1.4.2 [#6623](https://github.com/jupyter/notebook/pull/6623) ([@dependabot](https://github.com/dependabot)) +- Bump to Python 3.11 on CI [#6600](https://github.com/jupyter/notebook/pull/6600) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-11-11&to=2022-11-21&type=c)) + +[@brichet](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2022-11-11..2022-11-21&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2022-11-11..2022-11-21&type=Issues) | [@fcollonval](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Afcollonval+updated%3A2022-11-11..2022-11-21&type=Issues) | [@gabalafou](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agabalafou+updated%3A2022-11-11..2022-11-21&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2022-11-11..2022-11-21&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2022-11-11..2022-11-21&type=Issues) | [@kianelbo](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akianelbo+updated%3A2022-11-11..2022-11-21&type=Issues) | [@mcrutch](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Amcrutch+updated%3A2022-11-11..2022-11-21&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2022-11-11..2022-11-21&type=Issues) + +## 7.0.0a8 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a7...9141f3eabb6a10a5bf742b26713405f9768cb6d2)) + +### Enhancements made + +- Restyle about dialog [#6592](https://github.com/jupyter/notebook/pull/6592) ([@kostyafarber](https://github.com/kostyafarber)) + +### Bugs fixed + +- Fix async contents handling and add test [#6616](https://github.com/jupyter/notebook/pull/6616) ([@blink1073](https://github.com/blink1073)) +- Fix PDF renderer [#6584](https://github.com/jupyter/notebook/pull/6584) ([@brichet](https://github.com/brichet)) +- Fix HTML viewer [#6583](https://github.com/jupyter/notebook/pull/6583) ([@brichet](https://github.com/brichet)) + +### Maintenance and upkeep improvements + +- Bump loader-utils from 1.4.0 to 1.4.1 [#6615](https://github.com/jupyter/notebook/pull/6615) ([@dependabot](https://github.com/dependabot)) +- Bump dessant/lock-threads from 2 to 3 [#6587](https://github.com/jupyter/notebook/pull/6587) ([@dependabot](https://github.com/dependabot)) +- Add dependabot config to update GitHub Actions [#6586](https://github.com/jupyter/notebook/pull/6586) ([@jtpio](https://github.com/jtpio)) +- Update `actions/checkout` and `actions/download-artifact` [#6585](https://github.com/jupyter/notebook/pull/6585) ([@jtpio](https://github.com/jtpio)) +- Maintenance cleanup [#6581](https://github.com/jupyter/notebook/pull/6581) ([@blink1073](https://github.com/blink1073)) +- Update to lerna 6 [#6579](https://github.com/jupyter/notebook/pull/6579) ([@jtpio](https://github.com/jtpio)) +- Remove the `nbclassic` explicit uninstall on Binder [#6548](https://github.com/jupyter/notebook/pull/6548) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-10-13&to=2022-11-11&type=c)) + +[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2022-10-13..2022-11-11&type=Issues) | [@bnavigator](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abnavigator+updated%3A2022-10-13..2022-11-11&type=Issues) | [@brichet](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2022-10-13..2022-11-11&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2022-10-13..2022-11-11&type=Issues) | [@echarles](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aecharles+updated%3A2022-10-13..2022-11-11&type=Issues) | [@fcollonval](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Afcollonval+updated%3A2022-10-13..2022-11-11&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2022-10-13..2022-11-11&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2022-10-13..2022-11-11&type=Issues) | [@kostyafarber](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akostyafarber+updated%3A2022-10-13..2022-11-11&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2022-10-13..2022-11-11&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2022-10-13..2022-11-11&type=Issues) | [@venkatasg](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Avenkatasg+updated%3A2022-10-13..2022-11-11&type=Issues) + +## 7.0.0a7 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a6...caa0a11e36901c08ae80100fe2bbc5161c47dfee)) + +### Enhancements made + +- Fixed user menu alignment [#6565](https://github.com/jupyter/notebook/pull/6565) ([@Mieju](https://github.com/Mieju)) +- Support for Left and Right panels [#6487](https://github.com/jupyter/notebook/pull/6487) ([@brichet](https://github.com/brichet)) + +### Maintenance and upkeep improvements + +- Update to JupyterLab 4.0.0a30 [#6566](https://github.com/jupyter/notebook/pull/6566) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- Fix typo in CHANGELOG.md [#6561](https://github.com/jupyter/notebook/pull/6561) ([@eltociear](https://github.com/eltociear)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-10-03&to=2022-10-13&type=c)) + +[@brichet](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2022-10-03..2022-10-13&type=Issues) | [@eltociear](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aeltociear+updated%3A2022-10-03..2022-10-13&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2022-10-03..2022-10-13&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2022-10-03..2022-10-13&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2022-10-03..2022-10-13&type=Issues) | [@Mieju](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AMieju+updated%3A2022-10-03..2022-10-13&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2022-10-03..2022-10-13&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2022-10-03..2022-10-13&type=Issues) + +## 7.0.0a6 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a5...acbec17feca2ae8a0f56c5ec04ba2475a42619ee)) + +### Enhancements made + +- Add token on tree widget [#6496](https://github.com/jupyter/notebook/pull/6496) ([@brichet](https://github.com/brichet)) +- Updates README to document maintained versions [#6480](https://github.com/jupyter/notebook/pull/6480) ([@JasonWeill](https://github.com/JasonWeill)) +- Change the tab renderer to allow adding closable tab [#6477](https://github.com/jupyter/notebook/pull/6477) ([@brichet](https://github.com/brichet)) + +### Bugs fixed + +- Fix: No mouse pointer when hovering on the Jupyter icon [#6550](https://github.com/jupyter/notebook/pull/6550) ([@hawkeyes21](https://github.com/hawkeyes21)) + +### Maintenance and upkeep improvements + +- Switch to hatch for python version [#6544](https://github.com/jupyter/notebook/pull/6544) ([@blink1073](https://github.com/blink1073)) +- Update to Lumino 2 and JupyterLab 4.0.0a29 [#6539](https://github.com/jupyter/notebook/pull/6539) ([@afshin](https://github.com/afshin)) +- Update lerna version [#6535](https://github.com/jupyter/notebook/pull/6535) ([@blink1073](https://github.com/blink1073)) +- Add task to auto activate the dev environment on Gitpod [#6527](https://github.com/jupyter/notebook/pull/6527) ([@jtpio](https://github.com/jtpio)) +- Troubleshoot failing `macos` check on CI [#6523](https://github.com/jupyter/notebook/pull/6523) ([@jtpio](https://github.com/jtpio)) +- Update reference snapshots [#6520](https://github.com/jupyter/notebook/pull/6520) ([@jtpio](https://github.com/jtpio)) +- Add Gitpod files [#6518](https://github.com/jupyter/notebook/pull/6518) ([@jtpio](https://github.com/jtpio)) +- Adding jupyterlab-probot yml file for labeling new issues [#6506](https://github.com/jupyter/notebook/pull/6506) ([@RRosio](https://github.com/RRosio)) +- Uninstall `nbclassic` on Binder so Notebook v7 can load [#6505](https://github.com/jupyter/notebook/pull/6505) ([@jtpio](https://github.com/jtpio)) +- Pin `ypy-websocket` to `0.2` [#6499](https://github.com/jupyter/notebook/pull/6499) ([@jtpio](https://github.com/jtpio)) +- Bump moment from 2.29.3 to 2.29.4 [#6483](https://github.com/jupyter/notebook/pull/6483) ([@dependabot](https://github.com/dependabot)) +- Bump moment from 2.29.2 to 2.29.4 in /ui-tests [#6482](https://github.com/jupyter/notebook/pull/6482) ([@dependabot](https://github.com/dependabot)) +- Bump terser from 5.13.1 to 5.14.2 [#6481](https://github.com/jupyter/notebook/pull/6481) ([@dependabot](https://github.com/dependabot)) +- Bump parse-url from 6.0.0 to 6.0.2 [#6465](https://github.com/jupyter/notebook/pull/6465) ([@dependabot](https://github.com/dependabot)) +- Fix tests [#6464](https://github.com/jupyter/notebook/pull/6464) ([@jtpio](https://github.com/jtpio)) +- Bump jpeg-js from 0.4.3 to 0.4.4 in /ui-tests [#6455](https://github.com/jupyter/notebook/pull/6455) ([@dependabot](https://github.com/dependabot)) + +### Documentation improvements + +- Updates README to document maintained versions [#6480](https://github.com/jupyter/notebook/pull/6480) ([@JasonWeill](https://github.com/JasonWeill)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-06-14&to=2022-10-03&type=c)) + +[@afshin](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aafshin+updated%3A2022-06-14..2022-10-03&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2022-06-14..2022-10-03&type=Issues) | [@brichet](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2022-06-14..2022-10-03&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2022-06-14..2022-10-03&type=Issues) | [@echarles](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aecharles+updated%3A2022-06-14..2022-10-03&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2022-06-14..2022-10-03&type=Issues) | [@hawkeyes21](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ahawkeyes21+updated%3A2022-06-14..2022-10-03&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2022-06-14..2022-10-03&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AJasonWeill+updated%3A2022-06-14..2022-10-03&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2022-06-14..2022-10-03&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2022-06-14..2022-10-03&type=Issues) + +## 7.0.0a5 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a4...614e4780b88f5cf5e2bfda39a55357a0be5ef161)) + +### Enhancements made + +- Add shadow to cells [#6433](https://github.com/jupyter/notebook/pull/6433) ([@trungleduc](https://github.com/trungleduc)) + +### Maintenance and upkeep improvements + +- Fix docs build [#6447](https://github.com/jupyter/notebook/pull/6447) ([@jtpio](https://github.com/jtpio)) +- \[pre-commit.ci\] pre-commit autoupdate [#6444](https://github.com/jupyter/notebook/pull/6444) ([@pre-commit-ci](https://github.com/pre-commit-ci)) +- \[pre-commit.ci\] pre-commit autoupdate [#6439](https://github.com/jupyter/notebook/pull/6439) ([@pre-commit-ci](https://github.com/pre-commit-ci)) +- \[pre-commit.ci\] pre-commit autoupdate [#6434](https://github.com/jupyter/notebook/pull/6434) ([@pre-commit-ci](https://github.com/pre-commit-ci)) +- Use hatch backend [#6425](https://github.com/jupyter/notebook/pull/6425) ([@blink1073](https://github.com/blink1073)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-05-20&to=2022-06-14&type=c)) + +[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2022-05-20..2022-06-14&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2022-05-20..2022-06-14&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2022-05-20..2022-06-14&type=Issues) | [@ofek](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aofek+updated%3A2022-05-20..2022-06-14&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2022-05-20..2022-06-14&type=Issues) | [@trungleduc](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Atrungleduc+updated%3A2022-05-20..2022-06-14&type=Issues) + +## 7.0.0a4 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a3...4bfaaac148a25ba76fcc7416e3a7b2c714b36fcd)) + +### Enhancements made + +- Update to JupyterLab 4.0.0a25 [#6429](https://github.com/jupyter/notebook/pull/6429) ([@jtpio](https://github.com/jtpio)) +- Add cell toolbar extension [#6418](https://github.com/jupyter/notebook/pull/6418) ([@jtpio](https://github.com/jtpio)) +- add the show header command to the command palette [#6415](https://github.com/jupyter/notebook/pull/6415) ([@jeewonkoo](https://github.com/jeewonkoo)) +- Remove the "Appearance" menu entry [#6412](https://github.com/jupyter/notebook/pull/6412) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- \[pre-commit.ci\] pre-commit autoupdate [#6426](https://github.com/jupyter/notebook/pull/6426) ([@pre-commit-ci](https://github.com/pre-commit-ci)) +- Allow bot PRs to be automatically labeled [#6414](https://github.com/jupyter/notebook/pull/6414) ([@blink1073](https://github.com/blink1073)) +- Add Visual Regression Test for the export submenu [#6383](https://github.com/jupyter/notebook/pull/6383) ([@jtpio](https://github.com/jtpio)) +- Fix ESLint config for tests [#6382](https://github.com/jupyter/notebook/pull/6382) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-04-27&to=2022-05-20&type=c)) + +[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2022-04-27..2022-05-20&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2022-04-27..2022-05-20&type=Issues) | [@jeewonkoo](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajeewonkoo+updated%3A2022-04-27..2022-05-20&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2022-04-27..2022-05-20&type=Issues) | [@ofek](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aofek+updated%3A2022-04-27..2022-05-20&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2022-04-27..2022-05-20&type=Issues) + +## 7.0.0a3 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a2...4076882c0e08875dd719945835f8cbe5b10eac9e)) + +### Enhancements made + +- Show file checkboxes by default in the file browser [#6377](https://github.com/jupyter/notebook/pull/6377) ([@jtpio](https://github.com/jtpio)) +- Remove blank space at the bottom of the notebook [#6376](https://github.com/jupyter/notebook/pull/6376) ([@jtpio](https://github.com/jtpio)) +- Add a label to the upload button [#6374](https://github.com/jupyter/notebook/pull/6374) ([@jtpio](https://github.com/jtpio)) +- Update to JupyterLab 4.0.0a24 [#6371](https://github.com/jupyter/notebook/pull/6371) ([@jtpio](https://github.com/jtpio)) +- Initialize handler page_config from Server traitlets [#6366](https://github.com/jupyter/notebook/pull/6366) ([@bollwyvl](https://github.com/bollwyvl)) +- Add project URLs to setup.cfg [#6346](https://github.com/jupyter/notebook/pull/6346) ([@tlinhart](https://github.com/tlinhart)) +- Update to JupyterLab 4.0.0a23 [#6336](https://github.com/jupyter/notebook/pull/6336) ([@jtpio](https://github.com/jtpio)) + +### Bugs fixed + +- Fix opening JupyterLab from Notebook [#6379](https://github.com/jupyter/notebook/pull/6379) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Add UI tests for a simple notebook [#6380](https://github.com/jupyter/notebook/pull/6380) ([@jtpio](https://github.com/jtpio)) +- Bump async from 2.6.3 to 2.6.4 in /ui-tests [#6370](https://github.com/jupyter/notebook/pull/6370) ([@dependabot](https://github.com/dependabot)) +- Fix build workflow on CI [#6369](https://github.com/jupyter/notebook/pull/6369) ([@jtpio](https://github.com/jtpio)) +- \[pre-commit.ci\] pre-commit autoupdate [#6365](https://github.com/jupyter/notebook/pull/6365) ([@pre-commit-ci](https://github.com/pre-commit-ci)) +- \[pre-commit.ci\] pre-commit autoupdate [#6355](https://github.com/jupyter/notebook/pull/6355) ([@pre-commit-ci](https://github.com/pre-commit-ci)) +- Bump moment from 2.29.1 to 2.29.2 [#6352](https://github.com/jupyter/notebook/pull/6352) ([@dependabot](https://github.com/dependabot)) +- Bump moment from 2.29.1 to 2.29.2 in /ui-tests [#6351](https://github.com/jupyter/notebook/pull/6351) ([@dependabot](https://github.com/dependabot)) +- Clean up pre-commit [#6349](https://github.com/jupyter/notebook/pull/6349) ([@blink1073](https://github.com/blink1073)) +- Update to TypeScript 4.6 [#6345](https://github.com/jupyter/notebook/pull/6345) ([@jtpio](https://github.com/jtpio)) +- \[pre-commit.ci\] pre-commit autoupdate [#6343](https://github.com/jupyter/notebook/pull/6343) ([@pre-commit-ci](https://github.com/pre-commit-ci)) +- Add pytest and handle warnings [#6338](https://github.com/jupyter/notebook/pull/6338) ([@blink1073](https://github.com/blink1073)) +- Add flake8 and git-blame-ignore-revs [#6337](https://github.com/jupyter/notebook/pull/6337) ([@blink1073](https://github.com/blink1073)) +- Run Autoformatters [#6335](https://github.com/jupyter/notebook/pull/6335) ([@blink1073](https://github.com/blink1073)) +- Bump minimist from 1.2.5 to 1.2.6 [#6334](https://github.com/jupyter/notebook/pull/6334) ([@dependabot](https://github.com/dependabot)) +- Bump minimist from 1.2.5 to 1.2.6 in /ui-tests [#6333](https://github.com/jupyter/notebook/pull/6333) ([@dependabot](https://github.com/dependabot)) +- Bump ansi-regex from 3.0.0 to 3.0.1 in /ui-tests [#6332](https://github.com/jupyter/notebook/pull/6332) ([@dependabot](https://github.com/dependabot)) +- Adopt pre-commit [#6331](https://github.com/jupyter/notebook/pull/6331) ([@blink1073](https://github.com/blink1073)) + +### Documentation improvements + +- Link to v6 plan in the README [#6375](https://github.com/jupyter/notebook/pull/6375) ([@echarles](https://github.com/echarles)) +- Copy edits in config, edits bug report template [#6364](https://github.com/jupyter/notebook/pull/6364) ([@JasonWeill](https://github.com/JasonWeill)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-03-21&to=2022-04-27&type=c)) + +[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2022-03-21..2022-04-27&type=Issues) | [@bollwyvl](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abollwyvl+updated%3A2022-03-21..2022-04-27&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2022-03-21..2022-04-27&type=Issues) | [@echarles](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aecharles+updated%3A2022-03-21..2022-04-27&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2022-03-21..2022-04-27&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2022-03-21..2022-04-27&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AJasonWeill+updated%3A2022-03-21..2022-04-27&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2022-03-21..2022-04-27&type=Issues) | [@tlinhart](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Atlinhart+updated%3A2022-03-21..2022-04-27&type=Issues) + +## 7.0.0a2 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a1...9be03f5f27232d50b16dbbaa50a222260166694c)) + +### Enhancements made + +- Add support for opening a document with a different factory [#6315](https://github.com/jupyter/notebook/pull/6315) ([@jtpio](https://github.com/jtpio)) +- Minor copy edit in README [#6313](https://github.com/jupyter/notebook/pull/6313) ([@JasonWeill](https://github.com/JasonWeill)) + +### Bugs fixed + +- Fix rendering of markdown [#6318](https://github.com/jupyter/notebook/pull/6318) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Update to JupyterLab 4.0.0a22 [#6314](https://github.com/jupyter/notebook/pull/6314) ([@jtpio](https://github.com/jtpio)) + +### Documentation improvements + +- docs: fix spelling [#6317](https://github.com/jupyter/notebook/pull/6317) ([@dijonkitchen](https://github.com/dijonkitchen)) +- Minor copy edit in README [#6313](https://github.com/jupyter/notebook/pull/6313) ([@JasonWeill](https://github.com/JasonWeill)) +- Update example notebook on Binder [#6306](https://github.com/jupyter/notebook/pull/6306) ([@jtpio](https://github.com/jtpio)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-03-09&to=2022-03-21&type=c)) + +[@dijonkitchen](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adijonkitchen+updated%3A2022-03-09..2022-03-21&type=Issues) | [@fcollonval](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Afcollonval+updated%3A2022-03-09..2022-03-21&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2022-03-09..2022-03-21&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2022-03-09..2022-03-21&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AJasonWeill+updated%3A2022-03-09..2022-03-21&type=Issues) + +## 7.0.0a1 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v6.4.8...22fe46f3e806aa346625f6ef2f2a024d030a068d)) + +### Enhancements made + +- Notebook v7 scaffolding [#6294](https://github.com/jupyter/notebook/pull/6294) ([@jtpio](https://github.com/jtpio)) + +### Maintenance and upkeep improvements + +- Clean up CI [#6304](https://github.com/jupyter/notebook/pull/6304) ([@blink1073](https://github.com/blink1073)) +- Remove the custom run keyboard shortcut [#6303](https://github.com/jupyter/notebook/pull/6303) ([@jtpio](https://github.com/jtpio)) +- Bump nanoid from 3.1.30 to 3.3.1 in /ui-tests [#6302](https://github.com/jupyter/notebook/pull/6302) ([@dependabot](https://github.com/dependabot)) +- Bump simple-get from 3.1.0 to 3.1.1 in /ui-tests [#6301](https://github.com/jupyter/notebook/pull/6301) ([@dependabot](https://github.com/dependabot)) +- Bump url-parse from 1.5.4 to 1.5.10 in /ui-tests [#6300](https://github.com/jupyter/notebook/pull/6300) ([@dependabot](https://github.com/dependabot)) +- Bump node-fetch from 2.6.6 to 2.6.7 in /ui-tests [#6299](https://github.com/jupyter/notebook/pull/6299) ([@dependabot](https://github.com/dependabot)) +- Bump follow-redirects from 1.14.5 to 1.14.9 in /ui-tests [#6298](https://github.com/jupyter/notebook/pull/6298) ([@dependabot](https://github.com/dependabot)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-01-25&to=2022-03-09&type=c)) + +[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2022-01-25..2022-03-09&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2022-01-25..2022-03-09&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2022-01-25..2022-03-09&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2022-01-25..2022-03-09&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2022-01-25..2022-03-09&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AZsailer+updated%3A2022-01-25..2022-03-09&type=Issues) + +## 6.4.8 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v6.4.7...479902d83a691253e0cff8439a33577e82408317)) + +### Bugs fixed + +- Fix to remove potential memory leak on Jupyter Notebooks ZMQChannelHandler code [#6251](https://github.com/jupyter/notebook/pull/6251) ([@Vishwajeet0510](https://github.com/Vishwajeet0510)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-01-12&to=2022-01-25&type=c)) + +[@Vishwajeet0510](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AVishwajeet0510+updated%3A2022-01-12..2022-01-25&type=Issues) + +## 6.4.7 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v6.4.6...b77b5e38b8fa1a20150d7fa4d735dbf1c4f00418)) + +### Bugs fixed + +- Fix Chinese punctuation [#6268](https://github.com/jupyter/notebook/pull/6268) ([@LiHua-Official](https://github.com/LiHua-Official)) +- Add date field to kernel message header [#6265](https://github.com/jupyter/notebook/pull/6265) ([@kevin-bates](https://github.com/kevin-bates)) +- Fix deprecation warning [#6253](https://github.com/jupyter/notebook/pull/6253) ([@tornaria](https://github.com/tornaria)) + +### Maintenance and upkeep improvements + +- Enforce labels on PRs [#6235](https://github.com/jupyter/notebook/pull/6235) ([@blink1073](https://github.com/blink1073)) +- Fix: CI error for python 3.6 & macOS [#6215](https://github.com/jupyter/notebook/pull/6215) ([@penguinolog](https://github.com/penguinolog)) + +### Other merged PRs + +- handle KeyError when get session [#6245](https://github.com/jupyter/notebook/pull/6245) ([@ccw630](https://github.com/ccw630)) +- Updated doc for passwd [#6209](https://github.com/jupyter/notebook/pull/6209) ([@antoinecarme](https://github.com/antoinecarme)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2021-11-16&to=2022-01-12&type=c)) + +[@antoinecarme](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aantoinecarme+updated%3A2021-11-16..2022-01-12&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2021-11-16..2022-01-12&type=Issues) | [@ccw630](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Accw630+updated%3A2021-11-16..2022-01-12&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2021-11-16..2022-01-12&type=Issues) | [@LiHua-Official](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ALiHua-Official+updated%3A2021-11-16..2022-01-12&type=Issues) | [@penguinolog](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apenguinolog+updated%3A2021-11-16..2022-01-12&type=Issues) | [@tornaria](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Atornaria+updated%3A2021-11-16..2022-01-12&type=Issues) + +## 6.4.6 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v6.4.5...160c27d3c23dafe8b42240571db21b0d5cbae2fe)) + +### Bugs fixed + +- Fix `asyncio` error when opening notebooks [#6221](https://github.com/jupyter/notebook/pull/6221) ([@dleen](https://github.com/dleen)) +- Change to use a universal Chinese translation on certain words [#6218](https://github.com/jupyter/notebook/pull/6218) ([@jackexu](https://github.com/jackexu)) +- Fix Chinese translation typo [#6211](https://github.com/jupyter/notebook/pull/6211) ([@maliubiao](https://github.com/maliubiao) +- Fix `send2trash` tests failing on Windows [#6127](https://github.com/jupyter/notebook/pull/6127) ([@dolfinus](https://github.com/dolfinus)) + +### Maintenance and upkeep improvements + +- TST: don't look in user site for serverextensions [#6233](https://github.com/jupyter/notebook/pull/6233) ([@bnavigator](https://github.com/bnavigator)) +- Enable terminal tests as `pywinpty` is ported for python 3.9 [#6228](https://github.com/jupyter/notebook/pull/6228) (`@nsait-linaro`) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2021-10-19&to=2021-11-16&type=c)) + +[@bnavigator](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abnavigator+updated%3A2021-10-19..2021-11-16&type=Issues) | [@dleen](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adleen+updated%3A2021-10-19..2021-11-16&type=Issues) | [@dolfinus](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adolfinus+updated%3A2021-10-19..2021-11-16&type=Issues) | [@jackexu](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajackexu+updated%3A2021-10-19..2021-11-16&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2021-10-19..2021-11-16&type=Issues) | [@maliubiao](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Amaliubiao+updated%3A2021-10-19..2021-11-16&type=Issues) | `@nsait-linaro` | [@takluyver](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Atakluyver+updated%3A2021-10-19..2021-11-16&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AZsailer+updated%3A2021-10-19..2021-11-16&type=Issues) + +## 6.4.5 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v6.4.4...ccd9665571107e02a325a738b8baebd6532b2d3d)) + +### Bug fixes + +- Recover from failure to render mimetype [#6181](https://github.com/jupyter/notebook/pull/6181) ([@martinRenou](https://github.com/martinRenou)) + +### Maintenance and upkeep improvements + +- Fix crypto handling [#6197](https://github.com/jupyter/notebook/pull/6197) ([@blink1073](https://github.com/blink1073)) +- Fix `jupyter_client` warning [#6178](https://github.com/jupyter/notebook/pull/6178) ([@martinRenou](https://github.com/martinRenou)) + +### Documentation improvements + +- Fix nbsphinx settings [#6200](https://github.com/jupyter/notebook/pull/6200) ([@mgeier](https://github.com/mgeier)) +- Fully revert the pinning of `nbsphinx` to 0.8.6 [#6201](https://github.com/jupyter/notebook/pull/6201) ([@kevin-bates](https://github.com/kevin-bates)) +- Pin `nbsphinx` to 0.8.6, clean up orphaned resources [#6194](https://github.com/jupyter/notebook/pull/6194) ([@kevin-bates](https://github.com/kevin-bates)) +- Fix typo in docstring [#6188](https://github.com/jupyter/notebook/pull/6188) ([@jgarte](https://github.com/jgarte)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2021-09-03&to=2021-10-19&type=c)) + +[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2021-09-03..2021-10-19&type=Issues) | [@jgarte](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajgarte+updated%3A2021-09-03..2021-10-19&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2021-09-03..2021-10-19&type=Issues) | [@martinRenou](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AmartinRenou+updated%3A2021-09-03..2021-10-19&type=Issues) | [@mgeier](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Amgeier+updated%3A2021-09-03..2021-10-19&type=Issues) + +## 6.4.4 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v6.4.3...c06c340574e1d2207940c5bd1190eb73d82ab945)) + +### Documentation improvements + +- Update Manual Release Instructions [#6152](https://github.com/jupyter/notebook/pull/6152) ([@blink1073](https://github.com/blink1073)) + +### Other merged PRs + +- Use default JupyterLab CSS sanitizer options for Markdown [#6160](https://github.com/jupyter/notebook/pull/6160) ([@krassowski](https://github.com/krassowski)) +- Fix syntax highlight [#6128](https://github.com/jupyter/notebook/pull/6128) ([@massongit](https://github.com/massongit)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2021-08-11&to=2021-09-03&type=c)) + +[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2021-08-11..2021-09-03&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2021-08-11..2021-09-03&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2021-08-11..2021-09-03&type=Issues) | [@massongit](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Amassongit+updated%3A2021-08-11..2021-09-03&type=Issues) | [@minrk](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aminrk+updated%3A2021-08-11..2021-09-03&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AZsailer+updated%3A2021-08-11..2021-09-03&type=Issues) + +## 6.4.3 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v6.4.2...c373bd89adaaddffbb71747ebbcfe8a749cae0a8)) + +### Bugs fixed + +- Add @babel/core dependency [#6133](https://github.com/jupyter/notebook/pull/6133) ([@afshin](https://github.com/afshin)) +- Switch webpack to production mode [#6131](https://github.com/jupyter/notebook/pull/6131) ([@afshin](https://github.com/afshin)) + +### Maintenance and upkeep improvements + +- Clean up link checking [#6130](https://github.com/jupyter/notebook/pull/6130) ([@blink1073](https://github.com/blink1073)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2021-08-06&to=2021-08-10&type=c)) + +[@afshin](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aafshin+updated%3A2021-08-06..2021-08-10&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2021-08-06..2021-08-10&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AZsailer+updated%3A2021-08-06..2021-08-10&type=Issues) + +## 6.4.2 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v6.4.0...999e8322bcd24e0ed62b180c19ec13db3f48165b)) + +### Bugs fixed + +- Add missing file to manifest [#6122](https://github.com/jupyter/notebook/pull/6122) ([@afshin](https://github.com/afshin)) +- Fix issue #3218 [#6108](https://github.com/jupyter/notebook/pull/6108) ([@Nazeeh21](https://github.com/Nazeeh21)) +- Fix version of jupyter-packaging in pyproject.toml [#6101](https://github.com/jupyter/notebook/pull/6101) ([@frenzymadness](https://github.com/frenzymadness)) +- "#element".tooltip is not a function on home page fixed. [#6070](https://github.com/jupyter/notebook/pull/6070) @ilayh123 + +### Maintenance and upkeep improvements + +- Enhancements to the desktop entry [#6099](https://github.com/jupyter/notebook/pull/6099) ([@Amr-Ibra](https://github.com/Amr-Ibra)) +- Add missing spaces to help messages in config file [#6085](https://github.com/jupyter/notebook/pull/6085) ([@saiwing-yeung](https://github.com/saiwing-yeung)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2021-05-17&to=2021-08-06&type=c)) + +[@afshin](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aafshin+updated%3A2021-05-17..2021-08-06&type=Issues) | [@Amr-Ibra](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AAmr-Ibra+updated%3A2021-05-17..2021-08-06&type=Issues) | [@frenzymadness](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Afrenzymadness+updated%3A2021-05-17..2021-08-06&type=Issues) | [@ilayh123](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ailayh123+updated%3A2021-05-17..2021-08-06&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2021-05-17..2021-08-06&type=Issues) | [@Nazeeh21](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ANazeeh21+updated%3A2021-05-17..2021-08-06&type=Issues) | [@saiwing-yeung](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Asaiwing-yeung+updated%3A2021-05-17..2021-08-06&type=Issues) + +## 6.4.0 + +([Full Changelog](https://github.com/jupyter/notebook/compare/6.3.0...80eb286f316838afc76a9a84b06f54e7dccb6c86)) + +### Bugs fixed + +- Fix Handling of Encoded Paths in Save As Dialog [#6030](https://github.com/jupyter/notebook/pull/6030) ([@afshin](https://github.com/afshin)) +- Fix: split_cell doesn't always split cell [#6017](https://github.com/jupyter/notebook/pull/6017) ([@gamestrRUS](https://github.com/gamestrRUS)) +- Correct 'Content-Type' headers [#6026](https://github.com/jupyter/notebook/pull/6026) ([@faucct](https://github.com/faucct)) +- Fix skipped tests & remove deprecation warnings [#6018](https://github.com/jupyter/notebook/pull/6018) ([@befeleme](https://github.com/befeleme)) +- \[Gateway\] Track only this server's kernels [#5980](https://github.com/jupyter/notebook/pull/5980) ([@kevin-bates](https://github.com/kevin-bates)) +- Bind the HTTPServer in start [#6061](https://github.com/jupyter/notebook/pull/6061) + +### Maintenance and upkeep improvements + +- Revert "do not apply asyncio patch for tornado >=6.1" [#6052](https://github.com/jupyter/notebook/pull/6052) ([@minrk](https://github.com/minrk)) +- Use Jupyter Releaser [#6048](https://github.com/jupyter/notebook/pull/6048) ([@afshin](https://github.com/afshin)) +- Add Workflow Permissions for Lock Bot [#6042](https://github.com/jupyter/notebook/pull/6042) ([@jtpio](https://github.com/jtpio)) +- Fixes related to the recent changes in the documentation [#6021](https://github.com/jupyter/notebook/pull/6021) ([@frenzymadness](https://github.com/frenzymadness)) +- Add maths checks in CSS reference test [#6035](https://github.com/jupyter/notebook/pull/6035) ([@stef4k](https://github.com/stef4k)) +- Add Issue Lock and Answered Bots [#6019](https://github.com/jupyter/notebook/pull/6019) ([@afshin](https://github.com/afshin)) + +### Documentation improvements + +- Spelling correction [#6045](https://github.com/jupyter/notebook/pull/6045) ([@wggillen](https://github.com/wggillen)) +- Minor typographical and comment changes [#6025](https://github.com/jupyter/notebook/pull/6025) ([@misterhay](https://github.com/misterhay)) +- Fixes related to the recent changes in the documentation [#6021](https://github.com/jupyter/notebook/pull/6021) ([@frenzymadness](https://github.com/frenzymadness)) +- Fix readthedocs environment [#6020](https://github.com/jupyter/notebook/pull/6020) ([@blink1073](https://github.com/blink1073)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2021-03-22&to=2021-05-12&type=c)) + +[@afshin](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aafshin+updated%3A2021-03-22..2021-05-12&type=Issues) | [@befeleme](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abefeleme+updated%3A2021-03-22..2021-05-12&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2021-03-22..2021-05-12&type=Issues) | [@faucct](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Afaucct+updated%3A2021-03-22..2021-05-12&type=Issues) | [@frenzymadness](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Afrenzymadness+updated%3A2021-03-22..2021-05-12&type=Issues) | [@gamestrRUS](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AgamestrRUS+updated%3A2021-03-22..2021-05-12&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2021-03-22..2021-05-12&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2021-03-22..2021-05-12&type=Issues) | [@minrk](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aminrk+updated%3A2021-03-22..2021-05-12&type=Issues) | [@misterhay](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Amisterhay+updated%3A2021-03-22..2021-05-12&type=Issues) | [@stef4k](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Astef4k+updated%3A2021-03-22..2021-05-12&type=Issues) | [@wggillen](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Awggillen+updated%3A2021-03-22..2021-05-12&type=Issues) + +## 6.3.0 + +### Merged PRs + +- Add square logo and desktop entry files [#6010](https://github.com/jupyter/notebook/pull/6010) ([@befeleme](https://github.com/befeleme)) +- Modernize Changelog [#6008](https://github.com/jupyter/notebook/pull/6008) ([@afshin](https://github.com/afshin)) +- Add missing "import inspect" [#5999](https://github.com/jupyter/notebook/pull/5999) ([@mgeier](https://github.com/mgeier)) +- Add Codecov badge to README [#5989](https://github.com/jupyter/notebook/pull/5989) ([@thomasrockhu](https://github.com/thomasrockhu)) +- Remove configuration for nosetests from setup.cfg [#5986](https://github.com/jupyter/notebook/pull/5986) ([@frenzymadness](https://github.com/frenzymadness)) +- Update security.rst [#5978](https://github.com/jupyter/notebook/pull/5978) ([@dlrice](https://github.com/dlrice)) +- Docs-Translations: Updated Hindi and Chinese Readme.md [#5976](https://github.com/jupyter/notebook/pull/5976) ([@rjn01](https://github.com/rjn01)) +- Allow /metrics by default if auth is off [#5974](https://github.com/jupyter/notebook/pull/5974) ([@blairdrummond](https://github.com/blairdrummond)) +- Skip terminal tests on Windows 3.9+ (temporary) [#5968](https://github.com/jupyter/notebook/pull/5968) ([@kevin-bates](https://github.com/kevin-bates)) +- Update GatewayKernelManager to derive from AsyncMappingKernelManager [#5966](https://github.com/jupyter/notebook/pull/5966) ([@kevin-bates](https://github.com/kevin-bates)) +- Drop use of deprecated pyzmq.ioloop [#5965](https://github.com/jupyter/notebook/pull/5965) ([@kevin-bates](https://github.com/kevin-bates)) +- Drop support for Python 3.5 [#5962](https://github.com/jupyter/notebook/pull/5962) ([@kevin-bates](https://github.com/kevin-bates)) +- Allow jupyter_server-based contents managers in notebook [#5957](https://github.com/jupyter/notebook/pull/5957) ([@afshin](https://github.com/afshin)) +- Russian translation fixes [#5954](https://github.com/jupyter/notebook/pull/5954) ([@insolor](https://github.com/insolor)) +- Increase culling test idle timeout [#5952](https://github.com/jupyter/notebook/pull/5952) ([@kevin-bates](https://github.com/kevin-bates)) +- Re-enable support for answer_yes flag [#5941](https://github.com/jupyter/notebook/pull/5941) ([@afshin](https://github.com/afshin)) +- Replace Travis and Appveyor with Github Actions [#5938](https://github.com/jupyter/notebook/pull/5938) ([@kevin-bates](https://github.com/kevin-bates)) +- DOC: Server extension, extra docs on configuration/authentication. [#5937](https://github.com/jupyter/notebook/pull/5937) ([@Carreau](https://github.com/Carreau)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2021-01-13&to=2021-03-18&type=c)) + +[@abielhammonds](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aabielhammonds+updated%3A2021-01-13..2021-03-18&type=Issues) | [@afshin](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aafshin+updated%3A2021-01-13..2021-03-18&type=Issues) | [@ajharry](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aajharry+updated%3A2021-01-13..2021-03-18&type=Issues) | [@Alokrar](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AAlokrar+updated%3A2021-01-13..2021-03-18&type=Issues) | [@befeleme](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abefeleme+updated%3A2021-01-13..2021-03-18&type=Issues) | [@blairdrummond](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablairdrummond+updated%3A2021-01-13..2021-03-18&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2021-01-13..2021-03-18&type=Issues) | [@bollwyvl](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abollwyvl+updated%3A2021-01-13..2021-03-18&type=Issues) | [@Carreau](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ACarreau+updated%3A2021-01-13..2021-03-18&type=Issues) | [@ChenChenDS](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AChenChenDS+updated%3A2021-01-13..2021-03-18&type=Issues) | [@cosmoscalibur](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Acosmoscalibur+updated%3A2021-01-13..2021-03-18&type=Issues) | [@dlrice](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adlrice+updated%3A2021-01-13..2021-03-18&type=Issues) | [@dwanneruchi](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adwanneruchi+updated%3A2021-01-13..2021-03-18&type=Issues) | [@ElisonSherton](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AElisonSherton+updated%3A2021-01-13..2021-03-18&type=Issues) | [@FazeelUsmani](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AFazeelUsmani+updated%3A2021-01-13..2021-03-18&type=Issues) | [@frenzymadness](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Afrenzymadness+updated%3A2021-01-13..2021-03-18&type=Issues) | [@goerz](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agoerz+updated%3A2021-01-13..2021-03-18&type=Issues) | [@insolor](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ainsolor+updated%3A2021-01-13..2021-03-18&type=Issues) | [@jasongrout](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajasongrout+updated%3A2021-01-13..2021-03-18&type=Issues) | [@JianghuiDu](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AJianghuiDu+updated%3A2021-01-13..2021-03-18&type=Issues) | [@JuzerShakir](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AJuzerShakir+updated%3A2021-01-13..2021-03-18&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2021-01-13..2021-03-18&type=Issues) | [@Khalilsqu](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AKhalilsqu+updated%3A2021-01-13..2021-03-18&type=Issues) | [@meeseeksdev](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ameeseeksdev+updated%3A2021-01-13..2021-03-18&type=Issues) | [@mgeier](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Amgeier+updated%3A2021-01-13..2021-03-18&type=Issues) | [@michaelpedota](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Amichaelpedota+updated%3A2021-01-13..2021-03-18&type=Issues) | [@mjbright](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Amjbright+updated%3A2021-01-13..2021-03-18&type=Issues) | [@MSeal](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AMSeal+updated%3A2021-01-13..2021-03-18&type=Issues) | [@ncoughlin](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ancoughlin+updated%3A2021-01-13..2021-03-18&type=Issues) | [@NTimmons](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ANTimmons+updated%3A2021-01-13..2021-03-18&type=Issues) | [@ProsperousHeart](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AProsperousHeart+updated%3A2021-01-13..2021-03-18&type=Issues) | [@rjn01](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Arjn01+updated%3A2021-01-13..2021-03-18&type=Issues) | [@slw07g](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aslw07g+updated%3A2021-01-13..2021-03-18&type=Issues) | [@stenivan](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Astenivan+updated%3A2021-01-13..2021-03-18&type=Issues) | [@takluyver](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Atakluyver+updated%3A2021-01-13..2021-03-18&type=Issues) | [@thomasrockhu](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Athomasrockhu+updated%3A2021-01-13..2021-03-18&type=Issues) | [@wgilpin](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Awgilpin+updated%3A2021-01-13..2021-03-18&type=Issues) | [@wxtt522](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Awxtt522+updated%3A2021-01-13..2021-03-18&type=Issues) | [@yuvipanda](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ayuvipanda+updated%3A2021-01-13..2021-03-18&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AZsailer+updated%3A2021-01-13..2021-03-18&type=Issues) + +## 6.2.0 + +## Merged PRs + +- Increase minimum tornado version ([5933](https://github.com/jupyter/notebook/pull/5933)) +- Adjust skip decorators to avoid remaining dependency on nose ([5932](https://github.com/jupyter/notebook/pull/5932)) +- Ensure that cell ids persist after save ([5928](https://github.com/jupyter/notebook/pull/5928)) +- Add reconnection to Gateway (form nb2kg) ([5924](https://github.com/jupyter/notebook/pull/5924)) +- Fix some typos ([5917](https://github.com/jupyter/notebook/pull/5917)) +- Handle TrashPermissionError, now that it exist ([5894](https://github.com/jupyter/notebook/pull/5894)) + +Thank you to all the contributors: + +- @kevin-bates +- @mishaschwartz +- @oyvsyo +- @user202729 +- @stefanor + +## 6.1.6 + +## Merged PRs + +- do not require nose for testing ([5826](https://github.com/jupyter/notebook/pull/5826)) +- \[docs\] Update Chinese and Hindi readme.md ([5823](https://github.com/jupyter/notebook/pull/5823)) +- Add support for creating terminals via GET ([5813](https://github.com/jupyter/notebook/pull/5813)) +- Made doc translations in Hindi and Chinese ([5787](https://github.com/jupyter/notebook/pull/5787)) + +Thank you to all the contributors: + +- @pgajdos +- @rjn01 +- @kevin-bates +- @virejdasani + +## 6.1.5 + +6.1.5 is a security release, fixing one vulnerability: + +- Fix open redirect vulnerability GHSA-c7vm-f5p4-8fqh (CVE to be assigned) + +## 6.1.4 + +- Fix broken links to jupyter documentation ([5686](https://github.com/jupyter/notebook/pull/5686)) +- Add additional entries to troubleshooting section ([5695](https://github.com/jupyter/notebook/pull/5695)) +- Revert change in page alignment ([5703](https://github.com/jupyter/notebook/pull/5703)) +- Bug fix: remove double encoding in download files ([5720](https://github.com/jupyter/notebook/pull/5720)) +- Fix typo for Check in zh_CN ([5730](https://github.com/jupyter/notebook/pull/5730)) +- Require a file name in the "Save As" dialog ([5733](https://github.com/jupyter/notebook/pull/5733)) + +Thank you to all the contributors: + +- bdbai +- Jaipreet Singh +- Kevin Bates +- Pavel Panchekha +- Zach Sailer + +## 6.1.3 + +- Title new buttons with label if action undefined ([5676](https://github.com/jupyter/notebook/pull/5676)) + +Thank you to all the contributors: + +- Kyle Kelley + +## 6.1.2 + +- Fix russian message format for delete/duplicate actions ([5662](https://github.com/jupyter/notebook/pull/5662)) +- Remove unnecessary import of bind_unix_socket ([5666](https://github.com/jupyter/notebook/pull/5666)) +- Tooltip style scope fix ([5672](https://github.com/jupyter/notebook/pull/5672)) + +Thank you to all the contributors: + +- Dmitry Akatov +- Kevin Bates +- Magda Stenius + +## 6.1.1 + +- Prevent inclusion of requests_unixsocket on Windows ([5650](https://github.com/jupyter/notebook/pull/5650)) + +Thank you to all the contributors: + +- Kevin Bates + +## 6.1.0 + +Please note that this repository is currently maintained by a skeleton +crew of maintainers from the Jupyter community. For our approach moving +forward, please see this +[notice](https://github.com/jupyter/notebook#notice) from the README. +Thank you. + +Here is an enumeration of changes made since the last release and +included in 6.1.0. + +- Remove deprecated encoding parameter for Python 3.9 compatibility. ([5174](https://github.com/jupyter/notebook/pull/5174)) +- Add support for async kernel management ([4479](https://github.com/jupyter/notebook/pull/4479)) +- Fix typo in password_required help message ([5320](https://github.com/jupyter/notebook/pull/5320)) +- Gateway only: Ensure launch and request timeouts are in sync ([5317](https://github.com/jupyter/notebook/pull/5317)) +- Update Markdown Cells example to HTML5 video tag ([5411](https://github.com/jupyter/notebook/pull/5411)) +- Integrated LoginWidget into edit to enable users to logout from the t... ([5406](https://github.com/jupyter/notebook/pull/5406)) +- Update message about minimum Tornado version ([5222](https://github.com/jupyter/notebook/pull/5222)) +- Logged notebook type ([5425](https://github.com/jupyter/notebook/pull/5425)) +- Added nl language ([5354](https://github.com/jupyter/notebook/pull/5354)) +- Add UNIX socket support to notebook server. ([4835](https://github.com/jupyter/notebook/pull/4835)) +- Update CodeMirror dependency ([5198](https://github.com/jupyter/notebook/pull/5198)) +- Tree added download multiple files ([5351](https://github.com/jupyter/notebook/pull/5351)) +- Toolbar buttons tooltip: show help instead of label ([5107](https://github.com/jupyter/notebook/pull/5107)) +- Remove unnecessary import of requests_unixsocket ([5451](https://github.com/jupyter/notebook/pull/5451)) +- Add ability to cull terminals and track last activity ([5372](https://github.com/jupyter/notebook/pull/5372)) +- Code refactoring notebook.js ([5352](https://github.com/jupyter/notebook/pull/5352)) +- Install terminado for docs build ([5462](https://github.com/jupyter/notebook/pull/5462)) +- Convert notifications JS test to selenium ([5455](https://github.com/jupyter/notebook/pull/5455)) +- Add cell attachments to markdown example ([5412](https://github.com/jupyter/notebook/pull/5412)) +- Add Japanese document ([5231](https://github.com/jupyter/notebook/pull/5231)) +- Migrate Move multiselection test to selenium ([5158](https://github.com/jupyter/notebook/pull/5158)) +- Use `cmdtrl-enter` to run a cell ([5120](https://github.com/jupyter/notebook/pull/5120)) +- Fix broken "Raw cell MIME type" dialog ([5385](https://github.com/jupyter/notebook/pull/5385)) +- Make a notebook writable after successful save-as ([5296](https://github.com/jupyter/notebook/pull/5296)) +- Add actual watch script ([4738](https://github.com/jupyter/notebook/pull/4738)) +- Added `--autoreload` flag to `NotebookApp` ([4795](https://github.com/jupyter/notebook/pull/4795)) +- Enable check_origin on gateway websocket communication ([5471](https://github.com/jupyter/notebook/pull/5471)) +- Restore detection of missing terminado package ([5465](https://github.com/jupyter/notebook/pull/5465)) +- Culling: ensure `last_activity` attr exists before use ([5355](https://github.com/jupyter/notebook/pull/5355)) +- Added functionality to allow filter kernels by Jupyter Enterprise Gat... ([5484](https://github.com/jupyter/notebook/pull/5484)) +- 'Play' icon for run-cell toolbar button ([2922](https://github.com/jupyter/notebook/pull/2922)) +- Bump minimum version of jQuery to 3.5.0 ([5491](https://github.com/jupyter/notebook/pull/5491)) +- Remove old JS markdown tests, add a new one in selenium ([5497](https://github.com/jupyter/notebook/pull/5497)) +- Add support for more RTL languages ([5036](https://github.com/jupyter/notebook/pull/5036)) +- Make markdown cells stay RTL in edit mode ([5037](https://github.com/jupyter/notebook/pull/5037)) +- Unforce RTL output display ([5039](https://github.com/jupyter/notebook/pull/5039)) +- Fixed multicursor backspacing ([4880](https://github.com/jupyter/notebook/pull/4880)) +- Implemented Split Cell for multicursor ([4824](https://github.com/jupyter/notebook/pull/4824)) +- Alignment issue \[FIXED\] ([3173](https://github.com/jupyter/notebook/pull/3173)) +- MathJax: Support for `\gdef` ([4407](https://github.com/jupyter/notebook/pull/4407)) +- Another (Minor) Duplicate Code Reduction ([5316](https://github.com/jupyter/notebook/pull/5316)) +- Update readme regarding maintenance ([5500](https://github.com/jupyter/notebook/pull/5500)) +- Document contents chunks ([5508](https://github.com/jupyter/notebook/pull/5508)) +- Backspace deletes empty line ([5516](https://github.com/jupyter/notebook/pull/5516)) +- The dropdown submenu at notebook page is not keyboard accessible ([4732](https://github.com/jupyter/notebook/pull/4732)) +- Tooltips visible through keyboard navigation for specified buttons ([4729](https://github.com/jupyter/notebook/pull/4729)) +- Fix for recursive symlink ([4670](https://github.com/jupyter/notebook/pull/4670)) +- Fix for the terminal shutdown issue ([4180](https://github.com/jupyter/notebook/pull/4180)) +- Add japanese translation files ([4490](https://github.com/jupyter/notebook/pull/4490)) +- Workaround for socket permission errors on Cygwin ([4584](https://github.com/jupyter/notebook/pull/4584)) +- Implement optional markdown header and footer files ([4043](https://github.com/jupyter/notebook/pull/4043)) +- Remove double link when using `custom_display_url` ([5544](https://github.com/jupyter/notebook/pull/5544)) +- Respect `cell.is_editable` during find-and-replace ([5545](https://github.com/jupyter/notebook/pull/5545)) +- Fix exception causes all over the codebase ([5556](https://github.com/jupyter/notebook/pull/5556) +- Improve login shell heuristics ([5588](https://github.com/jupyter/notebook/pull/5588)) +- Added support for `JUPYTER_TOKEN_FILE` ([5587](https://github.com/jupyter/notebook/pull/5587)) +- Kill notebook itself when server cull idle kernel ([5593](https://github.com/jupyter/notebook/pull/5593)) +- Implement password hashing with bcrypt ([3793](https://github.com/jupyter/notebook/pull/3793)) +- Fix broken links ([5600](https://github.com/jupyter/notebook/pull/5600)) +- Russian internationalization support ([5571](https://github.com/jupyter/notebook/pull/5571)) +- Add a metadata tag to override notebook direction (ltr/rtl) ([5052](https://github.com/jupyter/notebook/pull/5052)) +- Paste two images from clipboard in markdown cell ([5598](https://github.com/jupyter/notebook/pull/5598)) +- Add keyboard shortcuts to menu dropdowns ([5525](https://github.com/jupyter/notebook/pull/5525)) +- Update codemirror to `5.56.0+components1` ([5637](https://github.com/jupyter/notebook/pull/5637)) + +Thank you to all the contributors: + +- Aaron Myatt +- Adam Blake +- Afshin Taylor Darian +- Aman Bansal +- Ben Thayer +- berendjan +- Bruno P. Kinoshita +- bzinberg +- Christophe Cadilhac +- Daiki Katsuragawa +- David Lukes +- Dmitriy Q +- dmpe +- dylanzjy +- dSchurch +- E. M. Bray +- ErwinRussel +- Felix M枚nckemeyer +- Grant Nestor +- Jarrad Whitaker +- Jesus Panales Castillo +- Joshua Zeltser +- Karthikeyan Singaravelan +- Kenichi Ito +- Kevin Bates +- Koki Nishihara +- Kris Wilson +- Kyle Kelley +- Laura Merlo +- levinxo +- Luciano Resende +- Luis Cabezon Manchado +- Madhusudhan Srinivasa +- Matthias Geier +- mattn +- Max Klein +- Min RK +- Mingxuan Lin +- Mohammad Mostafa Farzan +- Niko Felger +- Norah Abanumay +- Onno Broekmans +- PierreMB +- pinarkavak +- Ram Rachum +- Reece Hart +- Remi Rampin +- Rohit Sanjay +- Shane Canon +- Simon Li +- Steinar Sturlaugsson +- Steven Silvester +- taohan16 +- Thew Dhanat +- Thomas Kluyver +- Toon Baeyens +- Vidar Tonaas Fauske +- Zachary Sailer + +## 6.0.3 + +- Dependency updates to fix startup issues on Windows platform +- Add support for nbconvert 6.x +- Creation of recent tab + +Thanks for all the contributors: + +- Luciano Resende +- Kevin Bates +- ahangsleben +- Zachary Sailer +- Pallavi Bharadwaj +- Thomas Kluyver +- Min RK +- forest0 +- Bibo Hao +- Michal Charemza +- Sergey Shevelev +- Shuichiro MAKIGAKI +- krinsman +- TPartida +- Landen McDonald +- Tres DuBiel + +## 6.0.2 + +- Update JQuery dependency to version 3.4.1 to fix security vulnerability (CVE-2019-11358) +- Update CodeMirror to version 5.48.4 to fix Python formatting issues +- Continue removing obsolete Python 2.x code/dependencies +- Multiple documentation updates + +Thanks for all the contributors: + +- David Robles +- Jason Grout +- Kerwin Sun +- Kevin Bates +- Kyle Kelley +- Luciano Resende +- Marcus D Sherman +- Sasaki Takeru +- Tom Jarosz +- Vidar Tonaas Fauske +- Wes Turner +- Zachary Sailer + +## 6.0.1 + +- Attempt to re-establish websocket connection to Gateway ([4777](https://github.com/jupyter/notebook/pull/4777)) +- Add missing react-dom js to package data ([4772](https://github.com/jupyter/notebook/pull/4772)) + +Thanks for all the contributors: + +- Eunsoo Park +- Min RK + +## 6.0 + +This is the first major release of the Jupyter Notebook since version +5.0 (March 2017). + +We encourage users to start trying JupyterLab, which has just announced +it's 1.0 release in preparation for a future transition. + +- Remove Python 2.x support in favor of Python 3.5 and higher. +- Multiple accessibility enhancements and bug-fixes. +- Multiple translation enhancements and bug-fixes. +- Remove deprecated ANSI CSS styles. +- Native support to forward requests to Jupyter Gateway(s) (Embedded + NB2KG). +- Use JavaScript to redirect users to notebook homepage. +- Enhanced SSL/TLS security by using PROTOCOL_TLS which selects the + highest ssl/tls protocol version available that both the client and + server support. When PROTOCOL_TLS is not available use + PROTOCOL_SSLv23. +- Add `?no_track_activity=1` argument to allow API requests. to not be + registered as activity (e.g. API calls by external activity + monitors). +- Kernels shutting down due to an idle timeout is no longer considered + an activity-updating event. +- Further improve compatibility with tornado 6 with improved checks + for when websockets are closed. +- Launch the browser with a local file which redirects to the server + address including the authentication token. This prevents another + logged-in user from stealing the token from command line arguments + and authenticating to the server. The single-use token previously + used to mitigate this has been removed. Thanks to Dr. Owain Kenway + for suggesting the local file approach. +- Respect nbconvert entrypoints as sources for exporters +- Update to CodeMirror to 5.37, which includes f-string syntax for + Python 3.6. +- Update jquery-ui to 1.12 +- Execute cells by clicking icon in input prompt. +- New "Save as" menu option. +- When serving on a loopback interface, protect against DNS rebinding + by checking the `Host` header from the browser. This check can be + disabled if necessary by setting `NotebookApp.allow_remote_access`. (Disabled by default while we work out some Mac issues in + [3754](https://github.com/jupyter/notebook/issues/3754)). +- Add kernel_info_timeout traitlet to enable restarting slow kernels. +- Add `custom_display_host` config option to override displayed URL. +- Add /metrics endpoint for Prometheus Metrics. +- Optimize large file uploads. +- Allow access control headers to be overridden in + jupyter_notebook_config.py to support greater CORS and proxy + configuration flexibility. +- Add support for terminals on windows. +- Add a "restart and run all" button to the toolbar. +- Frontend/extension-config: allow default json files in a .d + directory. +- Allow setting token via jupyter_token env. +- Cull idle kernels using `--MappingKernelManager.cull_idle_timeout`. +- Allow read-only notebooks to be trusted. +- Convert JS tests to Selenium. + +Security Fixes included in previous minor releases of Jupyter Notebook +and also included in version 6.0. + +- Fix Open Redirect vulnerability (CVE-2019-10255) where certain + malicious URLs could redirect from the Jupyter login page to a + malicious site after a successful login. +- Contains a security fix for a cross-site inclusion (XSSI) + vulnerability (CVE-2019--9644), where files at a known URL could be + included in a page from an unauthorized website if the user is + logged into a Jupyter server. The fix involves setting the + `X-Content-Type-Options: nosniff` header, and applying CSRF checks + previously on all non-GET API requests to GET requests to API + endpoints and the /files/ endpoint. +- Check Host header to more securely protect localhost deployments + from DNS rebinding. This is a pre-emptive measure, not fixing a + known vulnerability. Use `.NotebookApp.allow_remote_access` and + `.NotebookApp.local_hostnames` to configure access. +- Upgrade bootstrap to 3.4, fixing an XSS vulnerability, which has + been assigned + [CVE-2018-14041](https://nvd.nist.gov/vuln/detail/CVE-2018-14041). +- Contains a security fix preventing malicious directory names from + being able to execute javascript. +- Contains a security fix preventing nbconvert endpoints from + executing javascript with access to the server API. CVE request + pending. + +Thanks for all the contributors: + +- AAYUSH SINHA +- Aaron Hall, MBA +- Abhinav Sagar +- Adam Rule +- Adeel Ahmad +- Alex Rothberg +- Amy Skerry-Ryan +- Anastasis Germanidis +- Andr茅s S谩nchez +- Arjun Radhakrishna +- Arovit Narula +- Benda Xu +- Bj枚rn Gr眉ning +- Brian E. Granger +- Carol Willing +- Celina Kilcrease +- Chris Holdgraf +- Chris Miller +- Ciaran Langton +- Damian Avila +- Dana Lee +- Daniel Farrell +- Daniel Nicolai +- Dar铆o Here帽煤 +- Dave Aitken +- Dave Foster +- Dave Hirschfeld +- Denis Ledoux +- Dmitry Mikushin +- Dominic Kuang +- Douglas Hanley +- Elliott Sales de Andrade +- Emilio Talamante Lugo +- Eric Perry +- Ethan T. Hendrix +- Evan Van Dam +- Francesco Franchina +- Fr茅d茅ric Chapoton +- F茅lix-Antoine Fortin +- Gabriel +- Gabriel N眉tzi +- Gabriel Ruiz +- Gestalt LUR +- Grant Nestor +- Gustavo Efeiche +- Harsh Vardhan +- Heng GAO +- Hisham Elsheshtawy +- Hong Xu +- Ian Rose +- Ivan Ogasawara +- J Forde +- Jason Grout +- Jessica B. Hamrick +- Jiaqi Liu +- John Emmons +- Josh Barnes +- Karthik Balakrishnan +- Kevin Bates +- Kirit Thadaka +- Kristian Gregorius Hustad +- Kyle Kelley +- Leo Gallucci +- Lilian Besson +- Lucas Seiki Oshiro +- Luciano Resende +- Luis Angel Rodriguez Guerrero +- M Pacer +- Maarten Breddels +- Mac Knight +- Madicken Munk +- Maiti煤 脫 Ciar谩in +- Marc Udoff +- Mathis HAMMEL +- Mathis Rosenhauer +- Matthias Bussonnier +- Matthias Geier +- Max Vovshin +- Maxime Mouchet +- Michael Chirico +- Michael Droettboom +- Michael Heilman +- Michael Scott Cuthbert +- Michal Charemza +- Mike Boyle +- Milos Miljkovic +- Min RK +- Miro Hron膷ok +- Nicholas Bollweg +- Nitesh Sawant +- Ondrej Jariabka +- Park Hae Jin +- Paul Ivanov +- Paul Masson +- Peter Parente +- Pierre Tholoniat +- Remco Verhoef +- Roland Weber +- Roman Kornev +- Rosa Swaby +- Roy Hyunjin Han +- Sally +- Sam Lau +- Samar Sultan +- Shiti Saxena +- Simon Biggs +- Spencer Park +- Stephen Ward +- Steve (Gadget) Barnes +- Steven Silvester +- Surya Prakash Susarla +- Syed Shah +- Sylvain Corlay +- Thomas Aarholt +- Thomas Kluyver +- Tim +- Tim Head +- Tim Klever +- Tim Metzler +- Todd +- Tom Jorquera +- Tyler Makaro +- Vaibhav Sagar +- Victor +- Vidar Tonaas Fauske +- Vu Minh Tam +- V铆t Tu膷ek +- Will Costello +- Will Starms +- William Hosford +- Xiaohan Li +- Yuvi Panda +- ashley teoh +- nullptr + +## 5.7.8 + +- Fix regression in restarting kernels in 5.7.5. The restart handler + would return before restart was completed. +- Further improve compatibility with tornado 6 with improved checks + for when websockets are closed. +- Fix regression in 5.7.6 on Windows where .js files could have the + wrong mime-type. +- Fix Open Redirect vulnerability (CVE-2019-10255) where certain + malicious URLs could redirect from the Jupyter login page to a + malicious site after a successful login. 5.7.7 contained only a + partial fix for this issue. + +## 5.7.6 + +5.7.6 contains a security fix for a cross-site inclusion (XSSI) +vulnerability (CVE-2019--9644), where files at a known URL could be +included in a page from an unauthorized website if the user is logged +into a Jupyter server. The fix involves setting the +`X-Content-Type-Options: nosniff` header, and applying CSRF checks +previously on all non-GET API requests to GET requests to API endpoints +and the /files/ endpoint. + +The attacking page is able to access some contents of files when using +Internet Explorer through script errors, but this has not been +demonstrated with other browsers. + +## 5.7.5 + +- Fix compatibility with tornado 6 ([4392](https://github.com/jupyter/notebook/pull/4392), [4449](https://github.com/jupyter/notebook/pull/4449)). +- Fix opening integer filedescriptor during startup on Python 2 ([4349](https://github.com/jupyter/notebook/pull/4349)) +- Fix compatibility with asynchronous + \[KernelManager.restart_kernel\]{.title-ref} methods ([4412](https://github.com/jupyter/notebook/pull/4412)) + +## 5.7.4 + +5.7.4 fixes a bug introduced in 5.7.3, in which the +`list_running_servers()` function attempts to parse HTML files as JSON, +and consequently crashes ([4284](https://github.com/jupyter/notebook/pull/4284)). + +## 5.7.3 + +5.7.3 contains one security improvement and one security fix: + +- Launch the browser with a local file which redirects to the server + address including the authentication token ([4260](https://github.com/jupyter/notebook/pull/4260)). This prevents another logged-in user from stealing + the token from command line arguments and authenticating to the + server. The single-use token previously used to mitigate this has + been removed. Thanks to Dr. Owain Kenway for suggesting the local + file approach. +- Upgrade bootstrap to 3.4, fixing an XSS vulnerability, which has + been assigned + [CVE-2018-14041](https://nvd.nist.gov/vuln/detail/CVE-2018-14041) ([4271](https://github.com/jupyter/notebook/pull/4271)). + +## 5.7.2 + +5.7.2 contains a security fix preventing malicious directory names from +being able to execute javascript. CVE request pending. + +## 5.7.1 + +5.7.1 contains a security fix preventing nbconvert endpoints from +executing javascript with access to the server API. CVE request pending. + +## 5.7.0 + +New features: + +- Update to CodeMirror to 5.37, which includes f-string syntax for + Python 3.6 ([3816](https://github.com/jupyter/notebook/pull/3816)) +- Update jquery-ui to 1.12 ([3836](https://github.com/jupyter/notebook/pull/3836)) +- Check Host header to more securely protect localhost deployments + from DNS rebinding. This is a pre-emptive measure, not fixing a + known vulnerability ([3766](https://github.com/jupyter/notebook/pull/3766)). Use + `.NotebookApp.allow_remote_access` and + `.NotebookApp.local_hostnames` to configure access. +- Allow access-control-allow-headers to be overridden ([3886](https://github.com/jupyter/notebook/pull/3886)) +- Allow configuring max_body_size and max_buffer_size ([3829](https://github.com/jupyter/notebook/pull/3829)) +- Allow configuring get_secure_cookie keyword-args ([3778](https://github.com/jupyter/notebook/pull/3778)) +- Respect nbconvert entrypoints as sources for exporters ([3879](https://github.com/jupyter/notebook/pull/3879)) +- Include translation sources in source distributions ([3925](https://github.com/jupyter/notebook/pull/3925), [3931](https://github.com/jupyter/notebook/pull/3931)) +- Various improvements to documentation ([3799](https://github.com/jupyter/notebook/pull/3799), [3800](https://github.com/jupyter/notebook/pull/3800), + [3806](https://github.com/jupyter/notebook/pull/3806), [3883](https://github.com/jupyter/notebook/pull/3883), [3908](https://github.com/jupyter/notebook/pull/3908)) + +Fixing problems: + +- Fix breadcrumb link when running with a base url ([3905](https://github.com/jupyter/notebook/pull/3905)) +- Fix possible type error when closing activity stream ([3907](https://github.com/jupyter/notebook/pull/3907)) +- Disable metadata editing for non-editable cells ([3744](https://github.com/jupyter/notebook/pull/3744)) +- Fix some styling and alignment of prompts caused by regressions in + 5.6.0. +- Enter causing page reload in shortcuts editor ([3871](https://github.com/jupyter/notebook/pull/3871)) +- Fix uploading to the same file twice ([3712](https://github.com/jupyter/notebook/pull/3712)) + +See the 5.7 milestone on GitHub for a complete list of [pull +requests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A5.7) +involved in this release. + +Thanks to the following contributors: + +- Aaron Hall +- Benjamin Ragan-Kelley +- Bill Major +- bxy007 +- Dave Aitken +- Denis Ledoux +- F茅lix-Antoine Fortin +- Gabriel +- Grant Nestor +- Kevin Bates +- Kristian Gregorius Hustad +- M Pacer +- Madicken Munk +- Maitiu O Ciarain +- Matthias Bussonnier +- Michael Boyle +- Michael Chirico +- Mokkapati, Praneet(ES) +- Peter Parente +- Sally Wilsak +- Steven Silvester +- Thomas Kluyver +- Walter Martin + +## 5.6.0 + +New features: + +- Execute cells by clicking icon in input prompt ([3535](https://github.com/jupyter/notebook/pull/3535), [3687](https://github.com/jupyter/notebook/pull/3687)) +- New "Save as" menu option ([3289](https://github.com/jupyter/notebook/pull/3289)) +- When serving on a loopback interface, protect against DNS rebinding + by checking the `Host` header from the browser ([3714](https://github.com/jupyter/notebook/pull/3714)). This check can be + disabled if necessary by setting `NotebookApp.allow_remote_access`. (Disabled by default while we work out some Mac issues in + [3754](https://github.com/jupyter/notebook/issues/3754)). +- Add kernel_info_timeout traitlet to enable restarting slow kernels ([3665](https://github.com/jupyter/notebook/pull/3665)) +- Add `custom_display_host` config option to override displayed URL ([3668](https://github.com/jupyter/notebook/pull/3668)) +- Add /metrics endpoint for Prometheus Metrics ([3490](https://github.com/jupyter/notebook/pull/3490)) +- Update to MathJax 2.7.4 ([3751](https://github.com/jupyter/notebook/pull/3751)) +- Update to jQuery 3.3 ([3655](https://github.com/jupyter/notebook/pull/3655)) +- Update marked to 0.4 ([3686](https://github.com/jupyter/notebook/pull/3686)) + +Fixing problems: + +- Don't duplicate token in displayed URL ([3656](https://github.com/jupyter/notebook/pull/3656)) +- Clarify displayed URL when listening on all interfaces ([3703](https://github.com/jupyter/notebook/pull/3703)) +- Don't trash non-empty directories on Windows ([3673](https://github.com/jupyter/notebook/pull/3673)) +- Include LICENSE file in wheels ([3671](https://github.com/jupyter/notebook/pull/3671)) +- Don't show "0 active kernels" when starting the notebook ([3696](https://github.com/jupyter/notebook/pull/3696)) + +Testing: + +- Add find replace test ([3630](https://github.com/jupyter/notebook/pull/3630)) +- Selenium test for deleting all cells ([3601](https://github.com/jupyter/notebook/pull/3601)) +- Make creating a new notebook more robust ([3726](https://github.com/jupyter/notebook/pull/3726)) + +Thanks to the following contributors: + +- Arovit Narula ([arovit](https://github.com/arovit)) +- lucasoshiro ([lucasoshiro](https://github.com/lucasoshiro)) +- M Pacer ([mpacer](https://github.com/mpacer)) +- Thomas Kluyver ([takluyver](https://github.com/takluyver)) +- Todd ([toddrme2178](https://github.com/toddrme2178)) +- Yuvi Panda ([yuvipanda](https://github.com/yuvipanda)) + +See the 5.6 milestone on GitHub for a complete list of [pull +requests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A5.6) +involved in this release. + +## 5.5.0 + +New features: + +- The files list now shows file sizes ([3539](https://github.com/jupyter/notebook/pull/3539)) +- Add a quit button in the dashboard ([3004](https://github.com/jupyter/notebook/pull/3004)) +- Display hostname in the terminal when running remotely ([3356](https://github.com/jupyter/notebook/pull/3356), [3593](https://github.com/jupyter/notebook/pull/3593)) +- Add slides exportation/download to the menu ([3287](https://github.com/jupyter/notebook/pull/3287)) +- Add any extra installed nbconvert exporters to the "Download as" + menu ([3323](https://github.com/jupyter/notebook/pull/3323)) +- Editor: warning when overwriting a file that is modified on disk ([2783](https://github.com/jupyter/notebook/pull/2783)) +- Display a warning message if cookies are not enabled ([3511](https://github.com/jupyter/notebook/pull/3511)) +- Basic `__version__` reporting for extensions ([3541](https://github.com/jupyter/notebook/pull/3541)) +- Add `NotebookApp.terminals_enabled` config option ([3478](https://github.com/jupyter/notebook/pull/3478)) +- Make buffer time between last modified on disk and last modified on + last save configurable ([3273](https://github.com/jupyter/notebook/pull/3273)) +- Allow binding custom shortcuts for 'close and halt' ([3314](https://github.com/jupyter/notebook/pull/3314)) +- Add description for 'Trusted' notification ([3386](https://github.com/jupyter/notebook/pull/3386)) +- Add `settings['activity_sources']` ([3401](https://github.com/jupyter/notebook/pull/3401)) +- Add an `output_updated.OutputArea` event ([3560](https://github.com/jupyter/notebook/pull/3560)) + +Fixing problems: + +- Fixes to improve web accessibility ([3507](https://github.com/jupyter/notebook/pull/3507)) +- Fixed color contrast issue in tree.less ([3336](https://github.com/jupyter/notebook/pull/3336)) +- Allow cancelling upload of large files ([3373](https://github.com/jupyter/notebook/pull/3373)) +- Don't clear login cookie on requests without cookie ([3380](https://github.com/jupyter/notebook/pull/3380)) +- Don't trash files on different device to home dir on Linux ([3304](https://github.com/jupyter/notebook/pull/3304)) +- Clear waiting asterisks when restarting kernel ([3494](https://github.com/jupyter/notebook/pull/3494)) +- Fix output prompt when `execution_count` missing ([3236](https://github.com/jupyter/notebook/pull/3236)) +- Make the 'changed on disk' dialog work when displayed twice ([3589](https://github.com/jupyter/notebook/pull/3589)) +- Fix going back to root directory with history in notebook list ([3411](https://github.com/jupyter/notebook/pull/3411)) +- Allow defining keyboard shortcuts for missing actions ([3561](https://github.com/jupyter/notebook/pull/3561)) +- Prevent default on pageup/pagedown when completer is active ([3500](https://github.com/jupyter/notebook/pull/3500)) +- Prevent default event handling on new terminal ([3497](https://github.com/jupyter/notebook/pull/3497)) +- ConfigManager should not write out default values found in the .d + directory ([3485](https://github.com/jupyter/notebook/pull/3485)) +- Fix leak of iopub object in activity monitoring ([3424](https://github.com/jupyter/notebook/pull/3424)) +- Javascript lint in notebooklist.js ([3409](https://github.com/jupyter/notebook/pull/3409)) +- Some Javascript syntax fixes ([3294](https://github.com/jupyter/notebook/pull/3294)) +- Convert native for loop to `Array.forEach()` ([3477](https://github.com/jupyter/notebook/pull/3477)) +- Disable cache when downloading nbconvert output ([3484](https://github.com/jupyter/notebook/pull/3484)) +- Add missing digestmod arg to HMAC ([3399](https://github.com/jupyter/notebook/pull/3399)) +- Log OSErrors failing to create less-critical files during startup ([3384](https://github.com/jupyter/notebook/pull/3384)) +- Use powershell on Windows ([3379](https://github.com/jupyter/notebook/pull/3379)) +- API spec improvements, API handler improvements ([3368](https://github.com/jupyter/notebook/pull/3368)) +- Set notebook to dirty state after change to kernel metadata ([3350](https://github.com/jupyter/notebook/pull/3350)) +- Use CSP header to treat served files as belonging to a separate + origin ([3341](https://github.com/jupyter/notebook/pull/3341)) +- Don't install gettext into builtins ([3330](https://github.com/jupyter/notebook/pull/3330)) +- Add missing `import _` ([3316](https://github.com/jupyter/notebook/pull/3316), + [3326](https://github.com/jupyter/notebook/pull/3326)) +- Write `notebook.json` file atomically ([3305](https://github.com/jupyter/notebook/pull/3305)) +- Fix clicking with modifiers, page title updates ([3282](https://github.com/jupyter/notebook/pull/3282)) +- Upgrade jQuery to version 2.2 ([3428](https://github.com/jupyter/notebook/pull/3428)) +- Upgrade xterm.js to 3.1.0 ([3189](https://github.com/jupyter/notebook/pull/3189)) +- Upgrade moment.js to 2.19.3 ([3562](https://github.com/jupyter/notebook/pull/3562)) +- Upgrade CodeMirror to 5.35 ([3372](https://github.com/jupyter/notebook/pull/3372)) +- "Require" pyzmq>=17 ([3586](https://github.com/jupyter/notebook/pull/3586)) + +Documentation: + +- Documentation updates and organisation ([3584](https://github.com/jupyter/notebook/pull/3584)) +- Add section in docs about privacy ([3571](https://github.com/jupyter/notebook/pull/3571)) +- Add explanation on how to change the type of a cell to Markdown ([3377](https://github.com/jupyter/notebook/pull/3377)) +- Update docs with confd implementation details ([3520](https://github.com/jupyter/notebook/pull/3520)) +- Add more information for where `jupyter_notebook_config.py` is + located ([3346](https://github.com/jupyter/notebook/pull/3346)) +- Document options to enable nbextensions in specific sections ([3525](https://github.com/jupyter/notebook/pull/3525)) +- jQuery attribute selector value MUST be surrounded by quotes ([3527](https://github.com/jupyter/notebook/pull/3527)) +- Do not execute special notebooks with nbsphinx ([3360](https://github.com/jupyter/notebook/pull/3360)) +- Other minor fixes in [3288](https://github.com/jupyter/notebook/pull/3288), + [3528](https://github.com/jupyter/notebook/pull/3528), [3293](https://github.com/jupyter/notebook/pull/3293), [3367](https://github.com/jupyter/notebook/pull/3367) + +Testing: + +- Testing with Selenium & Sauce labs ([3321](https://github.com/jupyter/notebook/pull/3321)) +- Selenium utils + markdown rendering tests ([3458](https://github.com/jupyter/notebook/pull/3458)) +- Convert insert cell tests to Selenium ([3508](https://github.com/jupyter/notebook/pull/3508)) +- Convert prompt numbers tests to Selenium ([3554](https://github.com/jupyter/notebook/pull/3554)) +- Convert delete cells tests to Selenium ([3465](https://github.com/jupyter/notebook/pull/3465)) +- Convert undelete cell tests to Selenium ([3475](https://github.com/jupyter/notebook/pull/3475)) +- More selenium testing utilities ([3412](https://github.com/jupyter/notebook/pull/3412)) +- Only check links when build is trigger by Travis Cron job ([3493](https://github.com/jupyter/notebook/pull/3493)) +- Fix Appveyor build errors ([3430](https://github.com/jupyter/notebook/pull/3430)) +- Undo patches in teardown before attempting to delete files ([3459](https://github.com/jupyter/notebook/pull/3459)) +- Get tests running with tornado 5 ([3398](https://github.com/jupyter/notebook/pull/3398)) +- Unpin ipykernel version on Travis ([3223](https://github.com/jupyter/notebook/pull/3223)) + +Thanks to the following contributors: + +- Arovit Narula ([arovit](https://github.com/arovit)) +- Ashley Teoh ([ashleytqy](https://github.com/ashleytqy)) +- Nicholas Bollweg ([bollwyvl](https://github.com/bollwyvl)) +- Alex Rothberg ([cancan101](https://github.com/cancan101)) +- Celina Kilcrease ([ckilcrease](https://github.com/ckilcrease)) +- dabuside ([dabuside](https://github.com/dabuside)) +- Damian Avila ([damianavila](https://github.com/damianavila)) +- Dana Lee ([danagilliann](https://github.com/danagilliann)) +- Dave Hirschfeld ([dhirschfeld](https://github.com/dhirschfeld)) +- Heng GAO ([ehengao](https://github.com/ehengao)) +- Leo Gallucci ([elgalu](https://github.com/elgalu)) +- Evan Van Dam ([evandam](https://github.com/evandam)) +- forbxy ([forbxy](https://github.com/forbxy)) +- Grant Nestor ([gnestor](https://github.com/gnestor)) +- Ethan T. Hendrix ([hendrixet](https://github.com/hendrixet)) +- Miro Hron膷ok ([hroncok](https://github.com/hroncok)) +- Paul Ivanov ([ivanov](https://github.com/ivanov)) +- Dar铆o Here帽煤 ([kant](https://github.com/kant)) +- Kevin Bates ([kevin-bates](https://github.com/kevin-bates)) +- Maarten Breddels ([maartenbreddels](https://github.com/maartenbreddels)) +- Michael Droettboom ([mdboom](https://github.com/mdboom)) +- Min RK ([minrk](https://github.com/minrk)) +- M Pacer ([mpacer](https://github.com/mpacer)) +- Peter Parente ([parente](https://github.com/parente)) +- Paul Masson ([paulmasson](https://github.com/paulmasson)) +- Philipp Rudiger ([philippjfr](https://github.com/philippjfr)) +- Mac Knight (Shels1909) +- Hisham Elsheshtawy ([Sheshtawy](https://github.com/Sheshtawy)) +- Simon Biggs ([SimonBiggs](https://github.com/SimonBiggs)) +- Sunil Hari (`@sunilhari`) +- Thomas Kluyver ([takluyver](https://github.com/takluyver)) +- Tim Klever ([tklever](https://github.com/tklever)) +- Gabriel Ruiz ([unnamedplay-r](https://github.com/unnamedplay-r)) +- Vaibhav Sagar ([vaibhavsagar](https://github.com/vaibhavsagar)) +- William Hosford ([whosford](https://github.com/whosford)) +- Hong ([xuhdev](https://github.com/xuhdev)) + +See the 5.5 milestone on GitHub for a complete list of [pull +requests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A5.5) +involved in this release. + +## 5.4.1 + +A security release to fix [CVE-2018-8768](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-8768). + +Thanks to [Alex](https://hackerone.com/pisarenko) for identifying this +bug, and Jonathan Kamens and Scott Sanderson at Quantopian for verifying +it and bringing it to our attention. + +## 5.4.0 + +- Fix creating files and folders after navigating directories in the + dashboard ([3264](https://github.com/jupyter/notebook/pull/3264)). +- Enable printing notebooks in colour, removing the CSS that made + everything black and white ([3212](https://github.com/jupyter/notebook/pull/3212)). +- Limit the completion options displayed in the notebook to 1000, to + avoid performance issues with very long lists ([3195](https://github.com/jupyter/notebook/pull/3195)). +- Accessibility improvements in `tree.html` ([3271](https://github.com/jupyter/notebook/pull/3271)). +- Added alt-text to the kernel logo image in the notebook UI ([3228](https://github.com/jupyter/notebook/pull/3228)). +- Added a test on Travis CI to flag if symlinks are accidentally + introduced in the future. This should prevent the issue that + necessitated `release-5.3.1`{.interpreted-text role="ref"} ([3227](https://github.com/jupyter/notebook/pull/3227)). +- Use lowercase letters for random IDs generated in our Javascript ([3264](https://github.com/jupyter/notebook/pull/3264)). +- Removed duplicate code setting `TextCell.notebook` ([3256](https://github.com/jupyter/notebook/pull/3256)). + +Thanks to the following contributors: + +- Alex Soderman ([asoderman](https://github.com/asoderman)) +- Matthias Bussonnier ([Carreau](https://github.com/Carreau)) +- Min RK ([minrk](https://github.com/minrk)) +- Nitesh Sawant ([ns23](https://github.com/ns23)) +- Thomas Kluyver ([takluyver](https://github.com/takluyver)) +- Yuvi Panda ([yuvipanda](https://github.com/yuvipanda)) + +See the 5.4 milestone on GitHub for a complete list of [pull +requests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A5.4) +involved in this release. + +## 5.3.1 + +Replaced a symlink in the repository with a copy, to fix issues +installing on Windows ([3220](https://github.com/jupyter/notebook/pull/3220)). + +## 5.3.0 + +This release introduces a couple notable improvements, such as terminal +support for Windows and support for OS trash (files deleted from the +notebook dashboard are moved to the OS trash vs. deleted permanently). + +- Add support for terminals on windows ([3087](https://github.com/jupyter/notebook/pull/3087)). +- Add a "restart and run all" button to the toolbar ([2965](https://github.com/jupyter/notebook/pull/2965)). +- Send files to os trash mechanism on delete ([1968](https://github.com/jupyter/notebook/pull/1968)). +- Allow programmatic copy to clipboard ([3088](https://github.com/jupyter/notebook/pull/3088)). +- Use DOM History API for navigating between directories in the file + browser ([3115](https://github.com/jupyter/notebook/pull/3115)). +- Add translated files to folder(docs-translations) ([3065](https://github.com/jupyter/notebook/pull/3065)). +- Allow non empty dirs to be deleted ([3108](https://github.com/jupyter/notebook/pull/3108)). +- Set cookie on base_url ([2959](https://github.com/jupyter/notebook/pull/2959)). +- Allow token-authenticated requests cross-origin by default ([2920](https://github.com/jupyter/notebook/pull/2920)). +- Change cull_idle_timeout_minimum to 1 from 300 ([2910](https://github.com/jupyter/notebook/pull/2910)). +- Config option to shut down server after n seconds with no kernels ([2963](https://github.com/jupyter/notebook/pull/2963)). +- Display a "close" button on load notebook error ([3176](https://github.com/jupyter/notebook/pull/3176)). +- Add action to command palette to run CodeMirror's "indentAuto" + on selection ([3175](https://github.com/jupyter/notebook/pull/3175)). +- Add option to specify extra services ([3158](https://github.com/jupyter/notebook/pull/3158)). +- Warn_bad_name should not use global name ([3160](https://github.com/jupyter/notebook/pull/3160)). +- Avoid overflow of hidden form ([3148](https://github.com/jupyter/notebook/pull/3148)). +- Fix shutdown trans loss ([3147](https://github.com/jupyter/notebook/pull/3147)). +- Find available kernelspecs more efficiently ([3136](https://github.com/jupyter/notebook/pull/3136)). +- Don't try to translate missing help strings ([3122](https://github.com/jupyter/notebook/pull/3122)). +- Frontend/extension-config: allow default json files in a .d + directory ([3116](https://github.com/jupyter/notebook/pull/3116)). +- Use \[requirejs\]{.title-ref} vs. \[require\]{.title-ref} ([3097](https://github.com/jupyter/notebook/pull/3097)). +- Fixes some ui bugs in firefox #3044 ([3058](https://github.com/jupyter/notebook/pull/3058)). +- Compare non-specific language code when choosing to use arabic + numerals ([3055](https://github.com/jupyter/notebook/pull/3055)). +- Fix save-script deprecation ([3053](https://github.com/jupyter/notebook/pull/3053)). +- Include moment locales in package_data ([3051](https://github.com/jupyter/notebook/pull/3051)). +- Fix moment locale loading in bidi support ([3048](https://github.com/jupyter/notebook/pull/3048)). +- Tornado 5: periodiccallback loop arg will be removed ([3034](https://github.com/jupyter/notebook/pull/3034)). +- Use \[/files\]{.title-ref} prefix for pdf-like files ([3031](https://github.com/jupyter/notebook/pull/3031)). +- Add folder for document translation ([3022](https://github.com/jupyter/notebook/pull/3022)). +- When login-in via token, let a chance for user to set the password ([3008](https://github.com/jupyter/notebook/pull/3008)). +- Switch to jupyter_core implementation of ensure_dir_exists ([3002](https://github.com/jupyter/notebook/pull/3002)). +- Send http shutdown request on 'stop' subcommand ([3000](https://github.com/jupyter/notebook/pull/3000)). +- Work on loading ui translations ([2969](https://github.com/jupyter/notebook/pull/2969)). +- Fix ansi inverse ([2967](https://github.com/jupyter/notebook/pull/2967)). +- Add send2trash to requirements for building docs ([2964](https://github.com/jupyter/notebook/pull/2964)). +- I18n readme.md improvement ([2962](https://github.com/jupyter/notebook/pull/2962)). +- Add 'reason' field to json error responses ([2958](https://github.com/jupyter/notebook/pull/2958)). +- Add some padding for stream outputs ([3194](https://github.com/jupyter/notebook/pull/3194)). +- Always use setuptools in `setup.py` ([3206](https://github.com/jupyter/notebook/pull/3206)). +- Fix clearing cookies on logout when `base_url` is configured ([3207](https://github.com/jupyter/notebook/pull/3207)). + +Thanks to the following contributors: + +- bacboc ([bacboc](https://github.com/bacboc)) +- Steven Silvester ([blink1073](https://github.com/blink1073)) +- Matthias Bussonnier ([Carreau](https://github.com/Carreau)) +- ChungJooHo ([ChungJooHo](https://github.com/ChungJooHo)) +- edida ([edida](https://github.com/edida)) +- Francesco Franchina (`ferdas`) +- forbxy ([forbxy](https://github.com/forbxy)) +- Grant Nestor ([gnestor](https://github.com/gnestor)) +- Josh Barnes ([jcb91](https://github.com/jcb91)) +- JocelynDelalande ([JocelynDelalande](https://github.com/JocelynDelalande)) +- Karthik Balakrishnan ([karthikb351](https://github.com/karthikb351)) +- Kevin Bates ([kevin-bates](https://github.com/kevin-bates)) +- Kirit Thadaka ([kirit93](https://github.com/kirit93)) +- Lilian Besson ([Naereen](https://github.com/Naereen)) +- Maarten Breddels ([maartenbreddels](https://github.com/maartenbreddels)) +- Madhu94 ([Madhu94](https://github.com/Madhu94)) +- Matthias Geier ([mgeier](https://github.com/mgeier)) +- Michael Heilman ([mheilman](https://github.com/mheilman)) +- Min RK ([minrk](https://github.com/minrk)) +- PHaeJin ([PHaeJin](https://github.com/PHaeJin)) +- Sukneet ([Sukneet](https://github.com/Sukneet)) +- Thomas Kluyver ([takluyver](https://github.com/takluyver)) + +See the 5.3 milestone on GitHub for a complete list of [pull +requests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A5.3) +involved in this release. + +## 5.2.1 + +- Fix invisible CodeMirror cursor at specific browser zoom levels ([2983](https://github.com/jupyter/notebook/pull/2983)). +- Fix nbconvert handler causing broken export to PDF ([2981](https://github.com/jupyter/notebook/pull/2981)). +- Fix the prompt_area argument of the output area constructor. ([2961](https://github.com/jupyter/notebook/pull/2961)). +- Handle a compound extension in new_untitled ([2949](https://github.com/jupyter/notebook/pull/2949)). +- Allow disabling offline message buffering ([2916](https://github.com/jupyter/notebook/pull/2916)). + +Thanks to the following contributors: + +- Steven Silvester ([blink1073](https://github.com/blink1073)) +- Grant Nestor ([gnestor](https://github.com/gnestor)) +- Jason Grout ([jasongrout](https://github.com/jasongrout)) +- Min RK ([minrk](https://github.com/minrk)) +- M Pacer ([mpacer](https://github.com/mpacer)) + +See the 5.2.1 milestone on GitHub for a complete list of [pull +requests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A5.2.1) +involved in this release. + +## 5.2.0 + +- Allow setting token via jupyter_token env ([2921](https://github.com/jupyter/notebook/pull/2921)). +- Fix some errors caused by raising 403 in get_current_user ([2919](https://github.com/jupyter/notebook/pull/2919)). +- Register contents_manager.files_handler_class directly ([2917](https://github.com/jupyter/notebook/pull/2917)). +- Update viewable_extensions ([2913](https://github.com/jupyter/notebook/pull/2913)). +- Show edit shortcuts modal after shortcuts modal is hidden ([2912](https://github.com/jupyter/notebook/pull/2912)). +- Improve edit/view behavior ([2911](https://github.com/jupyter/notebook/pull/2911)). +- The root directory of the notebook server should never be hidden ([2907](https://github.com/jupyter/notebook/pull/2907)). +- Fix notebook require config to match tools/build-main ([2888](https://github.com/jupyter/notebook/pull/2888)). +- Give page constructor default arguments ([2887](https://github.com/jupyter/notebook/pull/2887)). +- Fix codemirror.less to match codemirror's expected padding layout ([2880](https://github.com/jupyter/notebook/pull/2880)). +- Add x-xsrftoken to access-control-allow-headers ([2876](https://github.com/jupyter/notebook/pull/2876)). +- Buffer messages when websocket connection is interrupted ([2871](https://github.com/jupyter/notebook/pull/2871)). +- Load locale dynamically only when not en-us ([2866](https://github.com/jupyter/notebook/pull/2866)). +- Changed key strength to 2048 bits ([2861](https://github.com/jupyter/notebook/pull/2861)). +- Resync jsversion with python version ([2860](https://github.com/jupyter/notebook/pull/2860)). +- Allow copy operation on modified, read-only notebook ([2854](https://github.com/jupyter/notebook/pull/2854)). +- Update error handling on apihandlers ([2853](https://github.com/jupyter/notebook/pull/2853)). +- Test python 3.6 on travis, drop 3.3 ([2852](https://github.com/jupyter/notebook/pull/2852)). +- Avoid base64-literals in image tests ([2851](https://github.com/jupyter/notebook/pull/2851)). +- Upgrade xterm.js to 2.9.2 ([2849](https://github.com/jupyter/notebook/pull/2849)). +- Changed all python variables named file to file_name to not override + built_in file ([2830](https://github.com/jupyter/notebook/pull/2830)). +- Add more doc tests ([2823](https://github.com/jupyter/notebook/pull/2823)). +- Typos fix ([2815](https://github.com/jupyter/notebook/pull/2815)). +- Rename and update license \[ci skip\] ([2810](https://github.com/jupyter/notebook/pull/2810)). +- Travis builds doc ([2808](https://github.com/jupyter/notebook/pull/2808)). +- Pull request i18n ([2804](https://github.com/jupyter/notebook/pull/2804)). +- Factor out output_prompt_function, as is done with input prompt ([2774](https://github.com/jupyter/notebook/pull/2774)). +- Use rfc5987 encoding for filenames ([2767](https://github.com/jupyter/notebook/pull/2767)). +- Added path to the resources metadata, the same as in + from_filename(...) in nbconvert.exporters.py ([2753](https://github.com/jupyter/notebook/pull/2753)). +- Make "extrakeys" consistent for notebook and editor ([2745](https://github.com/jupyter/notebook/pull/2745)). +- Bidi support ([2357](https://github.com/jupyter/notebook/pull/2357)). + +Special thanks to [samarsultan](https://github.com/samarsultan) and the +Arabic Competence and Globalization Center Team at IBM Egypt for adding +RTL (right-to-left) support to the notebook! + +See the 5.2 milestone on GitHub for a complete list of +[issues](https://github.com/jupyter/notebook/issues?utf8=%E2%9C%93&q=is%3Aissue%20milestone%3A5.2) +and [pull +requests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A5.2) +involved in this release. + +## 5.1.0 + +- Preliminary i18n implementation ([2140](https://github.com/jupyter/notebook/pull/2140)). +- Expose URL with auth token in notebook UI ([2666](https://github.com/jupyter/notebook/pull/2666)). +- Fix search background style ([2387](https://github.com/jupyter/notebook/pull/2387)). +- List running notebooks without requiring `--allow-root` ([2421](https://github.com/jupyter/notebook/pull/2421)). +- Allow session of type other than notebook ([2559](https://github.com/jupyter/notebook/pull/2559)). +- Fix search background style ([2387](https://github.com/jupyter/notebook/pull/2387)). +- Fix some Markdown styling issues ([2571](https://github.com/jupyter/notebook/pull/2571)), ([2691](https://github.com/jupyter/notebook/pull/2691)) and ([2534](https://github.com/jupyter/notebook/pull/2534)). +- Remove keymaps that conflict with non-English keyboards ([2535](https://github.com/jupyter/notebook/pull/2535)). +- Add session-specific favicons (notebook, terminal, file) ([2452](https://github.com/jupyter/notebook/pull/2452)). +- Add /api/shutdown handler ([2507](https://github.com/jupyter/notebook/pull/2507)). +- Include metadata when copying a cell ([2349](https://github.com/jupyter/notebook/pull/2349)). +- Stop notebook server from command line ([2388](https://github.com/jupyter/notebook/pull/2388)). +- Improve "View" and "Edit" file handling in dashboard ([2449](https://github.com/jupyter/notebook/pull/2449)) and ([2402](https://github.com/jupyter/notebook/pull/2402)). +- Provide a promise to replace use of the + `app_initialized.NotebookApp` event ([2710](https://github.com/jupyter/notebook/pull/2710)). +- Fix disabled collapse/expand output button ([2681](https://github.com/jupyter/notebook/pull/2681)). +- Cull idle kernels using `--MappingKernelManager.cull_idle_timeout` ([2215](https://github.com/jupyter/notebook/pull/2215)). +- Allow read-only notebooks to be trusted ([2718](https://github.com/jupyter/notebook/pull/2718)). + +See the 5.1 milestone on GitHub for a complete list of +[issues](https://github.com/jupyter/notebook/issues?utf8=%E2%9C%93&q=is%3Aissue%20milestone%3A5.1) +and [pull +requests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A5.1) +involved in this release. + +## 5.0.0 + +This is the first major release of the Jupyter Notebook since version +4.0 was created by the "Big Split" of IPython and Jupyter. + +We encourage users to start trying JupyterLab in preparation for a +future transition. + +We have merged more than 300 pull requests since 4.0. Some of the major +user-facing changes are described here. + +### File sorting in the dashboard + +Files in the dashboard may now be sorted by last modified date or name +([943](https://github.com/jupyter/notebook/pull/943)): + +### Cell tags + +There is a new cell toolbar for adding _cell tags_ +([2048](https://github.com/jupyter/notebook/pull/2048)): + +Cell tags are a lightweight way to customise the behaviour of tools +working with notebooks; we're working on building support for them into +tools like [nbconvert](https://nbconvert.readthedocs.io/en/latest/) and +[nbval](https://github.com/computationalmodelling/nbval). To start using +tags, select `Tags` in the `View > Cell Toolbar` menu in a notebook. + +The UI for editing cell tags is basic for now; we hope to improve it in +future releases. + +### Table style + +The default styling for tables in the notebook has been updated +([1776](https://github.com/jupyter/notebook/pull/1776)). + +### Customise keyboard shortcuts + +You can now edit keyboard shortcuts for _Command Mode_ within the UI +([1347](https://github.com/jupyter/notebook/pull/1347)): + +See the `Help > Edit Keyboard Shortcuts` menu item and follow the +instructions. + +### Other additions + +- You can copy and paste cells between notebooks, using + `Ctrl-C`{.interpreted-text role="kbd"} and + `Ctrl-V`{.interpreted-text role="kbd"} (`Cmd-C`{.interpreted-text + role="kbd"} and `Cmd-V`{.interpreted-text role="kbd"} on Mac). +- It's easier to configure a password for the notebook with the new + `jupyter notebook password` command ([2007](https://github.com/jupyter/notebook/pull/2007)). +- The file list can now be ordered by _last modified_ or by _name_ ([943](https://github.com/jupyter/notebook/pull/943)). +- Markdown cells now support attachments. Simply drag and drop an + image from your desktop to a markdown cell to add it. Unlike + relative links that you enter manually, attachments are embedded in + the notebook itself. An unreferenced attachment will be + automatically scrubbed from the notebook on save ([621](https://github.com/jupyter/notebook/pull/621)). +- Undoing cell deletion now supports undeleting multiple cells. Cells + may not be in the same order as before their deletion, depending on + the actions you did on the meantime, but this should should help + reduce the impact of accidentally deleting code. +- The file browser now has _Edit_ and _View_ buttons. +- The file browser now supports moving multiple files at once ([1088](https://github.com/jupyter/notebook/pull/1088)). +- The Notebook will refuse to run as root unless the `--allow-root` + flag is given ([1115](https://github.com/jupyter/notebook/pull/1115)). +- Keyboard shortcuts are now declarative ([1234](https://github.com/jupyter/notebook/pull/1234)). +- Toggling line numbers can now affect all cells ([1312](https://github.com/jupyter/notebook/pull/1312)). +- Add more visible _Trusted_ and _Untrusted_ notifications ([1658](https://github.com/jupyter/notebook/pull/1658)). +- The favicon (browser shortcut icon) now changes to indicate when the + kernel is busy ([1837](https://github.com/jupyter/notebook/pull/1837)). +- Header and toolbar visibility is now persisted in nbconfig and + across sessions ([1769](https://github.com/jupyter/notebook/pull/1769)). +- Load server extensions with ConfigManager so that merge happens + recursively, unlike normal config values, to make it load more + consistently with frontend extensions([2108](https://github.com/jupyter/notebook/pull/2108)). +- The notebook server now supports the bundler API + from the [jupyter_cms incubator + project](https://github.com/jupyter-incubator/contentmanagement) ([1579](https://github.com/jupyter/notebook/pull/1579)). +- The notebook server now provides information about kernel activity + in its kernel resource API ([1827](https://github.com/jupyter/notebook/pull/1827)). + +Remember that upgrading `notebook` only affects the user interface. +Upgrading kernels and libraries may also provide new features, better +stability and integration with the notebook interface. + +## 4.4.0 + +- Allow override of output callbacks to redirect output messages. This + is used to implement the ipywidgets Output widget, for example. +- Fix an async bug in message handling by allowing comm message + handlers to return a promise which halts message processing until + the promise resolves. + +See the 4.4 milestone on GitHub for a complete list of +[issues](https://github.com/jupyter/notebook/issues?utf8=%E2%9C%93&q=is%3Aissue%20milestone%3A4.4) +and [pull +requests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A4.4) +involved in this release. + +## 4.3.2 + +4.3.2 is a patch release with a bug fix for CodeMirror and improved +handling of the "editable" cell metadata field. + +- Monkey-patch for CodeMirror that resolves + [#2037](https://github.com/jupyter/notebook/issues/2037) without + breaking [#1967](https://github.com/jupyter/notebook/issues/1967) +- Read-only (`"editable": false`) cells can be executed but cannot be + split, merged, or deleted + +See the 4.3.2 milestone on GitHub for a complete list of +[issues](https://github.com/jupyter/notebook/issues?utf8=%E2%9C%93&q=is%3Aissue%20milestone%3A4.3.2) +and [pull +requests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A4.3.2) +involved in this release. + +## 4.3.1 + +4.3.1 is a patch release with a security patch, a couple bug fixes, and +improvements to the newly-released token authentication. + +**Security fix**: + +- CVE-2016-9971. Fix CSRF vulnerability, where malicious forms could + create untitled files and start kernels (no remote execution or + modification of existing files) for users of certain browsers (Firefox, Internet Explorer / Edge). All previous notebook releases + are affected. + +Bug fixes: + +- Fix carriage return handling +- Make the font size more robust against fickle browsers +- Ignore resize events that bubbled up and didn't come from window +- Add Authorization to allowed CORS headers +- Downgrade CodeMirror to 5.16 while we figure out issues in Safari + +Other improvements: + +- Better docs for token-based authentication +- Further highlight token info in log output when autogenerated + +See the 4.3.1 milestone on GitHub for a complete list of +[issues](https://github.com/jupyter/notebook/issues?utf8=%E2%9C%93&q=is%3Aissue%20milestone%3A4.3.1) +and [pull +requests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A4.3.1) +involved in this release. + +## 4.3.0 + +4.3 is a minor release with many bug fixes and improvements. The biggest +user-facing change is the addition of token authentication, which is +enabled by default. A token is generated and used when your browser is +opened automatically, so you shouldn't have to enter anything in the +default circumstances. If you see a login page (e.g. by switching +browsers, or launching on a new port with `--no-browser`), you get a +login URL with the token from the command `jupyter notebook list`, which +you can paste into your browser. + +Highlights: + +- API for creating mime-type based renderer extensions using + `OutputArea.register_mime_type` and `Notebook.render_cell_output` + methods. See + [mimerender-cookiecutter](https://github.com/jupyterlab/mimerender-cookiecutter) + for reference implementations and cookiecutter. +- Enable token authentication by default. See + `server_security`{.interpreted-text role="ref"} for more details. +- Update security docs to reflect new signature system +- Switched from term.js to xterm.js + +Bug fixes: + +- Ensure variable is set if exc_info is falsey +- Catch and log handler exceptions in `events.trigger` +- Add debug log for static file paths +- Don't check origin on token-authenticated requests +- Remove leftover print statement +- Fix highlighting of Python code blocks +- `json_errors` should be outermost decorator on API handlers +- Fix remove old nbserver info files +- Fix notebook mime type on download links +- Fix carriage symbol behavior +- Fix terminal styles +- Update dead links in docs +- If kernel is broken, start a new session +- Include cross-origin check when allowing login URL redirects + +Other improvements: + +- Allow JSON output data with mime type `application/*+json` +- Allow kernelspecs to have spaces in them for backward compat +- Allow websocket connections from scripts +- Allow `None` for post_save_hook +- Upgrade CodeMirror to 5.21 +- Upgrade xterm to 2.1.0 +- Docs for using comms +- Set `dirty` flag when output arrives +- Set `ws-url` data attribute when accessing a notebook terminal +- Add base aliases for nbextensions +- Include `@` operator in CodeMirror IPython mode +- Extend mathjax_url docstring +- Load nbextension in predictable order +- Improve the error messages for nbextensions +- Include cross-origin check when allowing login URL redirects + +See the 4.3 milestone on GitHub for a complete list of +[issues](https://github.com/jupyter/notebook/issues?utf8=%E2%9C%93&q=is%3Aissue%20milestone%3A4.3%20) +and [pull +requests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A4.3%20) +involved in this release. + +## 4.2.3 + +4.2.3 is a small bugfix release on 4.2. + +> Highlights: + +- Fix regression in 4.2.2 that delayed loading custom.js until after + `notebook_loaded` and `app_initialized` events have fired. +- Fix some outdated docs and links. + +## 4.2.2 + +4.2.2 is a small bugfix release on 4.2, with an important security fix. +All users are strongly encouraged to upgrade to 4.2.2. + +> Highlights: + +- **Security fix**: CVE-2016-6524, where untrusted latex output could + be added to the page in a way that could execute javascript. +- Fix missing POST in OPTIONS responses. +- Fix for downloading non-ascii filenames. +- Avoid clobbering ssl_options, so that users can specify more + detailed SSL configuration. +- Fix inverted load order in nbconfig, so user config has highest + priority. +- Improved error messages here and there. + +## 4.2.1 + +4.2.1 is a small bugfix release on 4.2. Highlights: + +- Compatibility fixes for some versions of ipywidgets +- Fix for ignored CSS on Windows +- Fix specifying destination when installing nbextensions + +## 4.2.0 + +Release 4.2 adds a new API for enabling and installing extensions. +Extensions can now be enabled at the system-level, rather than just +per-user. An API is defined for installing directly from a Python +package, as well. + +Highlighted changes: + +- Upgrade MathJax to 2.6 to fix vertical-bar appearing on some + equations. +- Restore ability for notebook directory to be root (4.1 regression) +- Large outputs are now throttled, reducing the ability of output + floods to kill the browser. +- Fix the notebook ignoring cell executions while a kernel is starting + by queueing the messages. +- Fix handling of url prefixes (e.g. JupyterHub) in terminal and edit + pages. +- Support nested SVGs in output. + +And various other fixes and improvements. + +## 4.1.0 + +Bug fixes: + +- Properly reap zombie subprocesses +- Fix cross-origin problems +- Fix double-escaping of the base URL prefix +- Handle invalid unicode filenames more gracefully +- Fix ANSI color-processing +- Send keepalive messages for web terminals +- Fix bugs in the notebook tour + +UI changes: + +- Moved the cell toolbar selector into the _View_ menu. Added a button + that triggers a "hint" animation to the main toolbar so users can + find the new location. (Click here to see a + [screencast](https://cloud.githubusercontent.com/assets/335567/10711889/59665a5a-7a3e-11e5-970f-86b89592880c.gif) + ) + +- Added _Restart & Run All_ to the _Kernel_ menu. Users can also bind + it to a keyboard shortcut on action + `restart-kernel-and-run-all-cells`. + +- Added multiple-cell selection. Users press `Shift-Up/Down` or + `Shift-K/J` to extend selection in command mode. Various actions + such as cut/copy/paste, execute, and cell type conversions apply to + all selected cells. + +- Added a command palette for executing Jupyter actions by name. Users + press `Cmd/Ctrl-Shift-P` or click the new command palette icon on + the toolbar. + +- Added a _Find and Replace_ dialog to the _Edit_ menu. Users can also + press `F` in command mode to show the dialog. + +Other improvements: + +- Custom KernelManager methods can be Tornado coroutines, allowing + async operations. +- Make clearing output optional when rewriting input with + `set_next_input(replace=True)`. +- Added support for TLS client authentication via + `--NotebookApp.client-ca`. +- Added tags to `jupyter/notebook` releases on DockerHub. `latest` + continues to track the master branch. + +See the 4.1 milestone on GitHub for a complete list of +[issues](https://github.com/jupyter/notebook/issues?page=3&q=milestone%3A4.1+is%3Aclosed+is%3Aissue&utf8=%E2%9C%93) +and [pull +requests](https://github.com/jupyter/notebook/pulls?q=milestone%3A4.1+is%3Aclosed+is%3Apr) +handled. + +## 4.0.x + +### 4.0.6 + +- fix installation of mathjax support files +- fix some double-escape regressions in 4.0.5 +- fix a couple of cases where errors could prevent opening a notebook + +### 4.0.5 + +Security fixes for maliciously crafted files. + +- [CVE-2015-6938](http://www.openwall.com/lists/oss-security/2015/09/02/3): + malicious filenames +- [CVE-2015-7337](http://www.openwall.com/lists/oss-security/2015/09/16/3): + malicious binary files in text editor. + +Thanks to Jonathan Kamens at Quantopian and Juan Broull贸n for the +reports. + +### 4.0.4 + +- Fix inclusion of mathjax-safe extension + +### 4.0.2 + +- Fix launching the notebook on Windows +- Fix the path searched for frontend config + +### 4.0.0 + +First release of the notebook as a standalone package. diff --git a/src/CONTRIBUTING.md b/src/CONTRIBUTING.md new file mode 100644 index 000000000..6823f81b7 --- /dev/null +++ b/src/CONTRIBUTING.md @@ -0,0 +1,247 @@ +# Contributing to Jupyter Notebook + +Thanks for contributing to Jupyter Notebook! + +Make sure to follow [Project Jupyter's Code of Conduct](https://jupyter.org/governance/conduct/code-of-conduct) +for a friendly and welcoming collaborative environment. + +## Setting up a development environment + +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. + +**Note**: we recommend using `mamba` to speed up the creation of the environment. + +```bash +# create a new environment +mamba create -n notebook -c conda-forge python nodejs -y + +# activate the environment +mamba activate notebook + +# Install package in development mode +pip install -e ".[dev,docs,test]" + +# Install dependencies and build packages +jlpm +jlpm build + +# Link the notebook extension and @jupyter-notebook schemas +jlpm develop + +# Enable the server extension +jupyter server extension enable notebook +``` + +`notebook` follows a monorepo structure. To build all the packages at once: + +```bash +jlpm build +``` + +There is also a `watch` script to watch for changes and rebuild the app automatically: + +```bash +jlpm watch +``` + +To make sure the `notebook` server extension is installed: + +```bash +$ jupyter server extension list +Config dir: /home/username/.jupyter + +Config dir: /home/username/miniforge3/envs/notebook/etc/jupyter + jupyterlab enabled + - Validating jupyterlab... + jupyterlab 3.0.0 OK + notebook enabled + - Validating notebook... + notebook 7.0.0a0 OK + +Config dir: /usr/local/etc/jupyter +``` + +Then start Jupyter Notebook with: + +```bash +jupyter notebook +``` + +### Local changes in Notebook dependencies + +The development installation described above fetches JavaScript dependencies from `npm`. +according to the versions in the _package.json_ file. +However, it is sometimes useful to be able to test changes in Notebook, with dependencies (e.g. `@jupyterlab` packages) that have not yet +been published. + +[yalc](https://github.com/wclr/yalc) can help you use local JavaScript packages when building Notebook, acting as a local package repository. + +- Install yalc globally in your environment: + `npm install -g yalc` +- Publish your dependency package:\ + `yalc publish`, from the package root directory.\ + For instance, if you are developing on _@jupyterlab/ui-components_, this command must be executed from + _path_to_jupyterlab/packages/ui-components_. +- Depend on this local repository in Notebook: + - from the Notebook root directory:\ + `yalc add your_package` : this will create a _dependencies_ entry in the main _package.json_ file.\ + With the previous example, it would be `yalc add @jupyterlab/ui-components`. + - Notebook is a monorepo, so we want this dependency to be 'linked' as a resolution (for all sub-packages) instead + of a dependency.\ + The easiest way is to manually move the new entry in _package.json_ from _dependencies_ to _resolutions_. + - Build Notebook with the local dependency:\ + `jlpm install && jlpm build` + +Changes in the dependency must then be built and pushed using `jlpm build && yalc push` (from the package root directory), +and fetched from Notebook using `yarn install`. + +**Warning**: you need to make sure that the dependencies of Notebook and the local package match correctly, +otherwise there will be errors with webpack during build.\ +In the previous example, both _@jupyterlab/ui-components_ and Notebook depend on _@jupyterlab/coreutils_. We +strongly advise you to depend on the same version. + +## Running Tests + +To run the tests: + +```bash +jlpm run build:test +jlpm run test +``` + +There are also end to end tests to cover higher level user interactions, located in the `ui-tests` folder. To run these tests: + +```bash +cd ui-tests +#install required packages for jlpm +jlpm + +#install playwright +jlpm playwright install + +# start a new Jupyter server in a terminal +jlpm start + +# in a new terminal, run the tests +jlpm test +``` + +The `test` script calls the Playwright test runner. You can pass additional arguments to `playwright` by appending parameters to the command. For example to run the test in headed mode, `jlpm test --headed`. + +Check out the [Playwright Command Line Reference](https://playwright.dev/docs/test-cli/) for more information about the available command line options. + +Running the end to end tests in headful mode will trigger something like the following: + +![playwright-headed-demo](https://user-images.githubusercontent.com/591645/141274633-ca9f9c2f-eef6-430e-9228-a35827f8133d.gif) + +## Tasks caching + +The repository is configured to use the Lerna caching system (via `nx`) for some of the development scripts. + +This helps speed up rebuilds when running `jlpm run build` multiple times to avoid rebuilding packages that have not changed on disk. + +You can generate a graph to have a better idea of the dependencies between all the packages using the following command: + +``` +npx nx graph +``` + +Running the command will open a browser tab by default with a graph that looks like the following: + +![a screenshot showing the nx task graph](https://github.com/jupyter/notebook/assets/591645/34eb46f0-b0e5-44b6-9430-ae5fbd673a4b) + +To learn more about Lerna caching: + +- https://lerna.js.org/docs/features/cache-tasks +- https://nx.dev/features/cache-task-results + +### Updating reference snapshots + +Often a PR might make changes to the user interface, which can cause the visual regression tests to fail. + +If you want to update the reference snapshots while working on a PR you can post the following sentence as a GitHub comment: + +``` +bot please update playwright snapshots +``` + +This will trigger a GitHub Action that will run the UI tests automatically and push new commits to the branch if the reference snapshots have changed. + +## Code Styling + +All non-python source code is formatted using [prettier](https://prettier.io) and python source code is formatted using [black](https://github.com/psf/black). +When code is modified and committed, all staged files will be +automatically formatted using pre-commit git hooks (with help from +[pre-commit](https://github.com/pre-commit/pre-commit). The benefit of +using code formatters like `prettier` and `black` is that it removes the topic of +code style from the conversation when reviewing pull requests, thereby +speeding up the review process. + +As long as your code is valid, +the pre-commit hook should take care of how it should look. +`pre-commit` and its associated hooks will automatically be installed when +you run `pip install -e ".[dev,test]"` + +To install `pre-commit` manually, run the following: + +```shell +pip install pre-commit +pre-commit install +``` + +You can invoke the pre-commit hook by hand at any time with: + +```shell +pre-commit run +``` + +which should run any autoformatting on your code +and tell you about any errors it couldn't fix automatically. +You may also install [black integration](https://github.com/psf/black#editor-integration) +into your text editor to format code automatically. + +If you have already committed files before setting up the pre-commit +hook with `pre-commit install`, you can fix everything up using +`pre-commit run --all-files`. You need to make the fixing commit +yourself after that. + +You may also use the prettier npm script (e.g. `npm run prettier` or +`yarn prettier` or `jlpm prettier`) to format the entire code base. +We recommend installing a prettier extension for your code editor and +configuring it to format your code with a keyboard shortcut, or +automatically on save. + +Some of the hooks only run on CI by default, but you can invoke them by +running with the `--hook-stage manual` argument. + +## Documentation + +First make sure you have set up a development environment as described above. + +Then run the following command to build the docs: + +```shell +hatch run docs:build +``` + +In a separate terminal window, run the following command to serve the documentation: + +```shell +hatch run docs:serve +``` + +Now open a web browser and navigate to `http://localhost:8000` to access the documentation. + +## Contributing from the browser + +Alternatively you can also contribute to Jupyter Notebook without setting up a local environment, directly from a web browser: + +- [GitHub CodeSpaces](https://github.com/codespaces) is directly integrated into GitHub. This repository uses the [pixi](https://pixi.sh/) package manager to set up the development environment. To contribute after the Codespace is started: + - Run `pixi shell` in a terminal to activate the development environment + - Use the commands above for building the extension and running the tests, for example: `jlpm build` + - To start the application: `pixi run start`. A popup should appear with a button to open the Jupyter Notebook in a new browser tab. If the popup does not appear, you can navigate to the "Forwarded ports" panel to find the URL to the application. +- GitHub's [built-in editor](https://docs.github.com/en/repositories/working-with-files/managing-files/editing-files) is suitable for contributing small fixes. +- A more advanced [github.dev](https://docs.github.com/en/codespaces/the-githubdev-web-based-editor) editor can be accessed by pressing the dot (.) key while in the Jupyter Notebook GitHub repository diff --git a/src/LICENSE b/src/LICENSE new file mode 100644 index 000000000..076177a49 --- /dev/null +++ b/src/LICENSE @@ -0,0 +1,31 @@ +BSD 3-Clause License + +- Copyright (c) 2001-2015, IPython Development Team +- Copyright (c) 2015-, Jupyter Development Team + +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/src/README.md b/src/README.md new file mode 100644 index 000000000..5550f4f13 --- /dev/null +++ b/src/README.md @@ -0,0 +1,133 @@ +# Jupyter Notebook + +![Github Actions Status](https://github.com/jupyter/notebook/workflows/Build/badge.svg) +[![Documentation Status](https://readthedocs.org/projects/jupyter-notebook/badge/?version=latest)](https://jupyter-notebook.readthedocs.io/en/latest/?badge=latest) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jupyter/notebook/main?urlpath=tree) + +The Jupyter notebook is a web-based notebook environment for interactive +computing. + +![Jupyter notebook example](docs/resources/running_code_med.png 'Jupyter notebook example') + +## Maintained versions + +We maintain the **two most recently released major versions of Jupyter Notebook**, +Classic Notebook v6 and Notebook v7. Notebook v5 is no longer maintained. +All Notebook v5 users are strongly advised to upgrade to Classic Notebook v6 as soon as possible. + +Upgrading to Notebook v7 may require more work, if you use custom extensions, as extensions written +for Notebook v5 or Classic Notebook v6 are not compatible with Notebook v7. + +### Notebook v7 + +The newest major version of Notebook is based on: + +- JupyterLab components for the frontend +- Jupyter Server for the Python server + +This represents a significant change to the `jupyter/notebook` code base. + +To learn more about Notebook v7: https://jupyter.org/enhancement-proposals/79-notebook-v7/notebook-v7.html + +### Classic Notebook v6 + +Maintenance and security-related issues [only](https://github.com/jupyter/notebook-team-compass/issues/5#issuecomment-1085254000) are now being addressed in the [`6.5.x`](https://github.com/jupyter/notebook/tree/6.5.x) branch. +It depends on [`nbclassic`](https://github.com/jupyter/nbclassic) for the HTML/JavaScript/CSS assets. + +New features and continuous improvement is now focused on Notebook v7 (see section above). + +If you have an open pull request with a new feature or if you were planning to open one, we encourage switching over to the Jupyter Server and JupyterLab architecture, and distribute it as a server extension and / or JupyterLab prebuilt extension. That way your new feature will also be compatible with the new Notebook v7. + +## Jupyter notebook, the language-agnostic evolution of IPython notebook + +Jupyter notebook is a language-agnostic HTML notebook application for +Project Jupyter. In 2015, Jupyter notebook was released as a part of +The Big Split鈩 of the IPython codebase. IPython 3 was the last major monolithic +release containing both language-agnostic code, such as the _IPython notebook_, +and language specific code, such as the _IPython kernel for Python_. As +computing spans across many languages, Project Jupyter will continue to develop the +language-agnostic **Jupyter notebook** in this repo and with the help of the +community develop language specific kernels which are found in their own +discrete repos. + +- [The Big Split鈩 announcement](https://blog.jupyter.org/the-big-split-9d7b88a031a7) +- [Jupyter Ascending blog post](https://blog.jupyter.org/jupyter-ascending-1bf5b362d97e) + +## Installation + +You can find the installation documentation for the +[Jupyter platform, on ReadTheDocs](https://jupyter.readthedocs.io/en/latest/install.html). +The documentation for advanced usage of Jupyter notebook can be found +[here](https://jupyter-notebook.readthedocs.io/en/latest/). + +For a local installation, make sure you have +[pip installed](https://pip.readthedocs.io/en/stable/installing/) and run: + +```bash +pip install notebook +``` + +## Usage - Running Jupyter notebook + +### Running in a local installation + +Launch with: + +```bash +jupyter notebook +``` + +### Running in a remote installation + +You need some configuration before starting Jupyter notebook remotely. See [Running a notebook server](https://jupyter-server.readthedocs.io/en/latest/operators/public-server.html). + +## Development Installation + +See [`CONTRIBUTING.md`](CONTRIBUTING.md) for how to set up a local development installation. + +## Contributing + +If you are interested in contributing to the project, see [`CONTRIBUTING.md`](CONTRIBUTING.md). + +## Community Guidelines and Code of Conduct + +This repository is a Jupyter project and follows the Jupyter +[Community Guides and Code of Conduct](https://jupyter.readthedocs.io/en/latest/community/content-community.html). + +## Resources + +- [Project Jupyter website](https://jupyter.org) +- [Online Demo at jupyter.org/try](https://jupyter.org/try) +- [Documentation for Jupyter notebook](https://jupyter-notebook.readthedocs.io/en/latest/) +- [Korean Version of Installation](https://github.com/ChungJooHo/Jupyter_Kor_doc/) +- [Documentation for Project Jupyter](https://jupyter.readthedocs.io/en/latest/index.html) +- [Issues](https://github.com/jupyter/notebook/issues) +- [Technical support - Jupyter Google Group](https://discourse.jupyter.org/) + +## About the Jupyter Development Team + +The Jupyter Development Team is the set of all contributors to the Jupyter project. +This includes all of the Jupyter subprojects. + +The core team that coordinates development on GitHub can be found here: +https://github.com/jupyter/. + +## Our Copyright Policy + +Jupyter uses a shared copyright model. Each contributor maintains copyright +over their contributions to Jupyter. But, it is important to note that these +contributions are typically only changes to the repositories. Thus, the Jupyter +source code, in its entirety is not the copyright of any single person or +institution. Instead, it is the collective copyright of the entire Jupyter +Development Team. If individual contributors want to maintain a record of what +changes/contributions they have specific copyright on, they should indicate +their copyright in the commit message of the change, when they commit the +change to one of the Jupyter repositories. + +With this in mind, the following banner should be used in any source code file +to indicate the copyright and license terms: + +``` +# Copyright (c) Jupyter Development Team. +# Distributed under the terms of the Modified BSD License. +``` diff --git a/src/RELEASE.md b/src/RELEASE.md new file mode 100644 index 000000000..1da5a72ee --- /dev/null +++ b/src/RELEASE.md @@ -0,0 +1,40 @@ +# Releasing Jupyter Notebook + +## Using `jupyter_releaser` + +The recommended way to make a release is to use [`jupyter_releaser`](https://jupyter-releaser.readthedocs.io/en/latest/get_started/making_release_from_repo.html). + +## Manual Release + +To create a manual release, perform the following steps: + +### Set up + +```bash +pip install hatch twine +git pull origin $(git branch --show-current) +git clean -dffx +``` + +### Update the version and apply the tag + +```bash +echo "Enter new version" +read new_version +hatch version ${new_version} +git tag -a ${new_version} -m "Release ${new_version}" +``` + +### Build the artifacts + +```bash +rm -rf dist +hatch build +``` + +### Publish the artifacts to pypi + +```bash +twine check dist/* +twine upload dist/* +``` diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 000000000..38e58963b --- /dev/null +++ b/src/__init__.py @@ -0,0 +1,19 @@ +from __future__ import annotations + +from typing import Any + +from ._version import __version__, version_info # noqa: F401 + + +def _jupyter_server_extension_paths() -> list[dict[str, str]]: + return [{"module": "notebook"}] + + +def _jupyter_server_extension_points() -> list[dict[str, Any]]: + from .app import JupyterNotebookApp + + return [{"module": "notebook", "app": JupyterNotebookApp}] + + +def _jupyter_labextension_paths() -> list[dict[str, str]]: + return [{"src": "labextension", "dest": "@jupyter-notebook/lab-extension"}] diff --git a/src/__main__.py b/src/__main__.py new file mode 100644 index 000000000..403106406 --- /dev/null +++ b/src/__main__.py @@ -0,0 +1,7 @@ +"""CLI entry point for notebook.""" + +import sys + +from notebook.app import main + +sys.exit(main()) # type:ignore[no-untyped-call] diff --git a/src/_version.py b/src/_version.py new file mode 100644 index 000000000..902656f48 --- /dev/null +++ b/src/_version.py @@ -0,0 +1,40 @@ +"""Version info for notebook.""" + +# Copyright (c) Jupyter Development Team. +# Distributed under the terms of the Modified BSD License. +import re +from collections import namedtuple + +# Use "hatch version xx.yy.zz" to handle version changes +__version__ = "7.6.0a0" + +# PEP440 version parser +_version_regex = re.compile( + r""" + (?P\d+) + \. + (?P\d+) + \. + (?P\d+) + (?P((a|b|rc|\.dev)))? + (?P\d+)? + """, + re.VERBOSE, +) + +_version_fields = _version_regex.match(__version__).groupdict() # type:ignore[union-attr] + +VersionInfo = namedtuple("VersionInfo", ["major", "minor", "micro", "releaselevel", "serial"]) # noqa: PYI024 + +version_info = VersionInfo( + *[ + field + for field in ( + int(_version_fields["major"]), + int(_version_fields["minor"]), + int(_version_fields["micro"]), + _version_fields["releaselevel"] or "", + _version_fields["serial"] or "", + ) + ] +) diff --git a/src/app.py b/src/app.py new file mode 100644 index 000000000..0dd84e984 --- /dev/null +++ b/src/app.py @@ -0,0 +1,369 @@ +"""Jupyter notebook application.""" + +from __future__ import annotations + +import os +import re +import typing as t +from pathlib import Path + +from jupyter_client.utils import ensure_async # type:ignore[attr-defined] +from jupyter_core.application import base_aliases +from jupyter_core.paths import jupyter_config_dir +from jupyter_server.base.handlers import JupyterHandler +from jupyter_server.extension.handler import ( + ExtensionHandlerJinjaMixin, + ExtensionHandlerMixin, +) +from jupyter_server.serverapp import flags +from jupyter_server.utils import url_escape, url_is_absolute +from jupyter_server.utils import url_path_join as ujoin +from jupyterlab.commands import ( # type:ignore[import-untyped] + get_app_dir, + get_user_settings_dir, + get_workspaces_dir, +) +from jupyterlab_server import LabServerApp +from jupyterlab_server.config import ( # type:ignore[attr-defined] + LabConfig, + get_page_config, + recursive_update, +) +from jupyterlab_server.handlers import _camelCase, is_url +from notebook_shim.shim import NotebookConfigShimMixin # type:ignore[import-untyped] +from tornado import web +from traitlets import Bool, Unicode, default +from traitlets.config.loader import Config + +from ._version import __version__ + +HERE = Path(__file__).parent.resolve() + +Flags = dict[t.Union[str, tuple[str, ...]], tuple[t.Union[dict[str, t.Any], Config], str]] + +app_dir = Path(get_app_dir()) +version = __version__ + +# mypy: disable-error-code="no-untyped-call" + + +class NotebookBaseHandler(ExtensionHandlerJinjaMixin, ExtensionHandlerMixin, JupyterHandler): + """The base notebook API handler.""" + + @property + def custom_css(self) -> t.Any: + return self.settings.get("custom_css", True) + + def get_page_config(self) -> dict[str, t.Any]: + """Get the page config.""" + config = LabConfig() + app: JupyterNotebookApp = self.extensionapp # type:ignore[assignment] + base_url = self.settings.get("base_url", "/") + page_config_data = self.settings.setdefault("page_config_data", {}) + page_config = { + **page_config_data, + "appVersion": version, + "baseUrl": self.base_url, + "terminalsAvailable": self.settings.get("terminals_available", False), + "token": self.settings["token"], + "fullStaticUrl": ujoin(self.base_url, "static", self.name), + "frontendUrl": ujoin(self.base_url, "/"), + "exposeAppInBrowser": app.expose_app_in_browser, + } + + server_root = self.settings.get("server_root_dir", "") + server_root = server_root.replace(os.sep, "/") + server_root = os.path.normpath(Path(server_root).expanduser()) + try: + # Remove the server_root from pref dir + if self.serverapp.preferred_dir != server_root: + page_config["preferredPath"] = "/" + os.path.relpath( + self.serverapp.preferred_dir, server_root + ) + else: + page_config["preferredPath"] = "/" + except Exception: + page_config["preferredPath"] = "/" + + mathjax_config = self.settings.get("mathjax_config", "TeX-AMS_HTML-full,Safe") + # TODO Remove CDN usage. + mathjax_url = self.settings.get( + "mathjax_url", + "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js", + ) + if not url_is_absolute(mathjax_url) and not mathjax_url.startswith(self.base_url): + mathjax_url = ujoin(self.base_url, mathjax_url) + + page_config.setdefault("mathjaxConfig", mathjax_config) + page_config.setdefault("fullMathjaxUrl", mathjax_url) + page_config.setdefault("jupyterConfigDir", jupyter_config_dir()) + + # Put all our config in page_config + for name in config.trait_names(): + page_config[_camelCase(name)] = getattr(app, name) + + # Add full versions of all the urls + for name in config.trait_names(): + if not name.endswith("_url"): + continue + full_name = _camelCase("full_" + name) + full_url = getattr(app, name) + if not is_url(full_url): + # Relative URL will be prefixed with base_url + full_url = ujoin(base_url, full_url) + page_config[full_name] = full_url + + labextensions_path = app.extra_labextensions_path + app.labextensions_path + recursive_update( + page_config, + get_page_config( + labextensions_path, + logger=self.log, + ), + ) + + # modify page config with custom hook + page_config_hook = self.settings.get("page_config_hook", None) + if page_config_hook: + page_config = page_config_hook(self, page_config) + + return page_config + + +class TreeHandler(NotebookBaseHandler): + """A tree page handler.""" + + @web.authenticated + async def get(self, path: str = "") -> None: + """ + Display appropriate page for given path. + + - A directory listing is shown if path is a directory + - Redirected to notebook page if path is a notebook + - Render the raw file if path is any other file + """ + path = path.strip("/") + cm = self.contents_manager + + if await ensure_async(cm.dir_exists(path=path)): + if await ensure_async(cm.is_hidden(path)) and not cm.allow_hidden: + self.log.info("Refusing to serve hidden directory, via 404 Error") + raise web.HTTPError(404) + + # Set treePath for routing to the directory + page_config = self.get_page_config() + page_config["treePath"] = path + + tpl = self.render_template("tree.html", page_config=page_config) + return self.write(tpl) + if await ensure_async(cm.file_exists(path)): + # it's not a directory, we have redirecting to do + model = await ensure_async(cm.get(path, content=False)) + if model["type"] == "notebook": + url = ujoin(self.base_url, "notebooks", url_escape(path)) + else: + # Return raw content if file is not a notebook + url = ujoin(self.base_url, "files", url_escape(path)) + self.log.debug("Redirecting %s to %s", self.request.path, url) + self.redirect(url) + return None + raise web.HTTPError(404) + + +class ConsoleHandler(NotebookBaseHandler): + """A console page handler.""" + + @web.authenticated + def get(self, path: str | None = None) -> t.Any: # noqa: ARG002 + """Get the console page.""" + tpl = self.render_template("consoles.html", page_config=self.get_page_config()) + return self.write(tpl) + + +class TerminalHandler(NotebookBaseHandler): + """A terminal page handler.""" + + @web.authenticated + def get(self, path: str | None = None) -> t.Any: # noqa: ARG002 + """Get the terminal page.""" + tpl = self.render_template("terminals.html", page_config=self.get_page_config()) + return self.write(tpl) + + +class FileHandler(NotebookBaseHandler): + """A file page handler.""" + + @web.authenticated + def get(self, path: str | None = None) -> t.Any: # noqa: ARG002 + """Get the file page.""" + tpl = self.render_template("edit.html", page_config=self.get_page_config()) + return self.write(tpl) + + +class NotebookHandler(NotebookBaseHandler): + """A notebook page handler.""" + + @web.authenticated + async def get(self, path: str = "") -> t.Any: + """Get the notebook page. Redirect if it's a directory.""" + path = path.strip("/") + cm = self.contents_manager + + if await ensure_async(cm.dir_exists(path=path)): + url = ujoin(self.base_url, "tree", url_escape(path)) + self.log.debug("Redirecting %s to %s since path is a directory", self.request.path, url) + self.redirect(url) + return None + tpl = self.render_template("notebooks.html", page_config=self.get_page_config()) + return self.write(tpl) + + +class CustomCssHandler(NotebookBaseHandler): + """A custom CSS handler.""" + + @web.authenticated + def get(self) -> t.Any: + """Get the custom css file.""" + + self.set_header("Content-Type", "text/css") + page_config = self.get_page_config() + custom_css_file = f"{page_config['jupyterConfigDir']}/custom/custom.css" + + if not Path(custom_css_file).is_file(): + static_path_root = re.match("^(.*?)static", page_config["staticDir"]) + if static_path_root is not None: + custom_dir = static_path_root.groups()[0] + custom_css_file = f"{custom_dir}custom/custom.css" + + with Path(custom_css_file).open() as css_f: + return self.write(css_f.read()) + + +aliases = dict(base_aliases) + + +class JupyterNotebookApp(NotebookConfigShimMixin, LabServerApp): # type:ignore[misc] + """The notebook server extension app.""" + + name = "notebook" + app_name = "Jupyter Notebook" + description = "Jupyter Notebook - A web-based notebook environment for interactive computing" + version = version + app_version = Unicode(version, help="The version of the application.") + extension_url = "/" + default_url = Unicode("/tree", config=True, help="The default URL to redirect to from `/`") + file_url_prefix = "/tree" + load_other_extensions = True + app_dir = app_dir + subcommands: dict[str, t.Any] = {} + + expose_app_in_browser = Bool( + False, + config=True, + help="Whether to expose the global app instance to browser via window.jupyterapp", + ) + + custom_css = Bool( + True, + config=True, + help="""Whether custom CSS is loaded on the page. + Defaults to True and custom CSS is loaded. + """, + ) + + flags: Flags = flags # type:ignore[assignment] + flags["expose-app-in-browser"] = ( + {"JupyterNotebookApp": {"expose_app_in_browser": True}}, + "Expose the global app instance to browser via window.jupyterapp.", + ) + + flags["custom-css"] = ( + {"JupyterNotebookApp": {"custom_css": True}}, + "Load custom CSS in template html files. Default is True", + ) + + @default("static_dir") + def _default_static_dir(self) -> str: + return str(HERE / "static") + + @default("templates_dir") + def _default_templates_dir(self) -> str: + return str(HERE / "templates") + + @default("app_settings_dir") + def _default_app_settings_dir(self) -> str: + return str(app_dir / "settings") + + @default("schemas_dir") + def _default_schemas_dir(self) -> str: + return str(app_dir / "schemas") + + @default("themes_dir") + def _default_themes_dir(self) -> str: + return str(app_dir / "themes") + + @default("user_settings_dir") + def _default_user_settings_dir(self) -> str: + return t.cast(str, get_user_settings_dir()) + + @default("workspaces_dir") + def _default_workspaces_dir(self) -> str: + return t.cast(str, get_workspaces_dir()) + + def _prepare_templates(self) -> None: + super(LabServerApp, self)._prepare_templates() + self.jinja2_env.globals.update(custom_css=self.custom_css) # type:ignore[has-type] + + def server_extension_is_enabled(self, extension: str) -> bool: + """Check if server extension is enabled.""" + if self.serverapp is None: + return False + try: + extension_enabled = ( + self.serverapp.extension_manager.extensions[extension].enabled is True + ) + except (AttributeError, KeyError, TypeError): + extension_enabled = False + return extension_enabled + + def initialize_handlers(self) -> None: + """Initialize handlers.""" + assert self.serverapp is not None # noqa: S101 + page_config = self.serverapp.web_app.settings.setdefault("page_config_data", {}) + nbclassic_enabled = self.server_extension_is_enabled("nbclassic") + page_config["nbclassic_enabled"] = nbclassic_enabled + + # If running under JupyterHub, add more metadata. + if "hub_prefix" in self.serverapp.tornado_settings: + tornado_settings = self.serverapp.tornado_settings + hub_prefix = tornado_settings["hub_prefix"] + page_config["hubPrefix"] = hub_prefix + page_config["hubHost"] = tornado_settings["hub_host"] + page_config["hubUser"] = tornado_settings["user"] + page_config["shareUrl"] = ujoin(hub_prefix, "user-redirect") + # Assume the server_name property indicates running JupyterHub 1.0. + if hasattr(self.serverapp, "server_name"): + page_config["hubServerName"] = self.serverapp.server_name + # avoid setting API token in page config + # $JUPYTERHUB_API_TOKEN identifies the server, not the client + # but at least make sure we don't use the token + # if the serverapp set one + page_config["token"] = "" + + self.handlers.append(("/tree(.*)", TreeHandler)) + self.handlers.append(("/notebooks(.*)", NotebookHandler)) + self.handlers.append(("/edit(.*)", FileHandler)) + self.handlers.append(("/consoles/(.*)", ConsoleHandler)) + self.handlers.append(("/terminals/(.*)", TerminalHandler)) + self.handlers.append(("/custom/custom.css", CustomCssHandler)) + super().initialize_handlers() + + def initialize(self, argv: list[str] | None = None) -> None: # noqa: ARG002 + """Subclass because the ExtensionApp.initialize() method does not take arguments""" + super().initialize() + + +main = launch_new_instance = JupyterNotebookApp.launch_instance + +if __name__ == "__main__": + main() diff --git a/src/app/.ipynb_checkpoints/index.template-checkpoint.js b/src/app/.ipynb_checkpoints/index.template-checkpoint.js new file mode 100644 index 000000000..e5d8a5b26 --- /dev/null +++ b/src/app/.ipynb_checkpoints/index.template-checkpoint.js @@ -0,0 +1,244 @@ +// Copyright (c) Jupyter Development Team. +// Distributed under the terms of the Modified BSD License. + +// Inspired by: https://github.com/jupyterlab/jupyterlab/blob/master/dev_mode/index.js + +import { PageConfig, URLExt } from '@jupyterlab/coreutils'; + +import { PluginRegistry } from '@lumino/coreutils'; + +require('./style.js'); +require('./extraStyle.js'); + +function loadScript(url) { + return new Promise((resolve, reject) => { + const newScript = document.createElement('script'); + newScript.onerror = reject; + newScript.onload = resolve; + newScript.async = true; + document.head.appendChild(newScript); + newScript.src = url; + }); +} +async function loadComponent(url, scope) { + await loadScript(url); + + // From MIT-licensed https://github.com/module-federation/module-federation-examples/blob/af043acd6be1718ee195b2511adf6011fba4233c/advanced-api/dynamic-remotes/app1/src/App.js#L6-L12 + // eslint-disable-next-line no-undef + await __webpack_init_sharing__('default'); + const container = window._JUPYTERLAB[scope]; + // Initialize the container, it may provide shared modules and may need ours + // eslint-disable-next-line no-undef + await container.init(__webpack_share_scopes__.default); +} + +async function createModule(scope, module) { + try { + const factory = await window._JUPYTERLAB[scope].get(module); + const instance = factory(); + instance.__scope__ = scope; + return instance; + } catch (e) { + console.warn( + `Failed to create module: package: ${scope}; module: ${module}` + ); + throw e; + } +} + +/** + * The main function + */ +async function main() { + const mimeExtensionsMods = [ + {{#each notebook_mime_extensions}} + require('{{ @key }}'), + {{/each}} + ]; + const mimeExtensions = await Promise.all(mimeExtensionsMods); + + // Load the base plugins available on all pages + let baseMods = [ + {{#each notebook_plugins}} + {{#if (ispage @key '/')}} + {{{ list_plugins }}} + {{/if}} + {{/each}} + ]; + + const page = `/${PageConfig.getOption('notebookPage')}`; + switch (page) { + {{#each notebook_plugins}} + {{#unless (ispage @key '/')}} + // list all the other plugins grouped by page + case '{{ @key }}': { + baseMods = baseMods.concat([ + {{{ list_plugins }}} + ]); + break; + } + {{/unless}} + {{/each}} + } + + // populate the list of disabled extensions + const disabled = []; + const availablePlugins = []; + + /** + * Iterate over active plugins in an extension. + * + * #### Notes + * This also populates the disabled + */ + function* activePlugins(extension) { + // Handle commonjs or es2015 modules + let exports; + if (Object.prototype.hasOwnProperty.call(extension, '__esModule')) { + exports = extension.default; + } else { + // CommonJS exports. + exports = extension; + } + + let plugins = Array.isArray(exports) ? exports : [exports]; + for (let plugin of plugins) { + const isDisabled = PageConfig.Extension.isDisabled(plugin.id); + availablePlugins.push({ + id: plugin.id, + description: plugin.description, + requires: plugin.requires ?? [], + optional: plugin.optional ?? [], + provides: plugin.provides ?? null, + autoStart: plugin.autoStart, + enabled: !isDisabled, + extension: extension.__scope__ + }); + if (isDisabled) { + disabled.push(plugin.id); + continue; + } + yield plugin; + } + } + + const extension_data = JSON.parse( + PageConfig.getOption('federated_extensions') + ); + + const mods = []; + const federatedExtensionPromises = []; + const federatedMimeExtensionPromises = []; + const federatedStylePromises = []; + + const extensions = await Promise.allSettled( + extension_data.map(async data => { + await loadComponent( + `${URLExt.join( + PageConfig.getOption('fullLabextensionsUrl'), + data.name, + data.load + )}`, + data.name + ); + return data; + }) + ); + + extensions.forEach(p => { + if (p.status === 'rejected') { + // There was an error loading the component + console.error(p.reason); + return; + } + + const data = p.value; + if (data.extension) { + federatedExtensionPromises.push(createModule(data.name, data.extension)); + } + if (data.mimeExtension) { + federatedMimeExtensionPromises.push( + createModule(data.name, data.mimeExtension) + ); + } + if (data.style && !PageConfig.Extension.isDisabled(data.name)) { + federatedStylePromises.push(createModule(data.name, data.style)); + } + }); + + // Add the base frontend extensions + const baseFrontendMods = await Promise.all(baseMods); + baseFrontendMods.forEach(p => { + for (let plugin of activePlugins(p)) { + mods.push(plugin); + } + }); + + // Add the federated extensions. + const federatedExtensions = await Promise.allSettled( + federatedExtensionPromises + ); + federatedExtensions.forEach(p => { + if (p.status === 'fulfilled') { + for (let plugin of activePlugins(p.value)) { + mods.push(plugin); + } + } else { + console.error(p.reason); + } + }); + + // Add the federated mime extensions. + const federatedMimeExtensions = await Promise.allSettled( + federatedMimeExtensionPromises + ); + federatedMimeExtensions.forEach(p => { + if (p.status === 'fulfilled') { + for (let plugin of activePlugins(p.value)) { + mimeExtensions.push(plugin); + } + } else { + console.error(p.reason); + } + }); + + // Load all federated component styles and log errors for any that do not + (await Promise.allSettled(federatedStylePromises)) + .filter(({ status }) => status === 'rejected') + .forEach(({ reason }) => { + console.error(reason); + }); + + // Set the list of base notebook multi-page plugins so the app is aware of all + // its built-in plugins even if they are not loaded on the current page. + // For example this is useful so the Settings Editor can list the debugger + // plugin even if the debugger is only loaded on the notebook page. + PageConfig.setOption('allPlugins', '{{{ json notebook_plugins }}}'); + + + const pluginRegistry = new PluginRegistry(); + const NotebookApp = require('@jupyter-notebook/application').NotebookApp; + + pluginRegistry.registerPlugins(mods); + const IServiceManager = require('@jupyterlab/services').IServiceManager; + const serviceManager = await pluginRegistry.resolveRequiredService(IServiceManager); + + const app = new NotebookApp({ + pluginRegistry, + serviceManager, + mimeExtensions, + availablePlugins + }); + + // Expose global app instance when in dev mode or when toggled explicitly. + const exposeAppInBrowser = + (PageConfig.getOption('exposeAppInBrowser') || '').toLowerCase() === 'true'; + + if (exposeAppInBrowser) { + window.jupyterapp = app; + } + + await app.start(); +} + +window.addEventListener('load', main); diff --git a/src/app/.ipynb_checkpoints/rspack.config-checkpoint.js b/src/app/.ipynb_checkpoints/rspack.config-checkpoint.js new file mode 100644 index 000000000..d54f40f4c --- /dev/null +++ b/src/app/.ipynb_checkpoints/rspack.config-checkpoint.js @@ -0,0 +1,274 @@ +// Copyright (c) Jupyter Development Team. +// Distributed under the terms of the Modified BSD License. + +// Heavily inspired (and slightly tweaked) from: +// https://github.com/jupyterlab/jupyterlab/blob/master/examples/federated/core_package/rspack.config.js + +const fs = require('fs-extra'); +const path = require('path'); +const rspack = require('@rspack/core'); +const merge = require('webpack-merge').default; +const Handlebars = require('handlebars'); +const { ModuleFederationPlugin } = rspack.container; +const BundleAnalyzerPlugin = + require('webpack-bundle-analyzer').BundleAnalyzerPlugin; + +const Build = require('@jupyterlab/builder').Build; +const WPPlugin = require('@jupyterlab/builder').WPPlugin; +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const baseConfig = require('@jupyterlab/builder/lib/webpack.config.base'); + +const data = require('./package.json'); + +const names = Object.keys(data.dependencies).filter((name) => { + const packageData = require(path.join(name, 'package.json')); + return packageData.jupyterlab !== undefined; +}); + +// Ensure a clear build directory. +const buildDir = path.resolve(__dirname, 'build'); +if (fs.existsSync(buildDir)) { + fs.removeSync(buildDir); +} +fs.ensureDirSync(buildDir); + +// Handle the extensions. +const { mimeExtensions, plugins } = data.jupyterlab; + +// Create the list of extension packages from the package.json metadata +const extensionPackages = new Set(); +Object.keys(plugins).forEach((page) => { + const pagePlugins = plugins[page]; + Object.keys(pagePlugins).forEach((name) => { + extensionPackages.add(name); + }); +}); + +Handlebars.registerHelper('json', function (context) { + return JSON.stringify(context); +}); + +// custom help to check if a page corresponds to a value +Handlebars.registerHelper('ispage', function (key, page) { + return key === page; +}); + +// custom helper to load the plugins on the index page +Handlebars.registerHelper('list_plugins', function () { + let str = ''; + const page = this; + Object.keys(this).forEach((extension) => { + const plugin = page[extension]; + if (plugin === true) { + str += `require(\'${extension}\'),\n `; + } else if (Array.isArray(plugin)) { + const plugins = plugin.map((p) => `'${p}',`).join('\n'); + str += ` + require(\'${extension}\').default.filter(({id}) => [ + ${plugins} + ].includes(id)), + `; + } + }); + return str; +}); + +// Create the entry point and other assets in build directory. +const source = fs.readFileSync('index.template.js').toString(); +const template = Handlebars.compile(source); +const extData = { + notebook_plugins: plugins, + notebook_mime_extensions: mimeExtensions, +}; +const indexOut = template(extData); +fs.writeFileSync(path.join(buildDir, 'index.js'), indexOut); + +// Copy extra files +const cssImports = path.resolve(__dirname, 'style.js'); +fs.copySync(cssImports, path.resolve(buildDir, 'extraStyle.js')); + +const extras = Build.ensureAssets({ + packageNames: names, + output: buildDir, + schemaOutput: path.resolve(__dirname, '..', 'notebook'), +}); + +/** + * Create the rspack ``shared`` configuration + */ +function createShared(packageData) { + // Set up module federation sharing config + const shared = {}; + + // Make sure any resolutions are shared + for (let [pkg, requiredVersion] of Object.entries(packageData.resolutions)) { + shared[pkg] = { requiredVersion }; + } + + // Add any extension packages that are not in resolutions (i.e., installed from npm) + for (let pkg of extensionPackages) { + if (!shared[pkg]) { + shared[pkg] = { + requiredVersion: require(`${pkg}/package.json`).version, + }; + } + } + + // Add dependencies and sharedPackage config from extension packages if they + // are not already in the shared config. This means that if there is a + // conflict, the resolutions package version is the one that is shared. + const extraShared = []; + for (let pkg of extensionPackages) { + let pkgShared = {}; + let { + dependencies = {}, + jupyterlab: { sharedPackages = {} } = {}, + } = require(`${pkg}/package.json`); + for (let [dep, requiredVersion] of Object.entries(dependencies)) { + if (!shared[dep]) { + pkgShared[dep] = { requiredVersion }; + } + } + + // Overwrite automatic dependency sharing with custom sharing config + for (let [dep, config] of Object.entries(sharedPackages)) { + if (config === false) { + delete pkgShared[dep]; + } else { + if ('bundled' in config) { + config.import = config.bundled; + delete config.bundled; + } + pkgShared[dep] = config; + } + } + extraShared.push(pkgShared); + } + + // Now merge the extra shared config + const mergedShare = {}; + for (let sharedConfig of extraShared) { + for (let [pkg, config] of Object.entries(sharedConfig)) { + // Do not override the basic share config from resolutions + if (shared[pkg]) { + continue; + } + + // Add if we haven't seen the config before + if (!mergedShare[pkg]) { + mergedShare[pkg] = config; + continue; + } + + // Choose between the existing config and this new config. We do not try + // to merge configs, which may yield a config no one wants + let oldConfig = mergedShare[pkg]; + + // if the old one has import: false, use the new one + if (oldConfig.import === false) { + mergedShare[pkg] = config; + } + } + } + + Object.assign(shared, mergedShare); + + // Transform any file:// requiredVersion to the version number from the + // imported package. This assumes (for simplicity) that the version we get + // importing was installed from the file. + for (let [pkg, { requiredVersion }] of Object.entries(shared)) { + if (requiredVersion && requiredVersion.startsWith('file:')) { + shared[pkg].requiredVersion = require(`${pkg}/package.json`).version; + } + } + + // Add singleton package information + for (let pkg of packageData.jupyterlab.singletonPackages) { + if (shared[pkg]) { + shared[pkg].singleton = true; + } + } + + return shared; +} + +// Make a bootstrap entrypoint +const entryPoint = path.join(buildDir, 'bootstrap.js'); +const bootstrap = 'import("./index.js");'; +fs.writeFileSync(entryPoint, bootstrap); + +if (process.env.NODE_ENV === 'production') { + baseConfig.mode = 'production'; +} + +if (process.argv.includes('--analyze')) { + extras.push(new BundleAnalyzerPlugin()); +} + +const htmlPlugins = []; +['consoles', 'edit', 'error', 'notebooks', 'terminals', 'tree'].forEach( + (name) => { + htmlPlugins.push( + new HtmlWebpackPlugin({ + chunksSortMode: 'none', + template: path.join( + path.resolve('./templates'), + `${name}_template.html` + ), + title: name, + filename: path.join( + path.resolve(__dirname, '..', 'notebook/templates'), + `${name}.html` + ), + }) + ); + } +); + +module.exports = [ + merge(baseConfig, { + mode: 'development', + entry: ['./publicpath.js', './' + path.relative(__dirname, entryPoint)], + output: { + path: path.resolve(__dirname, '..', 'notebook/static/'), + publicPath: '{{page_config.fullStaticUrl}}/', + library: { + type: 'var', + name: ['_JUPYTERLAB', 'CORE_OUTPUT'], + }, + filename: '[name].[contenthash].js', + }, + optimization: { + splitChunks: { + chunks: 'all', + cacheGroups: { + jlab_core: { + test: /[\\/]node_modules[\\/]@(jupyterlab|jupyter-notebook|lumino(?!\/datagrid))[\\/]/, + name: 'notebook_core', + }, + }, + }, + }, + resolve: { + fallback: { util: false }, + }, + plugins: [ + ...htmlPlugins, + new WPPlugin.JSONLicenseWebpackPlugin({ + excludedPackageTest: (packageName) => + packageName === '@jupyter-notebook/app', + }), + new ModuleFederationPlugin({ + library: { + type: 'var', + name: ['_JUPYTERLAB', 'CORE_LIBRARY_FEDERATION'], + }, + name: 'CORE_FEDERATION', + shared: createShared(data), + }), + ], + }), +].concat(extras); + +const logPath = path.join(buildDir, 'build_log.json'); +fs.writeFileSync(logPath, JSON.stringify(module.exports, null, ' ')); diff --git a/src/app/index.template.js b/src/app/index.template.js new file mode 100644 index 000000000..e5d8a5b26 --- /dev/null +++ b/src/app/index.template.js @@ -0,0 +1,244 @@ +// Copyright (c) Jupyter Development Team. +// Distributed under the terms of the Modified BSD License. + +// Inspired by: https://github.com/jupyterlab/jupyterlab/blob/master/dev_mode/index.js + +import { PageConfig, URLExt } from '@jupyterlab/coreutils'; + +import { PluginRegistry } from '@lumino/coreutils'; + +require('./style.js'); +require('./extraStyle.js'); + +function loadScript(url) { + return new Promise((resolve, reject) => { + const newScript = document.createElement('script'); + newScript.onerror = reject; + newScript.onload = resolve; + newScript.async = true; + document.head.appendChild(newScript); + newScript.src = url; + }); +} +async function loadComponent(url, scope) { + await loadScript(url); + + // From MIT-licensed https://github.com/module-federation/module-federation-examples/blob/af043acd6be1718ee195b2511adf6011fba4233c/advanced-api/dynamic-remotes/app1/src/App.js#L6-L12 + // eslint-disable-next-line no-undef + await __webpack_init_sharing__('default'); + const container = window._JUPYTERLAB[scope]; + // Initialize the container, it may provide shared modules and may need ours + // eslint-disable-next-line no-undef + await container.init(__webpack_share_scopes__.default); +} + +async function createModule(scope, module) { + try { + const factory = await window._JUPYTERLAB[scope].get(module); + const instance = factory(); + instance.__scope__ = scope; + return instance; + } catch (e) { + console.warn( + `Failed to create module: package: ${scope}; module: ${module}` + ); + throw e; + } +} + +/** + * The main function + */ +async function main() { + const mimeExtensionsMods = [ + {{#each notebook_mime_extensions}} + require('{{ @key }}'), + {{/each}} + ]; + const mimeExtensions = await Promise.all(mimeExtensionsMods); + + // Load the base plugins available on all pages + let baseMods = [ + {{#each notebook_plugins}} + {{#if (ispage @key '/')}} + {{{ list_plugins }}} + {{/if}} + {{/each}} + ]; + + const page = `/${PageConfig.getOption('notebookPage')}`; + switch (page) { + {{#each notebook_plugins}} + {{#unless (ispage @key '/')}} + // list all the other plugins grouped by page + case '{{ @key }}': { + baseMods = baseMods.concat([ + {{{ list_plugins }}} + ]); + break; + } + {{/unless}} + {{/each}} + } + + // populate the list of disabled extensions + const disabled = []; + const availablePlugins = []; + + /** + * Iterate over active plugins in an extension. + * + * #### Notes + * This also populates the disabled + */ + function* activePlugins(extension) { + // Handle commonjs or es2015 modules + let exports; + if (Object.prototype.hasOwnProperty.call(extension, '__esModule')) { + exports = extension.default; + } else { + // CommonJS exports. + exports = extension; + } + + let plugins = Array.isArray(exports) ? exports : [exports]; + for (let plugin of plugins) { + const isDisabled = PageConfig.Extension.isDisabled(plugin.id); + availablePlugins.push({ + id: plugin.id, + description: plugin.description, + requires: plugin.requires ?? [], + optional: plugin.optional ?? [], + provides: plugin.provides ?? null, + autoStart: plugin.autoStart, + enabled: !isDisabled, + extension: extension.__scope__ + }); + if (isDisabled) { + disabled.push(plugin.id); + continue; + } + yield plugin; + } + } + + const extension_data = JSON.parse( + PageConfig.getOption('federated_extensions') + ); + + const mods = []; + const federatedExtensionPromises = []; + const federatedMimeExtensionPromises = []; + const federatedStylePromises = []; + + const extensions = await Promise.allSettled( + extension_data.map(async data => { + await loadComponent( + `${URLExt.join( + PageConfig.getOption('fullLabextensionsUrl'), + data.name, + data.load + )}`, + data.name + ); + return data; + }) + ); + + extensions.forEach(p => { + if (p.status === 'rejected') { + // There was an error loading the component + console.error(p.reason); + return; + } + + const data = p.value; + if (data.extension) { + federatedExtensionPromises.push(createModule(data.name, data.extension)); + } + if (data.mimeExtension) { + federatedMimeExtensionPromises.push( + createModule(data.name, data.mimeExtension) + ); + } + if (data.style && !PageConfig.Extension.isDisabled(data.name)) { + federatedStylePromises.push(createModule(data.name, data.style)); + } + }); + + // Add the base frontend extensions + const baseFrontendMods = await Promise.all(baseMods); + baseFrontendMods.forEach(p => { + for (let plugin of activePlugins(p)) { + mods.push(plugin); + } + }); + + // Add the federated extensions. + const federatedExtensions = await Promise.allSettled( + federatedExtensionPromises + ); + federatedExtensions.forEach(p => { + if (p.status === 'fulfilled') { + for (let plugin of activePlugins(p.value)) { + mods.push(plugin); + } + } else { + console.error(p.reason); + } + }); + + // Add the federated mime extensions. + const federatedMimeExtensions = await Promise.allSettled( + federatedMimeExtensionPromises + ); + federatedMimeExtensions.forEach(p => { + if (p.status === 'fulfilled') { + for (let plugin of activePlugins(p.value)) { + mimeExtensions.push(plugin); + } + } else { + console.error(p.reason); + } + }); + + // Load all federated component styles and log errors for any that do not + (await Promise.allSettled(federatedStylePromises)) + .filter(({ status }) => status === 'rejected') + .forEach(({ reason }) => { + console.error(reason); + }); + + // Set the list of base notebook multi-page plugins so the app is aware of all + // its built-in plugins even if they are not loaded on the current page. + // For example this is useful so the Settings Editor can list the debugger + // plugin even if the debugger is only loaded on the notebook page. + PageConfig.setOption('allPlugins', '{{{ json notebook_plugins }}}'); + + + const pluginRegistry = new PluginRegistry(); + const NotebookApp = require('@jupyter-notebook/application').NotebookApp; + + pluginRegistry.registerPlugins(mods); + const IServiceManager = require('@jupyterlab/services').IServiceManager; + const serviceManager = await pluginRegistry.resolveRequiredService(IServiceManager); + + const app = new NotebookApp({ + pluginRegistry, + serviceManager, + mimeExtensions, + availablePlugins + }); + + // Expose global app instance when in dev mode or when toggled explicitly. + const exposeAppInBrowser = + (PageConfig.getOption('exposeAppInBrowser') || '').toLowerCase() === 'true'; + + if (exposeAppInBrowser) { + window.jupyterapp = app; + } + + await app.start(); +} + +window.addEventListener('load', main); diff --git a/src/app/package.json b/src/app/package.json new file mode 100644 index 000000000..1f2d872e6 --- /dev/null +++ b/src/app/package.json @@ -0,0 +1,443 @@ +{ + "name": "@jupyter-notebook/app", + "version": "7.6.0-alpha.0", + "private": true, + "scripts": { + "build": "rspack", + "build:prod": "rspack --config ./rspack.prod.config.js", + "clean": "rimraf build && jlpm run clean:static", + "clean:static": "rimraf -g \"../notebook/static/!(favicons)\"", + "watch": "rspack --watch --config rspack.config.js" + }, + "resolutions": { + "@codemirror/state": "~6.5.2", + "@codemirror/view": "~6.38.1", + "@jupyter-notebook/application": "~7.6.0-alpha.0", + "@jupyter-notebook/application-extension": "~7.6.0-alpha.0", + "@jupyter-notebook/console-extension": "~7.6.0-alpha.0", + "@jupyter-notebook/docmanager-extension": "~7.6.0-alpha.0", + "@jupyter-notebook/documentsearch-extension": "~7.6.0-alpha.0", + "@jupyter-notebook/help-extension": "~7.6.0-alpha.0", + "@jupyter-notebook/notebook-extension": "~7.6.0-alpha.0", + "@jupyter-notebook/terminal-extension": "~7.6.0-alpha.0", + "@jupyter-notebook/tree": "~7.6.0-alpha.0", + "@jupyter-notebook/tree-extension": "~7.6.0-alpha.0", + "@jupyter-notebook/ui-components": "~7.6.0-alpha.0", + "@jupyter/react-components": "~0.16.7", + "@jupyter/web-components": "~0.16.7", + "@jupyter/ydoc": "~3.1.0", + "@jupyterlab/application": "~4.6.0-alpha.0", + "@jupyterlab/application-extension": "~4.6.0-alpha.0", + "@jupyterlab/apputils": "~4.7.0-alpha.0", + "@jupyterlab/apputils-extension": "~4.6.0-alpha.0", + "@jupyterlab/attachments": "~4.6.0-alpha.0", + "@jupyterlab/audio-extension": "~4.6.0-alpha.0", + "@jupyterlab/cell-toolbar": "~4.6.0-alpha.0", + "@jupyterlab/cell-toolbar-extension": "~4.6.0-alpha.0", + "@jupyterlab/celltags-extension": "~4.6.0-alpha.0", + "@jupyterlab/codeeditor": "~4.6.0-alpha.0", + "@jupyterlab/codemirror": "~4.6.0-alpha.0", + "@jupyterlab/codemirror-extension": "~4.6.0-alpha.0", + "@jupyterlab/completer": "~4.6.0-alpha.0", + "@jupyterlab/completer-extension": "~4.6.0-alpha.0", + "@jupyterlab/console": "~4.6.0-alpha.0", + "@jupyterlab/console-extension": "~4.6.0-alpha.0", + "@jupyterlab/coreutils": "~6.6.0-alpha.0", + "@jupyterlab/csvviewer-extension": "~4.6.0-alpha.0", + "@jupyterlab/debugger": "~4.6.0-alpha.0", + "@jupyterlab/debugger-extension": "~4.6.0-alpha.0", + "@jupyterlab/docmanager": "~4.6.0-alpha.0", + "@jupyterlab/docmanager-extension": "~4.6.0-alpha.0", + "@jupyterlab/documentsearch": "~4.6.0-alpha.0", + "@jupyterlab/documentsearch-extension": "~4.6.0-alpha.0", + "@jupyterlab/extensionmanager": "~4.6.0-alpha.0", + "@jupyterlab/extensionmanager-extension": "~4.6.0-alpha.0", + "@jupyterlab/filebrowser": "~4.6.0-alpha.0", + "@jupyterlab/filebrowser-extension": "~4.6.0-alpha.0", + "@jupyterlab/fileeditor": "~4.6.0-alpha.0", + "@jupyterlab/fileeditor-extension": "~4.6.0-alpha.0", + "@jupyterlab/help-extension": "~4.6.0-alpha.0", + "@jupyterlab/htmlviewer": "~4.6.0-alpha.0", + "@jupyterlab/htmlviewer-extension": "~4.6.0-alpha.0", + "@jupyterlab/hub-extension": "~4.6.0-alpha.0", + "@jupyterlab/imageviewer": "~4.6.0-alpha.0", + "@jupyterlab/imageviewer-extension": "~4.6.0-alpha.0", + "@jupyterlab/javascript-extension": "~4.6.0-alpha.0", + "@jupyterlab/json-extension": "~4.6.0-alpha.0", + "@jupyterlab/logconsole-extension": "~4.6.0-alpha.0", + "@jupyterlab/lsp": "~4.6.0-alpha.0", + "@jupyterlab/lsp-extension": "~4.6.0-alpha.0", + "@jupyterlab/mainmenu": "~4.6.0-alpha.0", + "@jupyterlab/mainmenu-extension": "~4.6.0-alpha.0", + "@jupyterlab/markdownviewer": "~4.6.0-alpha.0", + "@jupyterlab/markdownviewer-extension": "~4.6.0-alpha.0", + "@jupyterlab/markedparser-extension": "~4.6.0-alpha.0", + "@jupyterlab/mathjax-extension": "~4.6.0-alpha.0", + "@jupyterlab/mermaid": "~4.6.0-alpha.0", + "@jupyterlab/mermaid-extension": "~4.6.0-alpha.0", + "@jupyterlab/metadataform": "~4.6.0-alpha.0", + "@jupyterlab/metadataform-extension": "~4.6.0-alpha.0", + "@jupyterlab/notebook": "~4.6.0-alpha.0", + "@jupyterlab/notebook-extension": "~4.6.0-alpha.0", + "@jupyterlab/observables": "~5.6.0-alpha.0", + "@jupyterlab/outputarea": "~4.6.0-alpha.0", + "@jupyterlab/pdf-extension": "~4.6.0-alpha.0", + "@jupyterlab/pluginmanager-extension": "~4.6.0-alpha.0", + "@jupyterlab/rendermime": "~4.6.0-alpha.0", + "@jupyterlab/rendermime-interfaces": "~3.14.0-alpha.0", + "@jupyterlab/running-extension": "~4.6.0-alpha.0", + "@jupyterlab/services": "~7.6.0-alpha.0", + "@jupyterlab/services-extension": "~4.6.0-alpha.0", + "@jupyterlab/settingeditor": "~4.6.0-alpha.0", + "@jupyterlab/settingeditor-extension": "~4.6.0-alpha.0", + "@jupyterlab/settingregistry": "~4.6.0-alpha.0", + "@jupyterlab/shortcuts-extension": "~5.4.0-alpha.0", + "@jupyterlab/statedb": "~4.6.0-alpha.0", + "@jupyterlab/statusbar": "~4.6.0-alpha.0", + "@jupyterlab/terminal": "~4.6.0-alpha.0", + "@jupyterlab/terminal-extension": "~4.6.0-alpha.0", + "@jupyterlab/theme-dark-extension": "~4.6.0-alpha.0", + "@jupyterlab/theme-dark-high-contrast-extension": "~4.6.0-alpha.0", + "@jupyterlab/theme-light-extension": "~4.6.0-alpha.0", + "@jupyterlab/toc-extension": "~6.6.0-alpha.0", + "@jupyterlab/tooltip": "~4.6.0-alpha.0", + "@jupyterlab/tooltip-extension": "~4.6.0-alpha.0", + "@jupyterlab/translation": "~4.6.0-alpha.0", + "@jupyterlab/translation-extension": "~4.6.0-alpha.0", + "@jupyterlab/ui-components": "~4.6.0-alpha.0", + "@jupyterlab/ui-components-extension": "~4.6.0-alpha.0", + "@jupyterlab/vega5-extension": "~4.6.0-alpha.0", + "@jupyterlab/video-extension": "~4.6.0-alpha.0", + "@lezer/common": "~1.2.1", + "@lezer/highlight": "~1.2.0", + "@lumino/algorithm": "~2.0.4", + "@lumino/application": "~2.4.5", + "@lumino/commands": "~2.3.3", + "@lumino/coreutils": "~2.2.2", + "@lumino/disposable": "~2.1.5", + "@lumino/domutils": "~2.0.4", + "@lumino/dragdrop": "~2.1.7", + "@lumino/messaging": "~2.0.4", + "@lumino/properties": "~2.0.4", + "@lumino/signaling": "~2.1.5", + "@lumino/virtualdom": "~2.0.4", + "@lumino/widgets": "~2.7.2", + "react": "~18.2.0", + "react-dom": "~18.2.0", + "yjs": "~13.6.8" + }, + "dependencies": { + "@jupyter-notebook/application": "^7.6.0-alpha.0", + "@jupyter-notebook/application-extension": "^7.6.0-alpha.0", + "@jupyter-notebook/console-extension": "^7.6.0-alpha.0", + "@jupyter-notebook/docmanager-extension": "^7.6.0-alpha.0", + "@jupyter-notebook/documentsearch-extension": "^7.6.0-alpha.0", + "@jupyter-notebook/help-extension": "^7.6.0-alpha.0", + "@jupyter-notebook/notebook-extension": "^7.6.0-alpha.0", + "@jupyter-notebook/terminal-extension": "^7.6.0-alpha.0", + "@jupyter-notebook/tree": "^7.6.0-alpha.0", + "@jupyter-notebook/tree-extension": "^7.6.0-alpha.0", + "@jupyter-notebook/ui-components": "^7.6.0-alpha.0", + "@jupyterlab/application-extension": "~4.6.0-alpha.0", + "@jupyterlab/apputils-extension": "~4.6.0-alpha.0", + "@jupyterlab/attachments": "~4.6.0-alpha.0", + "@jupyterlab/audio-extension": "~4.6.0-alpha.0", + "@jupyterlab/cell-toolbar-extension": "~4.6.0-alpha.0", + "@jupyterlab/celltags-extension": "~4.6.0-alpha.0", + "@jupyterlab/codemirror": "~4.6.0-alpha.0", + "@jupyterlab/codemirror-extension": "~4.6.0-alpha.0", + "@jupyterlab/completer-extension": "~4.6.0-alpha.0", + "@jupyterlab/console-extension": "~4.6.0-alpha.0", + "@jupyterlab/coreutils": "~6.6.0-alpha.0", + "@jupyterlab/csvviewer-extension": "~4.6.0-alpha.0", + "@jupyterlab/debugger-extension": "~4.6.0-alpha.0", + "@jupyterlab/docmanager-extension": "~4.6.0-alpha.0", + "@jupyterlab/documentsearch-extension": "~4.6.0-alpha.0", + "@jupyterlab/extensionmanager-extension": "~4.6.0-alpha.0", + "@jupyterlab/filebrowser-extension": "~4.6.0-alpha.0", + "@jupyterlab/fileeditor-extension": "~4.6.0-alpha.0", + "@jupyterlab/help-extension": "~4.6.0-alpha.0", + "@jupyterlab/htmlviewer-extension": "~4.6.0-alpha.0", + "@jupyterlab/hub-extension": "~4.6.0-alpha.0", + "@jupyterlab/imageviewer-extension": "~4.6.0-alpha.0", + "@jupyterlab/javascript-extension": "~4.6.0-alpha.0", + "@jupyterlab/json-extension": "~4.6.0-alpha.0", + "@jupyterlab/logconsole-extension": "~4.6.0-alpha.0", + "@jupyterlab/lsp": "~4.6.0-alpha.0", + "@jupyterlab/lsp-extension": "~4.6.0-alpha.0", + "@jupyterlab/mainmenu-extension": "~4.6.0-alpha.0", + "@jupyterlab/markdownviewer-extension": "~4.6.0-alpha.0", + "@jupyterlab/markedparser-extension": "~4.6.0-alpha.0", + "@jupyterlab/mathjax-extension": "~4.6.0-alpha.0", + "@jupyterlab/mermaid-extension": "~4.6.0-alpha.0", + "@jupyterlab/metadataform-extension": "~4.6.0-alpha.0", + "@jupyterlab/notebook-extension": "~4.6.0-alpha.0", + "@jupyterlab/pdf-extension": "~4.6.0-alpha.0", + "@jupyterlab/pluginmanager-extension": "~4.6.0-alpha.0", + "@jupyterlab/running-extension": "~4.6.0-alpha.0", + "@jupyterlab/services-extension": "~4.6.0-alpha.0", + "@jupyterlab/settingeditor": "~4.6.0-alpha.0", + "@jupyterlab/settingeditor-extension": "~4.6.0-alpha.0", + "@jupyterlab/shortcuts-extension": "~5.4.0-alpha.0", + "@jupyterlab/terminal-extension": "~4.6.0-alpha.0", + "@jupyterlab/theme-dark-extension": "~4.6.0-alpha.0", + "@jupyterlab/theme-dark-high-contrast-extension": "~4.6.0-alpha.0", + "@jupyterlab/theme-light-extension": "~4.6.0-alpha.0", + "@jupyterlab/toc-extension": "~6.6.0-alpha.0", + "@jupyterlab/tooltip-extension": "~4.6.0-alpha.0", + "@jupyterlab/translation-extension": "~4.6.0-alpha.0", + "@jupyterlab/ui-components-extension": "~4.6.0-alpha.0", + "@jupyterlab/vega5-extension": "~4.6.0-alpha.0", + "@jupyterlab/video-extension": "~4.6.0-alpha.0", + "@lumino/coreutils": "~2.2.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "yjs": "^13.5.40" + }, + "devDependencies": { + "@jupyterlab/builder": "~4.6.0-alpha.0", + "@jupyterlab/buildutils": "~4.6.0-alpha.0", + "@rspack/cli": "^1.1.8", + "@rspack/core": "^1.1.8", + "@types/rimraf": "^3.0.2", + "fs-extra": "^8.1.0", + "glob": "~7.1.6", + "handlebars": "^4.7.7", + "rimraf": "^3.0.2", + "webpack-bundle-analyzer": "^4.8.0", + "webpack-merge": "^5.8.0", + "whatwg-fetch": "^3.0.0" + }, + "jupyterlab": { + "name": "Jupyter Notebook", + "mimeExtensions": { + "@jupyterlab/javascript-extension": true, + "@jupyterlab/json-extension": true, + "@jupyterlab/pdf-extension": true, + "@jupyterlab/vega5-extension": true + }, + "plugins": { + "/": { + "@jupyter-notebook/application-extension": true, + "@jupyter-notebook/console-extension": true, + "@jupyter-notebook/docmanager-extension": true, + "@jupyter-notebook/documentsearch-extension": true, + "@jupyter-notebook/help-extension": true, + "@jupyter-notebook/notebook-extension": true, + "@jupyter-notebook/terminal-extension": true, + "@jupyterlab/application-extension": [ + "@jupyterlab/application-extension:commands", + "@jupyterlab/application-extension:context-menu", + "@jupyterlab/application-extension:faviconbusy", + "@jupyterlab/application-extension:router", + "@jupyterlab/application-extension:top-bar", + "@jupyterlab/application-extension:top-spacer" + ], + "@jupyterlab/apputils-extension": [ + "@jupyterlab/apputils-extension:kernels-settings", + "@jupyterlab/apputils-extension:palette", + "@jupyterlab/apputils-extension:notification", + "@jupyterlab/apputils-extension:sanitizer", + "@jupyterlab/apputils-extension:sessionDialogs", + "@jupyterlab/apputils-extension:settings", + "@jupyterlab/apputils-extension:state", + "@jupyterlab/apputils-extension:themes", + "@jupyterlab/apputils-extension:themes-palette-menu", + "@jupyterlab/apputils-extension:toolbar-registry", + "@jupyterlab/apputils-extension:utilityCommands" + ], + "@jupyterlab/audio-extension": true, + "@jupyterlab/codemirror-extension": true, + "@jupyterlab/completer-extension": [ + "@jupyterlab/completer-extension:base-service", + "@jupyterlab/completer-extension:inline-completer", + "@jupyterlab/completer-extension:inline-completer-factory", + "@jupyterlab/completer-extension:inline-history", + "@jupyterlab/completer-extension:manager" + ], + "@jupyterlab/console-extension": [ + "@jupyterlab/console-extension:cell-executor", + "@jupyterlab/console-extension:completer", + "@jupyterlab/console-extension:factory", + "@jupyterlab/console-extension:foreign", + "@jupyterlab/console-extension:tracker" + ], + "@jupyterlab/csvviewer-extension": true, + "@jupyterlab/docmanager-extension": [ + "@jupyterlab/docmanager-extension:plugin", + "@jupyterlab/docmanager-extension:download", + "@jupyterlab/docmanager-extension:contexts", + "@jupyterlab/docmanager-extension:manager" + ], + "@jupyterlab/documentsearch-extension": [ + "@jupyterlab/documentsearch-extension:plugin" + ], + "@jupyterlab/filebrowser-extension": [ + "@jupyterlab/filebrowser-extension:factory", + "@jupyterlab/filebrowser-extension:default-file-browser" + ], + "@jupyterlab/fileeditor-extension": [ + "@jupyterlab/fileeditor-extension:plugin", + "@jupyterlab/fileeditor-extension:widget-factory" + ], + "@jupyterlab/help-extension": [ + "@jupyterlab/help-extension:resources" + ], + "@jupyterlab/htmlviewer-extension": true, + "@jupyterlab/hub-extension": true, + "@jupyterlab/imageviewer-extension": true, + "@jupyterlab/lsp-extension": true, + "@jupyterlab/mainmenu-extension": [ + "@jupyterlab/mainmenu-extension:plugin" + ], + "@jupyterlab/markedparser-extension": true, + "@jupyterlab/mathjax-extension": true, + "@jupyterlab/mermaid-extension": true, + "@jupyterlab/notebook-extension": [ + "@jupyterlab/notebook-extension:cell-executor", + "@jupyterlab/notebook-extension:code-console", + "@jupyterlab/notebook-extension:export", + "@jupyterlab/notebook-extension:factory", + "@jupyterlab/notebook-extension:tracker", + "@jupyterlab/notebook-extension:widget-factory" + ], + "@jupyterlab/pluginmanager-extension": true, + "@jupyterlab/services-extension": true, + "@jupyterlab/shortcuts-extension": true, + "@jupyterlab/terminal-extension": true, + "@jupyterlab/theme-light-extension": true, + "@jupyterlab/theme-dark-extension": true, + "@jupyterlab/theme-dark-high-contrast-extension": true, + "@jupyterlab/translation-extension": true, + "@jupyterlab/ui-components-extension": true, + "@jupyterlab/video-extension": true + }, + "/tree": { + "@jupyterlab/cell-toolbar-extension": true, + "@jupyterlab/extensionmanager-extension": true, + "@jupyterlab/filebrowser-extension": [ + "@jupyterlab/filebrowser-extension:browser", + "@jupyterlab/filebrowser-extension:create-new-language-file", + "@jupyterlab/filebrowser-extension:download", + "@jupyterlab/filebrowser-extension:file-upload-status", + "@jupyterlab/filebrowser-extension:open-with", + "@jupyterlab/filebrowser-extension:search", + "@jupyterlab/filebrowser-extension:share-file" + ], + "@jupyter-notebook/tree-extension": true, + "@jupyterlab/running-extension": [ + "@jupyterlab/running-extension:plugin" + ], + "@jupyterlab/settingeditor-extension": true + }, + "/notebooks": { + "@jupyterlab/celltags-extension": true, + "@jupyterlab/cell-toolbar-extension": true, + "@jupyterlab/debugger-extension": [ + "@jupyterlab/debugger-extension:completions", + "@jupyterlab/debugger-extension:config", + "@jupyterlab/debugger-extension:debug-console", + "@jupyterlab/debugger-extension:main", + "@jupyterlab/debugger-extension:notebooks", + "@jupyterlab/debugger-extension:service", + "@jupyterlab/debugger-extension:sidebar", + "@jupyterlab/debugger-extension:sources", + "@jupyterlab/debugger-extension:display-registry" + ], + "@jupyterlab/logconsole-extension": true, + "@jupyterlab/metadataform-extension": true, + "@jupyterlab/notebook-extension": [ + "@jupyterlab/notebook-extension:active-cell-tool", + "@jupyterlab/notebook-extension:completer", + "@jupyterlab/notebook-extension:copy-output", + "@jupyterlab/notebook-extension:metadata-editor", + "@jupyterlab/notebook-extension:search", + "@jupyterlab/notebook-extension:toc", + "@jupyterlab/notebook-extension:tools", + "@jupyterlab/notebook-extension:update-raw-mimetype" + ], + "@jupyterlab/toc-extension": [ + "@jupyterlab/toc-extension:registry", + "@jupyterlab/toc-extension:tracker" + ], + "@jupyterlab/tooltip-extension": [ + "@jupyterlab/tooltip-extension:manager", + "@jupyterlab/tooltip-extension:notebooks" + ] + }, + "/consoles": { + "@jupyterlab/tooltip-extension": [ + "@jupyterlab/tooltip-extension:manager", + "@jupyterlab/tooltip-extension:consoles" + ] + }, + "/edit": { + "@jupyterlab/fileeditor-extension": [ + "@jupyterlab/fileeditor-extension:completer", + "@jupyterlab/fileeditor-extension:search" + ], + "@jupyterlab/markdownviewer-extension": true + } + }, + "singletonPackages": [ + "@codemirror/state", + "@codemirror/view", + "@jupyter-notebook/tree", + "@jupyter/react-components", + "@jupyter/web-components", + "@jupyter/ydoc", + "@jupyterlab/application", + "@jupyterlab/apputils", + "@jupyterlab/cell-toolbar", + "@jupyterlab/codeeditor", + "@jupyterlab/codemirror", + "@jupyterlab/completer", + "@jupyterlab/console", + "@jupyterlab/coreutils", + "@jupyterlab/debugger", + "@jupyterlab/docmanager", + "@jupyterlab/documentsearch", + "@jupyterlab/extensionmanager", + "@jupyterlab/filebrowser", + "@jupyterlab/fileeditor", + "@jupyterlab/htmlviewer", + "@jupyterlab/imageviewer", + "@jupyterlab/lsp", + "@jupyterlab/mainmenu", + "@jupyterlab/markdownviewer", + "@jupyterlab/mermaid", + "@jupyterlab/metadataform", + "@jupyterlab/notebook", + "@jupyterlab/observables", + "@jupyterlab/outputarea", + "@jupyterlab/rendermime", + "@jupyterlab/rendermime-interfaces", + "@jupyterlab/services", + "@jupyterlab/settingeditor", + "@jupyterlab/settingregistry", + "@jupyterlab/statedb", + "@jupyterlab/statusbar", + "@jupyterlab/terminal", + "@jupyterlab/tooltip", + "@jupyterlab/translation", + "@jupyterlab/ui-components", + "@lezer/common", + "@lezer/highlight", + "@lumino/algorithm", + "@lumino/application", + "@lumino/commands", + "@lumino/coreutils", + "@lumino/disposable", + "@lumino/domutils", + "@lumino/dragdrop", + "@lumino/messaging", + "@lumino/properties", + "@lumino/signaling", + "@lumino/virtualdom", + "@lumino/widgets", + "react", + "react-dom", + "yjs" + ] + } +} diff --git a/src/app/publicpath.js b/src/app/publicpath.js new file mode 100644 index 000000000..751281fe5 --- /dev/null +++ b/src/app/publicpath.js @@ -0,0 +1,37 @@ +// Copyright (c) Jupyter Development Team. +// Distributed under the terms of the Modified BSD License. + +// We dynamically set the webpack public path based on the page config +// settings from the JupyterLab app. We copy some of the pageconfig parsing +// logic in @jupyterlab/coreutils below, since this must run before any other +// files are loaded (including @jupyterlab/coreutils). + +/** + * Get global configuration data for the Jupyter application. + * + * @param name - The name of the configuration option. + * + * @returns The config value or an empty string if not found. + * + * #### Notes + * All values are treated as strings. + * For browser based applications, it is assumed that the page HTML + * includes a script tag with the id `jupyter-config-data` containing the + * configuration as valid JSON. In order to support the classic Notebook, + * we fall back on checking for `body` data of the given `name`. + */ +function getOption(name) { + let configData = Object.create(null); + // Use script tag if available. + if (typeof document !== 'undefined' && document) { + const el = document.getElementById('jupyter-config-data'); + + if (el) { + configData = JSON.parse(el.textContent || '{}'); + } + } + return configData[name] || ''; +} + +// eslint-disable-next-line no-undef +__webpack_public_path__ = getOption('fullStaticUrl') + '/'; diff --git a/src/app/rspack.config.js b/src/app/rspack.config.js new file mode 100644 index 000000000..d54f40f4c --- /dev/null +++ b/src/app/rspack.config.js @@ -0,0 +1,274 @@ +// Copyright (c) Jupyter Development Team. +// Distributed under the terms of the Modified BSD License. + +// Heavily inspired (and slightly tweaked) from: +// https://github.com/jupyterlab/jupyterlab/blob/master/examples/federated/core_package/rspack.config.js + +const fs = require('fs-extra'); +const path = require('path'); +const rspack = require('@rspack/core'); +const merge = require('webpack-merge').default; +const Handlebars = require('handlebars'); +const { ModuleFederationPlugin } = rspack.container; +const BundleAnalyzerPlugin = + require('webpack-bundle-analyzer').BundleAnalyzerPlugin; + +const Build = require('@jupyterlab/builder').Build; +const WPPlugin = require('@jupyterlab/builder').WPPlugin; +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const baseConfig = require('@jupyterlab/builder/lib/webpack.config.base'); + +const data = require('./package.json'); + +const names = Object.keys(data.dependencies).filter((name) => { + const packageData = require(path.join(name, 'package.json')); + return packageData.jupyterlab !== undefined; +}); + +// Ensure a clear build directory. +const buildDir = path.resolve(__dirname, 'build'); +if (fs.existsSync(buildDir)) { + fs.removeSync(buildDir); +} +fs.ensureDirSync(buildDir); + +// Handle the extensions. +const { mimeExtensions, plugins } = data.jupyterlab; + +// Create the list of extension packages from the package.json metadata +const extensionPackages = new Set(); +Object.keys(plugins).forEach((page) => { + const pagePlugins = plugins[page]; + Object.keys(pagePlugins).forEach((name) => { + extensionPackages.add(name); + }); +}); + +Handlebars.registerHelper('json', function (context) { + return JSON.stringify(context); +}); + +// custom help to check if a page corresponds to a value +Handlebars.registerHelper('ispage', function (key, page) { + return key === page; +}); + +// custom helper to load the plugins on the index page +Handlebars.registerHelper('list_plugins', function () { + let str = ''; + const page = this; + Object.keys(this).forEach((extension) => { + const plugin = page[extension]; + if (plugin === true) { + str += `require(\'${extension}\'),\n `; + } else if (Array.isArray(plugin)) { + const plugins = plugin.map((p) => `'${p}',`).join('\n'); + str += ` + require(\'${extension}\').default.filter(({id}) => [ + ${plugins} + ].includes(id)), + `; + } + }); + return str; +}); + +// Create the entry point and other assets in build directory. +const source = fs.readFileSync('index.template.js').toString(); +const template = Handlebars.compile(source); +const extData = { + notebook_plugins: plugins, + notebook_mime_extensions: mimeExtensions, +}; +const indexOut = template(extData); +fs.writeFileSync(path.join(buildDir, 'index.js'), indexOut); + +// Copy extra files +const cssImports = path.resolve(__dirname, 'style.js'); +fs.copySync(cssImports, path.resolve(buildDir, 'extraStyle.js')); + +const extras = Build.ensureAssets({ + packageNames: names, + output: buildDir, + schemaOutput: path.resolve(__dirname, '..', 'notebook'), +}); + +/** + * Create the rspack ``shared`` configuration + */ +function createShared(packageData) { + // Set up module federation sharing config + const shared = {}; + + // Make sure any resolutions are shared + for (let [pkg, requiredVersion] of Object.entries(packageData.resolutions)) { + shared[pkg] = { requiredVersion }; + } + + // Add any extension packages that are not in resolutions (i.e., installed from npm) + for (let pkg of extensionPackages) { + if (!shared[pkg]) { + shared[pkg] = { + requiredVersion: require(`${pkg}/package.json`).version, + }; + } + } + + // Add dependencies and sharedPackage config from extension packages if they + // are not already in the shared config. This means that if there is a + // conflict, the resolutions package version is the one that is shared. + const extraShared = []; + for (let pkg of extensionPackages) { + let pkgShared = {}; + let { + dependencies = {}, + jupyterlab: { sharedPackages = {} } = {}, + } = require(`${pkg}/package.json`); + for (let [dep, requiredVersion] of Object.entries(dependencies)) { + if (!shared[dep]) { + pkgShared[dep] = { requiredVersion }; + } + } + + // Overwrite automatic dependency sharing with custom sharing config + for (let [dep, config] of Object.entries(sharedPackages)) { + if (config === false) { + delete pkgShared[dep]; + } else { + if ('bundled' in config) { + config.import = config.bundled; + delete config.bundled; + } + pkgShared[dep] = config; + } + } + extraShared.push(pkgShared); + } + + // Now merge the extra shared config + const mergedShare = {}; + for (let sharedConfig of extraShared) { + for (let [pkg, config] of Object.entries(sharedConfig)) { + // Do not override the basic share config from resolutions + if (shared[pkg]) { + continue; + } + + // Add if we haven't seen the config before + if (!mergedShare[pkg]) { + mergedShare[pkg] = config; + continue; + } + + // Choose between the existing config and this new config. We do not try + // to merge configs, which may yield a config no one wants + let oldConfig = mergedShare[pkg]; + + // if the old one has import: false, use the new one + if (oldConfig.import === false) { + mergedShare[pkg] = config; + } + } + } + + Object.assign(shared, mergedShare); + + // Transform any file:// requiredVersion to the version number from the + // imported package. This assumes (for simplicity) that the version we get + // importing was installed from the file. + for (let [pkg, { requiredVersion }] of Object.entries(shared)) { + if (requiredVersion && requiredVersion.startsWith('file:')) { + shared[pkg].requiredVersion = require(`${pkg}/package.json`).version; + } + } + + // Add singleton package information + for (let pkg of packageData.jupyterlab.singletonPackages) { + if (shared[pkg]) { + shared[pkg].singleton = true; + } + } + + return shared; +} + +// Make a bootstrap entrypoint +const entryPoint = path.join(buildDir, 'bootstrap.js'); +const bootstrap = 'import("./index.js");'; +fs.writeFileSync(entryPoint, bootstrap); + +if (process.env.NODE_ENV === 'production') { + baseConfig.mode = 'production'; +} + +if (process.argv.includes('--analyze')) { + extras.push(new BundleAnalyzerPlugin()); +} + +const htmlPlugins = []; +['consoles', 'edit', 'error', 'notebooks', 'terminals', 'tree'].forEach( + (name) => { + htmlPlugins.push( + new HtmlWebpackPlugin({ + chunksSortMode: 'none', + template: path.join( + path.resolve('./templates'), + `${name}_template.html` + ), + title: name, + filename: path.join( + path.resolve(__dirname, '..', 'notebook/templates'), + `${name}.html` + ), + }) + ); + } +); + +module.exports = [ + merge(baseConfig, { + mode: 'development', + entry: ['./publicpath.js', './' + path.relative(__dirname, entryPoint)], + output: { + path: path.resolve(__dirname, '..', 'notebook/static/'), + publicPath: '{{page_config.fullStaticUrl}}/', + library: { + type: 'var', + name: ['_JUPYTERLAB', 'CORE_OUTPUT'], + }, + filename: '[name].[contenthash].js', + }, + optimization: { + splitChunks: { + chunks: 'all', + cacheGroups: { + jlab_core: { + test: /[\\/]node_modules[\\/]@(jupyterlab|jupyter-notebook|lumino(?!\/datagrid))[\\/]/, + name: 'notebook_core', + }, + }, + }, + }, + resolve: { + fallback: { util: false }, + }, + plugins: [ + ...htmlPlugins, + new WPPlugin.JSONLicenseWebpackPlugin({ + excludedPackageTest: (packageName) => + packageName === '@jupyter-notebook/app', + }), + new ModuleFederationPlugin({ + library: { + type: 'var', + name: ['_JUPYTERLAB', 'CORE_LIBRARY_FEDERATION'], + }, + name: 'CORE_FEDERATION', + shared: createShared(data), + }), + ], + }), +].concat(extras); + +const logPath = path.join(buildDir, 'build_log.json'); +fs.writeFileSync(logPath, JSON.stringify(module.exports, null, ' ')); diff --git a/src/app/rspack.config.watch.js b/src/app/rspack.config.watch.js new file mode 100644 index 000000000..e73002751 --- /dev/null +++ b/src/app/rspack.config.watch.js @@ -0,0 +1,15 @@ +/* + * Copyright (c) Jupyter Development Team. + * Distributed under the terms of the Modified BSD License. + */ + +const base = require('./rspack.config'); + +module.exports = [ + { + ...base[0], + bail: false, + watch: true, + }, + ...base.slice(1), +]; diff --git a/src/app/rspack.prod.config.js b/src/app/rspack.prod.config.js new file mode 100644 index 000000000..a010b88b1 --- /dev/null +++ b/src/app/rspack.prod.config.js @@ -0,0 +1,29 @@ +/* + * Copyright (c) Jupyter Development Team. + * Distributed under the terms of the Modified BSD License. + */ + +const merge = require('webpack-merge').default; +const config = require('./rspack.config'); +const WPPlugin = require('@jupyterlab/builder').WPPlugin; + +config[0] = merge(config[0], { + mode: 'production', + devtool: 'source-map', + output: { + // Add version argument when in production so the Jupyter server + // allows caching of files (i.e., does not set the CacheControl header to no-cache to prevent caching static files) + filename: '[name].[contenthash].js?v=[contenthash]', + }, + optimization: { + minimize: false, + }, + plugins: [ + new WPPlugin.JSONLicenseWebpackPlugin({ + excludedPackageTest: (packageName) => + packageName === '@jupyter-notebook/app', + }), + ], +}); + +module.exports = config; diff --git a/src/app/style.js b/src/app/style.js new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/templates/consoles_template.html b/src/app/templates/consoles_template.html new file mode 100644 index 000000000..c4172e693 --- /dev/null +++ b/src/app/templates/consoles_template.html @@ -0,0 +1,45 @@ + + + + + + {{page_config['appName'] | e}} - Console + {% block favicon %} + + {% endblock %} {% if custom_css %} + + {% endif %} + + + {# Copy so we do not modify the page_config with updates. #} {% set + page_config_full = page_config.copy() %} {# Set a dummy variable - we just + want the side effect of the update. #} {% set _ = + page_config_full.update(baseUrl=base_url, wsUrl=ws_url) %} {# Sentinel value + to say that we are on the tree page #} {% set _ = + page_config_full.update(notebookPage='consoles') %} + + + + + + diff --git a/src/app/templates/edit_template.html b/src/app/templates/edit_template.html new file mode 100644 index 000000000..2c0ff6b41 --- /dev/null +++ b/src/app/templates/edit_template.html @@ -0,0 +1,39 @@ + + + + + + {{page_config['appName'] | e}} - Edit + {% block favicon %} + + {% endblock %} + + + {# Copy so we do not modify the page_config with updates. #} {% set + page_config_full = page_config.copy() %} {# Set a dummy variable - we just + want the side effect of the update. #} {% set _ = + page_config_full.update(baseUrl=base_url, wsUrl=ws_url) %} {# Sentinel value + to say that we are on the tree page #} {% set _ = + page_config_full.update(notebookPage='edit') %} + + + + + + diff --git a/src/app/templates/error_template.html b/src/app/templates/error_template.html new file mode 100644 index 000000000..c08d8b199 --- /dev/null +++ b/src/app/templates/error_template.html @@ -0,0 +1,59 @@ + + + + + + + + {% block title %}{{page_title | e}}{% endblock %} + + {% block favicon %}{% endblock %} + + + + + +{% block stylesheet %} + +{% endblock %} +{% block site %} + +
+ {% block h1_error %} +

{{status_code | e}} : {{status_message | e}}

+ {% endblock h1_error %} + {% block error_detail %} + {% if message %} +

The error was:

+
+
{{message | e}}
+
+ {% endif %} + {% endblock %} + + +{% endblock %} + +{% block script %} + +{% endblock script %} + + + + diff --git a/src/app/templates/notebooks_template.html b/src/app/templates/notebooks_template.html new file mode 100644 index 000000000..ce6709858 --- /dev/null +++ b/src/app/templates/notebooks_template.html @@ -0,0 +1,45 @@ + + + + + + {{page_config['appName'] | e}} - Notebook + {% block favicon %} + + {% endblock %} {% if custom_css %} + + {% endif %} + + + {# Copy so we do not modify the page_config with updates. #} {% set + page_config_full = page_config.copy() %} {# Set a dummy variable - we just + want the side effect of the update. #} {% set _ = + page_config_full.update(baseUrl=base_url, wsUrl=ws_url) %} {# Sentinel value + to say that we are on the tree page #} {% set _ = + page_config_full.update(notebookPage='notebooks') %} + + + + + + diff --git a/src/app/templates/terminals_template.html b/src/app/templates/terminals_template.html new file mode 100644 index 000000000..6311fc07f --- /dev/null +++ b/src/app/templates/terminals_template.html @@ -0,0 +1,45 @@ + + + + + + {{page_config['appName'] | e}} - Terminal + {% block favicon %} + + {% endblock %} {% if custom_css %} + + {% endif %} + + + {# Copy so we do not modify the page_config with updates. #} {% set + page_config_full = page_config.copy() %} {# Set a dummy variable - we just + want the side effect of the update. #} {% set _ = + page_config_full.update(baseUrl=base_url, wsUrl=ws_url) %} {# Sentinel value + to say that we are on the tree page #} {% set _ = + page_config_full.update(notebookPage='terminals') %} + + + + + + diff --git a/src/app/templates/tree_template.html b/src/app/templates/tree_template.html new file mode 100644 index 000000000..01fb6169c --- /dev/null +++ b/src/app/templates/tree_template.html @@ -0,0 +1,45 @@ + + + + + + Home + {% block favicon %} + + {% endblock %} {% if custom_css %} + + {% endif %} + + + {# Copy so we do not modify the page_config with updates. #} {% set + page_config_full = page_config.copy() %} {# Set a dummy variable - we just + want the side effect of the update. #} {% set _ = + page_config_full.update(baseUrl=base_url, wsUrl=ws_url) %} {# Sentinel value + to say that we are on the tree page #} {% set _ = + page_config_full.update(notebookPage='tree') %} + + + + + + diff --git a/src/binder/environment.yml b/src/binder/environment.yml new file mode 100644 index 000000000..c99384f63 --- /dev/null +++ b/src/binder/environment.yml @@ -0,0 +1,12 @@ +name: notebook +channels: + - conda-forge +dependencies: + - ipywidgets=8 + - jupyterlab=4 + - jupyterlab-language-pack-fr-FR + - matplotlib + - numpy + - nodejs=20 + - python >=3.10,<3.11 + - xeus-python diff --git a/src/binder/example.ipynb b/src/binder/example.ipynb new file mode 100644 index 000000000..df3144614 --- /dev/null +++ b/src/binder/example.ipynb @@ -0,0 +1,333 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Welcome to Jupyter Notebook v7! 馃憢\n", + "\n", + "Jupyter Notebook v7 is built using the same components as JupyterLab, and reuses a lot of the work from the JupyterLab community by leveraging the new prebuilt (federated) extension system." + ] + }, + { + "attachments": { + "212ecd19-156e-48dd-99c7-e2ee7457de6f.png": { + "image/png": "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" + }, + "2d33971b-509e-433b-809e-2f0861a13105.png": { + "image/png": "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" + }, + "5aa6b072-c4d7-47de-9e75-0a107a37e2f2.png": { + "image/png": "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" + }, + "c448a783-da5a-499b-a52d-62be28a72438.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Files 馃搨 and Running Sessions 馃弮鈥嶁檧锔廫n", + "\n", + "Jupyter Notebook lets you navigate the files in a separate browser tab. \n", + "\n", + "Go ahead and click on the Jupyter icon in the top left corner!\n", + "\n", + "![image.png](attachment:212ecd19-156e-48dd-99c7-e2ee7457de6f.png)\n", + "\n", + "It will open a new browser tab with the listing of the files on the server:\n", + "\n", + "![image.png](attachment:5aa6b072-c4d7-47de-9e75-0a107a37e2f2.png)\n", + "\n", + "It also shows the list of running sessions and terminals in the `Running` tab:\n", + "\n", + "![image.png](attachment:c448a783-da5a-499b-a52d-62be28a72438.png)\n", + "\n", + "Alternatively it is also possible to access this page using the command in the `View` menu:\n", + "\n", + "![image.png](attachment:2d33971b-509e-433b-809e-2f0861a13105.png)" + ] + }, + { + "attachments": { + "72f98bea-d61c-40cd-8f56-29df50ae5f8d.png": { + "image/png": "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" + }, + "86ac8b15-8a6b-4d4d-b315-0c8a73870e3b.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Editing Files 馃枈锔廫n", + "\n", + "Jupyter Notebook also has support for editing files. Double-click on a file (or `Right Click > Open`) to open the editor:\n", + "\n", + "![image.png](attachment:72f98bea-d61c-40cd-8f56-29df50ae5f8d.png)\n", + "\n", + "![image.png](attachment:86ac8b15-8a6b-4d4d-b315-0c8a73870e3b.png)" + ] + }, + { + "attachments": { + "88ef6621-8ef1-4174-939c-3dcd8d9166ef.png": { + "image/png": "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" + }, + "9016e117-00db-490f-80c4-fa3ed6766d0f.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Terminals 馃枼锔廫n", + "\n", + "To create a new Terminal, select `File > New > Terminal` in the menu:\n", + "\n", + "![image.png](attachment:9016e117-00db-490f-80c4-fa3ed6766d0f.png)\n", + "\n", + "The terminal opens in a new browser tab:\n", + "\n", + "![image.png](attachment:88ef6621-8ef1-4174-939c-3dcd8d9166ef.png)" + ] + }, + { + "attachments": { + "72198f40-0581-4a18-bc23-8b4674351a97.png": { + "image/png": "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8WnDtOz0vaw17i9bbRavMjLOzDt1b9ZuOrdi6tOcxTX7nveNqWFXuU8LyXnO4nK+sXYlXXwe+RuKDkAABEAABEAABEAABEBAFlTOcqjEYKQwUnU8RB5fDiON/DF/egfSSDtfD/PTb4c7gAAIgAAIgAAIgAAIgECUBM4ipD3fRwEjhZFGOTAH7g0jHUAy/ASMdDgXnAUBEAABEAABEAABELiUBGCkg2/LmZg8fPjwyZMnz549e/HixcuXL1+9evX69es3b968ffv23cDxzXscf/fNN98MXPju7du3b968ef369atXr16+fPnixYtnz549efLk4cOHgw/wUZ6Bkb7n2wojfU9QaAYCIAACIAACIAACIHAZCJzJvtSEUSNFjVQdD5HHMNLIEaMDEAABEAABEAABEAABEBg5ARjpIPIzMUGNdBBgJGdgpJFgxU1BAARAAARAAARAAARA4EIJnMm+1ExRI0WNVB0Pkccw0sgRowMQAAEQAAEQAAEQAAEQGDkBGOkg8jMxQY10EGAkZ2CkkWDFTUEABEAABEAABEAABEDgQgmcyb7UTFEjRY1UHQ+RxzDSyBGjAxAAARAAARAAARAAARAYOQEY6SDyMzFBjXQQYCRnYKSRYMVNQQAEQAAEQAAEQAAEQOBCCZzJvtRMUSNFjVQdD5HHMNLIEaMDEAABEAABEAABEAABEBg5gQ820t/97ndffvnl119//c0333z77bd//vOfv//+e9d1/zc4fjjvY2RszsQENdIRvS8w0hGBRjcgAAIgAAIgAAIgAAIgMEICZ7IvNa+///u//8d//Md/+qd/+pd/+Zdf/OIXv/zlLzc3N/9VOf7PeR9q75HGZ2ICI430vejeHEbaZYEIBEAABEAABEAABEAABD4WAmeyL/Whb9269Q//8A93797953/+542NjV/84hf379//pXIUz/tQe480PhMTGGmk70X35jDSLgtEIAACIAACIAACIAACIPCxEDiTfakP/etf/3p3d/fRo0dPnz7d39+v1+sHBwd/+MMfvgyO5yccX33oofYeaXwmJjDSSN+L7s1hpF0WiEAABEAABEAABEAABEDgYyFwJvtSH3pnZ+e3v/3tF1988fz588PDwz/+8Y9ff/31q1evXgdH84TjzYceau+RxmdiAiON9L3o3hxG2mWBCARAAARAAARAAARAAAQ+FgJn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qVRIZQLuborFU5Xj0/bale387yOdkN9HShO6dbNYC5aANh9krRnOpzif0pN3qv5pZydjTlKa4LqVyd/Q6PWy11l7r12WYHzOzntPIc/jAAEQAAEQAAEQAAEQAIGTCXywkf7617/e3d199OjR06dP9/f36/X6wcHBH/7why+Dw3fUjqb6FdSjoyN/Zq/65aVqmRRGCiMdPlovh5EOz+0nnu2UUn/ifXA5CIAACIAACIAACIAACPzsCHywkf7Xf/3X/v5+o9F4/fr127dv//SnPzmO8+23334XHMfK8Wfv+Mtf/vL27du+r4rp230XRgojHf4/EYx0OBecBQEQAAEQAAEQAAEQAIGfM4EPNtJardZoNN6+ffvdd999//33P/zww48//vjXv/61Iw5Dqbx7967RaKhSetK3lQ6q6dAbRnHyTEywjjSKt2DIPTsD669//euPP/74ww8/fP/99999993bt28bjUatVhtyzc/kFGqkP5M3CmmCAAiAAAiAAAiAAAicP4Ez2Zfa/YcZabPZ/PLLLw8PD7/++uvXr1935u6qE3f9GEbawwTfR/oRG6n6/xViEAABEAABEAABEAABEPibIjBiI/3666+/+OKLFy9edMqknS2OegTs3TsYaQ8QGCmM9G/qLyY8LAiAAAiAAAiAAAiAwN8IgREb6cuXL//nf/7n+fPnL1++9MukMNI+98Y60uH/68FIh3PBWRAAARAAARAAARAAARD4ORMYsZE2Go3f//73BwcHh4eHR0dHr1+/hpHCSN/rfyAY6XthQiMQAAEQAAEQAAEQAAEQ+FkR+GAj3djY+NWvflUul3d2dh4+fPib3/zmv7zjv4OjOuzY29t78uRJvV5vNBow0j4X9X9FjXT4/0Aw0uFccBYEQAAEQAAEQAAEQAAEfs4EPthId3Z2fve7333xxRdfffXVy5cvG41G5ytJ/+AdwfeSdn9+9dVXv//97x8/fvzs2TN/x91Xr16dtLnRoK2NDPOZmGCv3RG9LzDSEYFGNyAAAiAAAiAAAiAAAiAwQgJnsi81r8ePH3/55ZevXr3605/+9N1333377bcdtzzlC1329/d9j/U3N4KRDoo3aqTqMOvGMNIuC0QgAAIgAAIgAAIgAAIg8LEQ+GAj7fv2lz//+c/ffPPNn/70p/8bHEPv/MUXX8BIBy1UPQMjHf7/Fox0OBec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" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Command Palette 馃帹\n", + "\n", + "Jupyter Notebook includes a command palette, just like in JupyterLab.\n", + "\n", + "Hit `Ctrl-Shift-C` or `Accel-Shift-C` to activate it. Or via the menu with `View > Activate Command Palette`:\n", + "\n", + "![image.png](attachment:72198f40-0581-4a18-bc23-8b4674351a97.png)\n", + "\n", + "Using the palette is very convenient and can give a significant productivity boost over time!" + ] + }, + { + "attachments": { + "9c47f73c-24f2-4c1a-aa3a-52e231144057.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Themes 馃寛\n", + "\n", + "Since Jupyter Notebook v7 is heavily built on top of JupyterLab, it also has support for a Dark Mode! 馃暥锔廫n", + "\n", + "Go to `Settings > Theme > JupyterLab Dark` to select the theme:\n", + "\n", + "![image.png](attachment:9c47f73c-24f2-4c1a-aa3a-52e231144057.png)\n", + "\n", + "New themes can be installed using the federated extension system. These themes will be compatible with both JupyterLab and Jupyter Notebook." + ] + }, + { + "attachments": { + "ac1323eb-c6e0-4b7c-80f3-7bf5f84adf98.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zen Mode 馃槍\n", + "\n", + "This is an exclusivity in Jupyter Notebook v7 馃槑\n", + "\n", + "Activate the palette and choose `Toggle Zen Mode`. The interface will focus on the notebook and the notebook only!\n", + "\n", + "![image.png](attachment:ac1323eb-c6e0-4b7c-80f3-7bf5f84adf98.png)\n", + "\n", + "Press `Escape` to exit, or re-run the `Toggle Zen Mode` command from the palette." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Third Party Extensions 馃З\n", + "\n", + "Jupyter Notebook v7 supports third-party extensions developed for JupyterLab 3.0+, using the new distribution system. These extensions can be installed via `pip`.\n", + "\n", + "For example the extension to enable Jupyter Widgets rendering in both JupyterLab and Jupyter Notebook can be installed using the following command (run the cell): " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!pip install ipywidgets" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now reload the page and resume from here. In the next section we will be able to create and use Jupyter Widgets!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Widgets\n", + "\n", + "Now let's instantiate a new widget:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "from ipywidgets import IntSlider\n", + "\n", + "slider = IntSlider()\n", + "slider" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "slider" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Rich Display\n", + "\n", + "Just like in many Jupyter Frontends, Jupyter Notebook supports rich display rendering. For example:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from IPython.display import Latex\n", + "\n", + "Latex(\n", + " r\"\"\"\\begin{eqnarray}\n", + "\\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\\\n", + "\\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\\\n", + "\\nabla \\times \\vec{\\mathbf{E}}\\, +\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\\n", + "\\nabla \\cdot \\vec{\\mathbf{B}} & = 0\n", + "\\end{eqnarray}\"\"\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Matplotlib figures:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "x = np.linspace(0, 10, 100)\n", + "\n", + "plt.plot(x, np.sin(x))\n", + "plt.plot(x, np.cos(x))\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Or even HTML:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from IPython.display import HTML, display\n", + "\n", + "s = \"\"\"\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
Header 1Header 2
row 1, cell 1row 1, cell 2
row 2, cell 1row 2, cell 2
\"\"\"\n", + "h = HTML(s)\n", + "display(h)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## That's it!\n", + "\n", + "Hope you enjoyed the tour. If you have more question or any other issues, don't hesitate to go to the repository on GitHub!\n", + "\n", + "https://github.com/jupyter/notebook" + ] + } + ], + "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.10.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/src/binder/postBuild b/src/binder/postBuild new file mode 100644 index 000000000..e983a61a1 --- /dev/null +++ b/src/binder/postBuild @@ -0,0 +1,5 @@ +#!/bin/bash +set -euo pipefail + +python -m pip install -e ".[dev,test]" +jlpm develop diff --git a/src/buildutils/package.json b/src/buildutils/package.json new file mode 100644 index 000000000..160dfa248 --- /dev/null +++ b/src/buildutils/package.json @@ -0,0 +1,44 @@ +{ + "name": "@jupyter-notebook/buildutils", + "version": "7.6.0-alpha.0", + "private": true, + "description": "Jupyter Notebook - Build Utilities", + "homepage": "https://github.com/jupyter/notebook", + "bugs": { + "url": "https://github.com/jupyter/notebook/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/jupyter/notebook.git" + }, + "license": "BSD-3-Clause", + "author": "Project Jupyter", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "directories": { + "lib": "lib/" + }, + "files": [ + "lib/*.d.ts", + "lib/*.js.map", + "lib/*.js" + ], + "scripts": { + "build": "tsc", + "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo", + "watch": "tsc -w --listEmittedFiles" + }, + "dependencies": { + "@jupyterlab/buildutils": "~4.6.0-alpha.0", + "commander": "^6.2.0", + "fs-extra": "^9.1.0", + "semver": "^7.6.3", + "typescript": "~5.5.4" + }, + "devDependencies": { + "@types/fs-extra": "^9.0.10", + "@types/node": "^22.13.4", + "@types/semver": "^7.5.8", + "rimraf": "^3.0.2" + } +} diff --git a/src/buildutils/src/develop.ts b/src/buildutils/src/develop.ts new file mode 100644 index 000000000..391f31e02 --- /dev/null +++ b/src/buildutils/src/develop.ts @@ -0,0 +1,56 @@ +/* ----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +import commander from 'commander'; + +import fs from 'fs-extra'; + +import path from 'path'; + +import process from 'process'; + +import { run } from '@jupyterlab/buildutils'; + +commander + .description('Setup the repository for develop mode') + .option('--overwrite', 'Force linking the notebook schemas') + .option('--source', 'The path to the notebook package') + .action((options: any) => { + const { overwrite } = options; + const prefix = run( + 'python -c "import sys; print(sys.prefix)"', + { + stdio: 'pipe', + }, + true + ); + const source = path.resolve(options.source ?? process.cwd()); + const sourceDir = path.join( + source, + 'notebook', + 'schemas', + '@jupyter-notebook' + ); + const destDir = path.join( + prefix, + 'share', + 'jupyter', + 'lab', + 'schemas', + '@jupyter-notebook' + ); + if (overwrite) { + try { + fs.removeSync(destDir); + console.log('Removed previous destination:', destDir); + } catch (e) { + console.info('Skip unlink', destDir); + } + } + console.log('Symlinking:', sourceDir, destDir); + fs.symlinkSync(sourceDir, destDir, 'dir'); + }); + +commander.parse(process.argv); diff --git a/src/buildutils/src/ensure-repo.ts b/src/buildutils/src/ensure-repo.ts new file mode 100644 index 000000000..041dcef7f --- /dev/null +++ b/src/buildutils/src/ensure-repo.ts @@ -0,0 +1,45 @@ +import * as path from 'path'; + +import * as fs from 'fs-extra'; + +import { writePackageData } from '@jupyterlab/buildutils'; + +/** + * Ensure the application package resolutions. + */ +function ensureResolutions(): string[] { + const basePath = path.resolve('.'); + const corePath = path.join(basePath, 'app', 'package.json'); + const corePackage = fs.readJSONSync(corePath); + + corePackage.resolutions = {}; + + const packages = Object.keys(corePackage.dependencies).concat( + corePackage.jupyterlab.singletonPackages + ); + + packages.forEach(async (name) => { + let version = ''; + try { + const data = require(`${name}/package.json`); + version = data.version; + } catch { + const modulePath = require.resolve(name); + const parentDir = path.dirname(path.dirname(modulePath)); + const data = require(path.join(parentDir, 'package.json')); + version = data.version; + } + // Insist on a restricted version in the yarn resolution. + corePackage.resolutions[name] = `~${version}`; + }); + + // Write the package.json back to disk. + if (writePackageData(corePath, corePackage)) { + return ['Updated dev mode']; + } + return []; +} + +if (require.main === module) { + void ensureResolutions(); +} diff --git a/src/buildutils/src/get-latest-lab-version.ts b/src/buildutils/src/get-latest-lab-version.ts new file mode 100644 index 000000000..df8469e8e --- /dev/null +++ b/src/buildutils/src/get-latest-lab-version.ts @@ -0,0 +1,86 @@ +import * as fs from 'fs-extra'; +import * as semver from 'semver'; + +function convertPythonVersion(version: string): string { + return version + .replace('a', '-alpha') + .replace('b', '-beta') + .replace('rc', '-rc'); +} + +function extractVersionFromReleases( + releases: any, + versionTag: string, + currentVersion: string +): string | null { + const npmCurrentVersion = convertPythonVersion(currentVersion); + const isCurrentPreRelease = semver.prerelease(npmCurrentVersion) !== null; + + if (versionTag === 'latest') { + // Find first version that is newer than current and matches pre-release criteria + const release = releases.find((r: any) => { + const version = r['tag_name'].substring(1); // Remove 'v' prefix for semver + const npmVersion = convertPythonVersion(version); + return ( + (isCurrentPreRelease || !r['prerelease']) && + semver.gte(npmVersion, npmCurrentVersion) + ); + }); + return release ? release['tag_name'] : null; + } else { + // Find exact version match + const release = releases.find((r: any) => r['tag_name'] === versionTag); + return release ? release['tag_name'] : null; + } +} + +function extractCurrentJupyterLabVersion(): string { + const toml = fs.readFileSync('pyproject.toml', 'utf8'); + const match = toml.match(/jupyterlab>=([^,]+)/); + if (!match) { + throw new Error('Could not find JupyterLab version in pyproject.toml'); + } + return match[1]; +} + +async function findVersion(versionTag: string): Promise { + const url = 'https://api.github.com/repos/jupyterlab/jupyterlab/releases'; + const response = await fetch(url); + if (!response.ok) { + const error_message = `Failed to fetch package.json from ${url}. HTTP status code: ${response.status}`; + throw new Error(error_message); + } + + const currentVersion = extractCurrentJupyterLabVersion(); + + const releases: any = await response.json(); + const version: string | null = extractVersionFromReleases( + releases, + versionTag, + currentVersion + ); + if (version === null) { + const error_message = 'Invalid release tag'; + throw new Error(error_message); + } + return version.substring(1); +} + +async function getLatestLabVersion(): Promise { + const args: string[] = process.argv.slice(2); + if (args.length !== 2 || args[0] !== '--set-version') { + console.error('Usage: node script.js --set-version '); + process.exit(1); + } + const version_tag: string = args[1]; + + try { + const result: string = await findVersion(version_tag); + console.log(result); + } catch (error: any) { + console.error('Error:', error.message); + process.exit(1); + } +} + +getLatestLabVersion(); diff --git a/src/buildutils/src/release-bump.ts b/src/buildutils/src/release-bump.ts new file mode 100644 index 000000000..958d1cb84 --- /dev/null +++ b/src/buildutils/src/release-bump.ts @@ -0,0 +1,148 @@ +/* ----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/** + * Inspired by: https://github.com/jupyterlab/jupyterlab/blob/master/buildutils/src/bumpversion.ts + */ + +import * as utils from '@jupyterlab/buildutils'; + +import commander from 'commander'; + +import { getPythonVersion, postbump } from './utils'; + +// Specify the program signature. +commander + .description('Update the version') + .option('--dry-run', 'Dry run') + .option('--force', 'Force the upgrade') + .option('--skip-commit', 'Whether to skip commit changes') + .arguments('') + .action((spec: any, opts: any) => { + // Get the previous version. + const prev = getPythonVersion(); + const isFinal = /\d+\.\d+\.\d+$/.test(prev); + + // Whether to commit after bumping + const commit = opts.skipCommit !== true; + + // for "next", determine whether to use "patch" or "build" + if (spec === 'next') { + spec = isFinal ? 'patch' : 'build'; + } + + // For patch, defer to `patch:release` command + if (spec === 'patch') { + let cmd = 'jlpm run release:patch'; + if (opts.force) { + cmd += ' --force'; + } + if (!commit) { + cmd += ' --skip-commit'; + } + utils.run(cmd); + process.exit(0); + } + + // Make sure we have a valid version spec. + const options = ['major', 'minor', 'release', 'build']; + if (options.indexOf(spec) === -1) { + throw new Error(`Version spec must be one of: ${options}`); + } + if (isFinal && spec === 'build') { + throw new Error('Cannot increment a build on a final release'); + } + + // Run pre-bump script. + utils.prebump(); + + // Handle dry runs. + if (opts.dryRun) { + return; + } + + // If this is a major release during the alpha cycle, bump + // just the Python version. + if (prev.indexOf('a') !== -1 && spec === 'major') { + // Bump the version. + utils.run(`hatch version ${spec}`); + + // Run the post-bump script. + postbump(commit); + + return; + } + + // Determine the version spec to use for lerna. + let lernaVersion = 'preminor'; + if (spec === 'build') { + lernaVersion = 'prerelease'; + // a -> b + } else if (spec === 'release' && prev.indexOf('a') !== -1) { + lernaVersion = 'prerelease --preid=beta'; + // b -> rc + } else if (spec === 'release' && prev.indexOf('b') !== -1) { + lernaVersion = 'prerelease --preid=rc'; + // rc -> final + } else if (spec === 'release' && prev.indexOf('rc') !== -1) { + lernaVersion = 'patch'; + } + if (lernaVersion === 'preminor') { + lernaVersion += ' --preid=alpha'; + } + + let cmd = `jlpm run lerna version --force-publish --no-push --no-git-tag-version ${lernaVersion}`; + if (opts.force) { + cmd += ' --yes'; + } + // For a preminor release, we bump 10 minor versions so that we do + // not conflict with versions during minor releases of the top + // level package. + if (lernaVersion === 'preminor') { + for (let i = 0; i < 10; i++) { + utils.run(cmd); + } + } else { + utils.run(cmd); + } + + // Bump the version. + let pySpec = spec; + if (spec === 'release') { + if (prev.indexOf('a') !== -1) { + pySpec = 'beta'; + } else if (prev.indexOf('b') !== -1) { + pySpec = 'rc'; + } else if (prev.indexOf('rc') !== -1) { + pySpec = 'release'; + } else { + pySpec = 'alpha'; + } + } else if (spec === 'build') { + if (prev.indexOf('a') !== -1) { + pySpec = 'a'; + } else if (prev.indexOf('b') !== -1) { + pySpec = 'b'; + } else if (prev.indexOf('rc') !== -1) { + pySpec = 'rc'; + } + } else if (spec === 'major' || spec === 'minor') { + if (prev.indexOf('a') !== -1) { + pySpec = `${spec},beta`; + } else if (prev.indexOf('b') !== -1) { + pySpec = `${spec},rc`; + } else if (prev.indexOf('rc') !== -1) { + pySpec = `${spec},release`; + } else { + pySpec = `${spec},alpha`; + } + } + utils.run(`hatch version ${pySpec}`); + + // Run the post-bump script. + postbump(commit); + }); + +commander.parse(process.argv); diff --git a/src/buildutils/src/release-patch.ts b/src/buildutils/src/release-patch.ts new file mode 100644 index 000000000..612e38977 --- /dev/null +++ b/src/buildutils/src/release-patch.ts @@ -0,0 +1,51 @@ +/* ----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/** + * Inspired by: https://github.com/jupyterlab/jupyterlab/blob/master/buildutils/src/patch-release.ts + */ + +import * as utils from '@jupyterlab/buildutils'; + +import commander from 'commander'; + +import { getPythonVersion, postbump } from './utils'; + +// Specify the program signature. +commander + .description('Create a patch release') + .option('--force', 'Force the upgrade') + .option('--skip-commit', 'Whether to skip commit changes') + .action((options: any) => { + // Make sure we can patch release. + const pyVersion = getPythonVersion(); + if ( + pyVersion.includes('a') || + pyVersion.includes('b') || + pyVersion.includes('rc') + ) { + throw new Error('Can only make a patch release from a final version'); + } + + // Run pre-bump actions. + utils.prebump(); + + // Patch the python version + utils.run('hatch version patch'); + + // Version the changed + let cmd = + 'jlpm run lerna version patch --no-push --force-publish --no-git-tag-version'; + if (options.force) { + cmd += ' --yes'; + } + utils.run(cmd); + + // Whether to commit after bumping + const commit = options.skipCommit !== true; + postbump(commit); + }); + +commander.parse(process.argv); diff --git a/src/buildutils/src/upgrade-lab-dependencies.ts b/src/buildutils/src/upgrade-lab-dependencies.ts new file mode 100644 index 000000000..339f1e372 --- /dev/null +++ b/src/buildutils/src/upgrade-lab-dependencies.ts @@ -0,0 +1,170 @@ +import fs from 'fs'; +import path from 'path'; + +const PACKAGE_JSON_PATHS: string[] = [ + 'app/package.json', + 'buildutils/package.json', + 'package.json', + 'packages/application-extension/package.json', + 'packages/application/package.json', + 'packages/console-extension/package.json', + 'packages/docmanager-extension/package.json', + 'packages/documentsearch-extension/package.json', + 'packages/help-extension/package.json', + 'packages/lab-extension/package.json', + 'packages/notebook-extension/package.json', + 'packages/terminal-extension/package.json', + 'packages/tree-extension/package.json', + 'packages/tree/package.json', + 'packages/ui-components/package.json', + 'ui-tests/package.json', +]; + +const DEPENDENCY_GROUP = '@jupyterlab'; + +interface IVersion { + major: number; + minor: number; + patch: number; + preRelease?: string; +} + +function parseVersion(version: string): IVersion { + const match = version.match(/^(\d+)\.(\d+)\.(\d+)(?:(a|b|rc)(\d+))?$/); + if (!match) { + throw new Error(`Invalid version format: ${version}`); + } + + const [, major, minor, patch, type, preVersion] = match; + const baseVersion = { + major: parseInt(major, 10), + minor: parseInt(minor, 10), + patch: parseInt(patch, 10), + }; + + if (type && preVersion) { + return { + ...baseVersion, + preRelease: `${type}${preVersion}`, + }; + } + + return baseVersion; +} + +function getVersionRange(version: IVersion): string { + const baseVersion = `${version.major}.${version.minor}.${version.patch}${ + version.preRelease ?? '' + }`; + return `>=${baseVersion},<${version.major}.${version.minor + 1}`; +} + +function updateVersionInFile( + filePath: string, + pattern: RegExp, + version: IVersion +): void { + const content = fs.readFileSync(filePath, 'utf-8'); + const versionRange = getVersionRange(version); + const updatedContent = content.replace(pattern, `$1${versionRange}`); + fs.writeFileSync(filePath, updatedContent); +} + +async function updatePackageJson(newVersion: string): Promise { + const url = `https://raw.githubusercontent.com/jupyterlab/jupyterlab/v${newVersion}/jupyterlab/staging/package.json`; + const response = await fetch(url); + + if (!response.ok) { + const errorMessage = `Failed to fetch package.json from ${url}. HTTP status code: ${response.status}`; + throw new Error(errorMessage); + } + + // fetch the new galata version + const galataUrl = `https://raw.githubusercontent.com/jupyterlab/jupyterlab/v${newVersion}/galata/package.json`; + const galataResponse = await fetch(galataUrl); + if (!galataResponse.ok) { + const errorMessage = `Failed to fetch galata/package.json from ${galataUrl}. HTTP status code: ${galataResponse.status}`; + throw new Error(errorMessage); + } + + const newPackageJson = await response.json(); + const galataPackageJson = await galataResponse.json(); + + for (const packageJsonPath of PACKAGE_JSON_PATHS) { + const filePath: string = path.resolve(packageJsonPath); + const existingPackageJson = JSON.parse(fs.readFileSync(filePath, 'utf-8')); + + const newDependencies = { + ...newPackageJson.devDependencies, + ...newPackageJson.resolutions, + [galataPackageJson.name]: galataPackageJson.version, + }; + + updateDependencyVersion(existingPackageJson, newDependencies); + + fs.writeFileSync( + filePath, + JSON.stringify(existingPackageJson, null, 2) + '\n' + ); + } +} + +function updateDependencyVersion(existingJson: any, newJson: any): void { + if (!existingJson) { + return; + } + + const sectionPaths: string[] = [ + 'resolutions', + 'dependencies', + 'devDependencies', + ]; + + for (const section of sectionPaths) { + if (!existingJson[section]) { + continue; + } + + const updated = existingJson[section]; + + for (const [pkg, version] of Object.entries( + existingJson[section] + )) { + if (pkg.startsWith(DEPENDENCY_GROUP) && pkg in newJson) { + if (version[0] === '^' || version[0] === '~') { + updated[pkg] = version[0] + absoluteVersion(newJson[pkg]); + } else { + updated[pkg] = absoluteVersion(newJson[pkg]); + } + } + } + } +} + +function absoluteVersion(version: string): string { + if (version.length > 0 && (version[0] === '^' || version[0] === '~')) { + return version.substring(1); + } + return version; +} + +const versionPattern = /(jupyterlab)(>=[\d.]+(?:[a|b|rc]\d+)?,<[\d.]+)/g; + +const FILES_TO_UPDATE = ['pyproject.toml', '.pre-commit-config.yaml']; + +async function upgradeLabDependencies(): Promise { + const args: string[] = process.argv.slice(2); + + if (args.length < 2) { + throw new Error('Please provide the set-version flag and version'); + } + + const version = parseVersion(args[1]); + await updatePackageJson(args[1]); // Keep original string version for package.json + + for (const file of FILES_TO_UPDATE) { + updateVersionInFile(path.resolve(file), versionPattern, version); + } +} + +upgradeLabDependencies(); diff --git a/src/buildutils/src/utils.ts b/src/buildutils/src/utils.ts new file mode 100644 index 000000000..b48a81764 --- /dev/null +++ b/src/buildutils/src/utils.ts @@ -0,0 +1,23 @@ +import { run } from '@jupyterlab/buildutils'; + +/** + * Get the current version of notebook + */ +export function getPythonVersion(): string { + const cmd = 'hatch version'; + const lines = run(cmd, { stdio: 'pipe' }, true).split('\n'); + return lines[lines.length - 1]; +} + +export function postbump(commit = true): void { + // run the integrity + run('jlpm integrity'); + + const newPyVersion = getPythonVersion(); + + // Commit changes. + if (commit) { + run(`git commit -am "Release ${newPyVersion}"`); + run(`git tag ${newPyVersion}`); + } +} diff --git a/src/buildutils/tsconfig.json b/src/buildutils/tsconfig.json new file mode 100644 index 000000000..945e3ce9d --- /dev/null +++ b/src/buildutils/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../tsconfigbase", + "compilerOptions": { + "outDir": "lib", + "rootDir": "src", + "module": "commonjs" + }, + "include": ["src/*"], + "references": [] +} diff --git a/src/custom/custom.css b/src/custom/custom.css new file mode 100644 index 000000000..1c5b24bcd --- /dev/null +++ b/src/custom/custom.css @@ -0,0 +1,7 @@ +/* +Placeholder for custom user CSS + +mainly to be overridden in profile/static/custom/custom.css + +This will always be an empty file +*/ diff --git a/src/docs/Makefile b/src/docs/Makefile new file mode 100644 index 000000000..f760bf014 --- /dev/null +++ b/src/docs/Makefile @@ -0,0 +1,199 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = build + +# User-friendly check for sphinx-build +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) +endif + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source +# the i18n builder cannot share the environment and doctrees with the others +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source + +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage spelling gettext + +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " applehelp to make an Apple Help Book" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " texinfo to make Texinfo files" + @echo " info to make Texinfo files and run them through makeinfo" + @echo " gettext to make PO message catalogs" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " xml to make Docutils-native XML files" + @echo " pseudoxml to make pseudoxml-XML files for display purposes" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + @echo " coverage to run coverage check of the documentation (if enabled)" + @echo " spelling to spell check the documentation" + +clean: + rm -rf $(BUILDDIR)/* + rm -rf source/config.rst + +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/JupyterNotebook.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/JupyterNotebook.qhc" + +applehelp: + $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp + @echo + @echo "Build finished. The help book is in $(BUILDDIR)/applehelp." + @echo "N.B. You won't be able to view it unless you put it in" \ + "~/Library/Documentation/Help or install it in your application" \ + "bundle." + +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/JupyterNotebook" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/JupyterNotebook" + @echo "# devhelp" + +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +latexpdfja: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through platex and dvipdfmx..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +texinfo: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." + @echo "Run \`make' in that directory to run these through makeinfo" \ + "(use \`make info' here to do that automatically)." + +info: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo "Running Texinfo files through makeinfo..." + make -C $(BUILDDIR)/texinfo info + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." + +gettext: + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale + @echo + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." + +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +spelling: + $(SPHINXBUILD) -b spelling $(ALLSPHINXOPTS) $(BUILDDIR)/spelling + @echo "Spell check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/spelling/output.txt." + +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." + +coverage: + $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage + @echo "Testing of coverage in the sources finished, look at the " \ + "results in $(BUILDDIR)/coverage/python.txt." + +xml: + $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml + @echo + @echo "Build finished. The XML files are in $(BUILDDIR)/xml." + +pseudoxml: + $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml + @echo + @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/src/docs/jsdoc_config.json b/src/docs/jsdoc_config.json new file mode 100644 index 000000000..200630dc2 --- /dev/null +++ b/src/docs/jsdoc_config.json @@ -0,0 +1,16 @@ +{ + "markdown": { + "parser": "gfm" + }, + "plugins": ["plugins/markdown", "jsdoc_plugin.js"], + "source": { + "include": ["../notebook/static/notebook/js/notebook.js"] + }, + "tags": { + "allowUnknownTags": true + }, + "templates": { + "cleverLinks": false, + "monospaceLinks": false + } +} diff --git a/src/docs/jsdoc_plugin.js b/src/docs/jsdoc_plugin.js new file mode 100644 index 000000000..6fd2109e3 --- /dev/null +++ b/src/docs/jsdoc_plugin.js @@ -0,0 +1,14 @@ +exports.handlers = { + newDoclet: function (e) { + // e.doclet will refer to the newly created doclet + // you can read and modify properties of that doclet if you wish + if (typeof e.doclet.name === 'string') { + if (e.doclet.name[0] === '_') { + console.log( + 'Private method "' + e.doclet.longname + '" not documented.' + ); + e.doclet.memberof = ''; + } + } + }, +}; diff --git a/src/docs/make.bat b/src/docs/make.bat new file mode 100644 index 000000000..19c5b047b --- /dev/null +++ b/src/docs/make.bat @@ -0,0 +1,263 @@ +@ECHO OFF + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set BUILDDIR=build +set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source +set I18NSPHINXOPTS=%SPHINXOPTS% source +if NOT "%PAPER%" == "" ( + set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% + set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% +) + +if "%1" == "" goto help + +if "%1" == "help" ( + :help + echo.Please use `make ^` where ^ is one of + echo. html to make standalone HTML files + echo. dirhtml to make HTML files named index.html in directories + echo. singlehtml to make a single large HTML file + echo. pickle to make pickle files + echo. json to make JSON files + echo. htmlhelp to make HTML files and a HTML help project + echo. qthelp to make HTML files and a qthelp project + echo. devhelp to make HTML files and a Devhelp project + echo. epub to make an epub + echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter + echo. text to make text files + echo. man to make manual pages + echo. texinfo to make Texinfo files + echo. gettext to make PO message catalogs + echo. changes to make an overview over all changed/added/deprecated items + echo. xml to make Docutils-native XML files + echo. pseudoxml to make pseudoxml-XML files for display purposes + echo. linkcheck to check all external links for integrity + echo. doctest to run all doctests embedded in the documentation if enabled + echo. coverage to run coverage check of the documentation if enabled + goto end +) + +if "%1" == "clean" ( + for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i + del /q /s %BUILDDIR%\* + goto end +) + + +REM Check if sphinx-build is available and fallback to Python version if any +%SPHINXBUILD% 2> nul +if errorlevel 9009 goto sphinx_python +goto sphinx_ok + +:sphinx_python + +set SPHINXBUILD=python -m sphinx.__init__ +%SPHINXBUILD% 2> nul +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +:sphinx_ok + + +if "%1" == "html" ( + %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/html. + goto end +) + +if "%1" == "dirhtml" ( + %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. + goto end +) + +if "%1" == "singlehtml" ( + %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. + goto end +) + +if "%1" == "pickle" ( + %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the pickle files. + goto end +) + +if "%1" == "json" ( + %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the JSON files. + goto end +) + +if "%1" == "htmlhelp" ( + %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run HTML Help Workshop with the ^ +.hhp project file in %BUILDDIR%/htmlhelp. + goto end +) + +if "%1" == "qthelp" ( + %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run "qcollectiongenerator" with the ^ +.qhcp project file in %BUILDDIR%/qthelp, like this: + echo.^> qcollectiongenerator %BUILDDIR%\qthelp\JupyterNotebook.qhcp + echo.To view the help file: + echo.^> assistant -collectionFile %BUILDDIR%\qthelp\JupyterNotebook.ghc + goto end +) + +if "%1" == "devhelp" ( + %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. + goto end +) + +if "%1" == "epub" ( + %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The epub file is in %BUILDDIR%/epub. + goto end +) + +if "%1" == "latex" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "latexpdf" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf + cd %~dp0 + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "latexpdfja" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf-ja + cd %~dp0 + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "text" ( + %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The text files are in %BUILDDIR%/text. + goto end +) + +if "%1" == "man" ( + %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The manual pages are in %BUILDDIR%/man. + goto end +) + +if "%1" == "texinfo" ( + %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. + goto end +) + +if "%1" == "gettext" ( + %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The message catalogs are in %BUILDDIR%/locale. + goto end +) + +if "%1" == "changes" ( + %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes + if errorlevel 1 exit /b 1 + echo. + echo.The overview file is in %BUILDDIR%/changes. + goto end +) + +if "%1" == "linkcheck" ( + %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck + if errorlevel 1 exit /b 1 + echo. + echo.Link check complete; look for any errors in the above output ^ +or in %BUILDDIR%/linkcheck/output.txt. + goto end +) + +if "%1" == "doctest" ( + %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest + if errorlevel 1 exit /b 1 + echo. + echo.Testing of doctests in the sources finished, look at the ^ +results in %BUILDDIR%/doctest/output.txt. + goto end +) + +if "%1" == "coverage" ( + %SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage + if errorlevel 1 exit /b 1 + echo. + echo.Testing of coverage in the sources finished, look at the ^ +results in %BUILDDIR%/coverage/python.txt. + goto end +) + +if "%1" == "xml" ( + %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The XML files are in %BUILDDIR%/xml. + goto end +) + +if "%1" == "pseudoxml" ( + %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. + goto end +) + +:end diff --git a/src/docs/resources/Info.plist.example b/src/docs/resources/Info.plist.example new file mode 100644 index 000000000..bfdd89bf0 --- /dev/null +++ b/src/docs/resources/Info.plist.example @@ -0,0 +1,20 @@ + # Add this into the info.plist file of an application + # and the icns icon in Contents/Resources + # then move the application twice : + # https://superuser.com/questions/178316/how-to-set-an-icon-for-a-file-type-on-mac + + CFBundleDocumentTypes + + + CFBundleTypeExtensions + + ipynb + + CFBundleTypeIconFile + ipynb_mac_icon + CFBundleTypeName + IPython notebook file + CFBundleTypeRole + None + + diff --git a/src/docs/resources/generate_icons.sh b/src/docs/resources/generate_icons.sh new file mode 100644 index 000000000..a72b2d867 --- /dev/null +++ b/src/docs/resources/generate_icons.sh @@ -0,0 +1,16 @@ +#!/bin/bash +INKSCAPE=inkscape + +${INKSCAPE} -z -C --file=ipynb_icon_16x16.svg --export-png=ipynb_icon_16x16_uncrush.png +${INKSCAPE} -z -C --file=ipynb_icon_24x24.svg --export-png=ipynb_icon_24x24_uncrush.png +${INKSCAPE} -z -C --file=ipynb_icon_32x32.svg --export-png=ipynb_icon_32x32_uncrush.png +${INKSCAPE} -z -C --file=ipynb_icon_512x512.svg --export-png=ipynb_icon_64x64_uncrush.png -w 64 -h 64 +${INKSCAPE} -z -C --file=ipynb_icon_512x512.svg --export-png=ipynb_icon_128x128_uncrush.png -w 128 -h 128 +${INKSCAPE} -z -C --file=ipynb_icon_512x512.svg --export-png=ipynb_icon_256x256_uncrush.png -w 256 -h 256 +${INKSCAPE} -z -C --file=ipynb_icon_512x512.svg --export-png=ipynb_icon_512x512_uncrush.png -w 512 -h 512 + + +for file in `ls *_uncrush.png`; do + pngcrush -brute -l 9 -reduce -rem alla -rem text -rem time -rem gAMA -rem cHRM -rem iCCP -rem sRGB $file `basename $file _uncrush.png`.png + rm $file +done diff --git a/src/docs/resources/icon_16x16.svg b/src/docs/resources/icon_16x16.svg new file mode 100644 index 000000000..29145e80d --- /dev/null +++ b/src/docs/resources/icon_16x16.svg @@ -0,0 +1,149 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/docs/resources/icon_24x24.svg b/src/docs/resources/icon_24x24.svg new file mode 100644 index 000000000..c50ef1f07 --- /dev/null +++ b/src/docs/resources/icon_24x24.svg @@ -0,0 +1,167 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/docs/resources/icon_32x32.svg b/src/docs/resources/icon_32x32.svg new file mode 100644 index 000000000..7a1936226 --- /dev/null +++ b/src/docs/resources/icon_32x32.svg @@ -0,0 +1,311 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Jupyter + diff --git a/src/docs/resources/icon_512x512.svg b/src/docs/resources/icon_512x512.svg new file mode 100644 index 000000000..f7f028166 --- /dev/null +++ b/src/docs/resources/icon_512x512.svg @@ -0,0 +1,226 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Jupyter + + diff --git a/src/docs/resources/ipynb.icns b/src/docs/resources/ipynb.icns new file mode 100644 index 000000000..7f3898c65 Binary files /dev/null and b/src/docs/resources/ipynb.icns differ diff --git a/src/docs/resources/ipynb.iconset/icon_1024x1024.png b/src/docs/resources/ipynb.iconset/icon_1024x1024.png new file mode 100644 index 000000000..b2c8f07dc Binary files /dev/null and b/src/docs/resources/ipynb.iconset/icon_1024x1024.png differ diff --git a/src/docs/resources/ipynb.iconset/icon_128x128.png b/src/docs/resources/ipynb.iconset/icon_128x128.png new file mode 100644 index 000000000..5e50eee51 Binary files /dev/null and b/src/docs/resources/ipynb.iconset/icon_128x128.png differ diff --git a/src/docs/resources/ipynb.iconset/icon_128x128@2x.png b/src/docs/resources/ipynb.iconset/icon_128x128@2x.png new file mode 100644 index 000000000..3acf85895 Binary files /dev/null and b/src/docs/resources/ipynb.iconset/icon_128x128@2x.png differ diff --git a/src/docs/resources/ipynb.iconset/icon_16x16.png b/src/docs/resources/ipynb.iconset/icon_16x16.png new file mode 100644 index 000000000..d2a5c7a4b Binary files /dev/null and b/src/docs/resources/ipynb.iconset/icon_16x16.png differ diff --git a/src/docs/resources/ipynb.iconset/icon_16x16@2x.png b/src/docs/resources/ipynb.iconset/icon_16x16@2x.png new file mode 100644 index 000000000..46b7e1cb0 Binary files /dev/null and b/src/docs/resources/ipynb.iconset/icon_16x16@2x.png differ diff --git a/src/docs/resources/ipynb.iconset/icon_24x24.png b/src/docs/resources/ipynb.iconset/icon_24x24.png new file mode 100644 index 000000000..caaa7853b Binary files /dev/null and b/src/docs/resources/ipynb.iconset/icon_24x24.png differ diff --git a/src/docs/resources/ipynb.iconset/icon_24x24@2x.png b/src/docs/resources/ipynb.iconset/icon_24x24@2x.png new file mode 100644 index 000000000..d35831dda Binary files /dev/null and b/src/docs/resources/ipynb.iconset/icon_24x24@2x.png differ diff --git a/src/docs/resources/ipynb.iconset/icon_256x256.png b/src/docs/resources/ipynb.iconset/icon_256x256.png new file mode 100644 index 000000000..3acf85895 Binary files /dev/null and b/src/docs/resources/ipynb.iconset/icon_256x256.png differ diff --git a/src/docs/resources/ipynb.iconset/icon_256x256@2x.png b/src/docs/resources/ipynb.iconset/icon_256x256@2x.png new file mode 100644 index 000000000..6b65de3e5 Binary files /dev/null and b/src/docs/resources/ipynb.iconset/icon_256x256@2x.png differ diff --git a/src/docs/resources/ipynb.iconset/icon_32x32.png b/src/docs/resources/ipynb.iconset/icon_32x32.png new file mode 100644 index 000000000..a4dfcfd75 Binary files /dev/null and b/src/docs/resources/ipynb.iconset/icon_32x32.png differ diff --git a/src/docs/resources/ipynb.iconset/icon_32x32@2x.png b/src/docs/resources/ipynb.iconset/icon_32x32@2x.png new file mode 100644 index 000000000..cefed98e6 Binary files /dev/null and b/src/docs/resources/ipynb.iconset/icon_32x32@2x.png differ diff --git a/src/docs/resources/ipynb.iconset/icon_48x48.png b/src/docs/resources/ipynb.iconset/icon_48x48.png new file mode 100644 index 000000000..0f57dd0a2 Binary files /dev/null and b/src/docs/resources/ipynb.iconset/icon_48x48.png differ diff --git a/src/docs/resources/ipynb.iconset/icon_512x512.png b/src/docs/resources/ipynb.iconset/icon_512x512.png new file mode 100644 index 000000000..6b65de3e5 Binary files /dev/null and b/src/docs/resources/ipynb.iconset/icon_512x512.png differ diff --git a/src/docs/resources/ipynb.iconset/icon_512x512@2x.png b/src/docs/resources/ipynb.iconset/icon_512x512@2x.png new file mode 100644 index 000000000..83e165003 Binary files /dev/null and b/src/docs/resources/ipynb.iconset/icon_512x512@2x.png differ diff --git a/src/docs/resources/ipynb.iconset/icon_64x64.png b/src/docs/resources/ipynb.iconset/icon_64x64.png new file mode 100644 index 000000000..e21b4575a Binary files /dev/null and b/src/docs/resources/ipynb.iconset/icon_64x64.png differ diff --git a/src/docs/resources/ipynb.iconset/icon_64x64@2x.png b/src/docs/resources/ipynb.iconset/icon_64x64@2x.png new file mode 100644 index 000000000..5e50eee51 Binary files /dev/null and b/src/docs/resources/ipynb.iconset/icon_64x64@2x.png differ diff --git a/src/docs/resources/running_code_med.png b/src/docs/resources/running_code_med.png new file mode 100644 index 000000000..d45a3fb7b Binary files /dev/null and b/src/docs/resources/running_code_med.png differ diff --git a/src/docs/source/_static/.gitkeep b/src/docs/source/_static/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/src/docs/source/_static/changelog_assets/7.5-debugger.webp b/src/docs/source/_static/changelog_assets/7.5-debugger.webp new file mode 100644 index 000000000..47ce194f6 Binary files /dev/null and b/src/docs/source/_static/changelog_assets/7.5-debugger.webp differ diff --git a/src/docs/source/_static/changelog_assets/7.5-media-player.webp b/src/docs/source/_static/changelog_assets/7.5-media-player.webp new file mode 100644 index 000000000..e21cf7857 Binary files /dev/null and b/src/docs/source/_static/changelog_assets/7.5-media-player.webp differ diff --git a/src/docs/source/_static/images/cell-tags-toolbar.png b/src/docs/source/_static/images/cell-tags-toolbar.png new file mode 100644 index 000000000..cab448f9e Binary files /dev/null and b/src/docs/source/_static/images/cell-tags-toolbar.png differ diff --git a/src/docs/source/_static/images/cell-toolbar-41.png b/src/docs/source/_static/images/cell-toolbar-41.png new file mode 100644 index 000000000..8a93e64c4 Binary files /dev/null and b/src/docs/source/_static/images/cell-toolbar-41.png differ diff --git a/src/docs/source/_static/images/command-palette-41.png b/src/docs/source/_static/images/command-palette-41.png new file mode 100644 index 000000000..272f11fa1 Binary files /dev/null and b/src/docs/source/_static/images/command-palette-41.png differ diff --git a/src/docs/source/_static/images/dashboard-sort.png b/src/docs/source/_static/images/dashboard-sort.png new file mode 100644 index 000000000..020cc0416 Binary files /dev/null and b/src/docs/source/_static/images/dashboard-sort.png differ diff --git a/src/docs/source/_static/images/find-replace-41.png b/src/docs/source/_static/images/find-replace-41.png new file mode 100644 index 000000000..73e57a68e Binary files /dev/null and b/src/docs/source/_static/images/find-replace-41.png differ diff --git a/src/docs/source/_static/images/multi-select-41.png b/src/docs/source/_static/images/multi-select-41.png new file mode 100644 index 000000000..3c8cd51a0 Binary files /dev/null and b/src/docs/source/_static/images/multi-select-41.png differ diff --git a/src/docs/source/_static/images/notebook-running-code.png b/src/docs/source/_static/images/notebook-running-code.png new file mode 100644 index 000000000..d45a3fb7b Binary files /dev/null and b/src/docs/source/_static/images/notebook-running-code.png differ diff --git a/src/docs/source/_static/images/shortcut-editor.png b/src/docs/source/_static/images/shortcut-editor.png new file mode 100644 index 000000000..efe5fce68 Binary files /dev/null and b/src/docs/source/_static/images/shortcut-editor.png differ diff --git a/src/docs/source/_static/images/table-style-after.png b/src/docs/source/_static/images/table-style-after.png new file mode 100644 index 000000000..dadbed453 Binary files /dev/null and b/src/docs/source/_static/images/table-style-after.png differ diff --git a/src/docs/source/_static/images/table-style-before.png b/src/docs/source/_static/images/table-style-before.png new file mode 100644 index 000000000..1f4d976b2 Binary files /dev/null and b/src/docs/source/_static/images/table-style-before.png differ diff --git a/src/docs/source/_static/jupyter_logo.svg b/src/docs/source/_static/jupyter_logo.svg new file mode 100644 index 000000000..37f040e6b --- /dev/null +++ b/src/docs/source/_static/jupyter_logo.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/docs/source/_static/logo-rectangle-dark.svg b/src/docs/source/_static/logo-rectangle-dark.svg new file mode 100644 index 000000000..7a79f6fe3 --- /dev/null +++ b/src/docs/source/_static/logo-rectangle-dark.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/docs/source/_static/logo-rectangle.svg b/src/docs/source/_static/logo-rectangle.svg new file mode 100644 index 000000000..4cb08d30e --- /dev/null +++ b/src/docs/source/_static/logo-rectangle.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/docs/source/_static/zulip-icon-square.svg b/src/docs/source/_static/zulip-icon-square.svg new file mode 100644 index 000000000..fee9226c0 --- /dev/null +++ b/src/docs/source/_static/zulip-icon-square.svg @@ -0,0 +1,1927 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + zulip/static/images/logo/zulip-icon-square.svg at main 路 zulip/zulip + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ Skip to content + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + +
+ +
+ + + + + + + + +
+ + + + + + +
+ + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + +
+ Open in github.dev + Open in a new github.dev tab + Open in codespace + + + + + + + + + + + + + + + + + + +

Files

Latest commit

History

History
1 lines (1 loc) 路 756 Bytes

zulip-icon-square.svg

File metadata and controls

1 lines (1 loc) 路 756 Bytes
+
+ + + + +
+ +
+ +
+
+ +
+ +
+

Footer

+ + + + +
+
+ + + + + © 2024 GitHub, Inc. + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + diff --git a/src/docs/source/conf.py b/src/docs/source/conf.py new file mode 100644 index 000000000..80c94d1c5 --- /dev/null +++ b/src/docs/source/conf.py @@ -0,0 +1,406 @@ +# Jupyter Notebook documentation build configuration file, created by +# sphinx-quickstart on Mon Apr 13 09:51:11 2015. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import logging +import os +import shutil +import sys + +logger = logging.getLogger(__name__) +logging.basicConfig() + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. + +# DEBUG for RTD +logger.info("DEBUG:: sys.path") +logger.info("================") +for item in sys.path: + logger.info(item) + +# add repo root to sys.path +# here = root/docs/source +here = os.path.abspath(os.path.dirname(__file__)) +repo_root = os.path.dirname(os.path.dirname(here)) +sys.path.insert(0, repo_root) + +# Copy the markdown file here +shutil.copy(os.path.join(repo_root, "CHANGELOG.md"), os.path.join(here, "changelog.md")) + +# Copy the contributing file here +shutil.copy(os.path.join(repo_root, "CONTRIBUTING.md"), os.path.join(here, "contributing.md")) + +logger.info("repo_root") +logger.info("=====================") +logger.info(repo_root) + +# DEBUG for post insert on RTD +logger.info("DEBUG:: Post insert to sys.path") +logger.info("===============================") +for item in sys.path: + logger.info(item) + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + "sphinx.ext.autodoc", + "sphinx.ext.doctest", + "sphinx.ext.intersphinx", + "sphinx.ext.autosummary", + "sphinx.ext.mathjax", + "IPython.sphinxext.ipython_console_highlighting", + "nbsphinx", + "sphinxcontrib_github_alt", + "myst_parser", +] + +try: + import enchant # noqa: F401 + + extensions += ["sphinxcontrib.spelling"] +except ImportError: + pass + +myst_enable_extensions = ["html_image"] +myst_update_mathjax = False + +# Add any paths that contain templates here, relative to this directory. +templates_path = ["_templates"] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# source_suffix = ['.rst', '.md'] + +# The encoding of source files. +# source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = "index" + +# General information about the project. +project = "Jupyter Notebook" +copyright = "2015, Jupyter Team, https://jupyter.org" +author = "The Jupyter Team" + +# ghissue config +github_project_url = "https://github.com/jupyter/notebook" + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +_version_py = os.path.join(here, "../../notebook/_version.py") +version_ns = {} +exec(compile(open(_version_py).read(), _version_py, "exec"), version_ns) # noqa: S102, SIM115 +# The short X.Y version. +version = "{}.{}".format(*version_ns["version_info"][:2]) +# The full version, including alpha/beta/rc tags. +release = version_ns["__version__"] + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = "en" + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +# today = '' +# Else, today_fmt is used as the format for a strftime call. +# today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = [ + "examples/Notebook/.ipynb_checkpoints", + "examples/Notebook/nbpackage/*.ipynb", + "examples/Notebook/nbpackage/nbs/*.ipynb", +] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +# default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +# add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +# add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +# show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = "sphinx" + +# A list of ignored prefixes for module index sorting. +# modindex_common_prefix = [] + +# If true, keep warnings as "system message" paragraphs in the built documents. +# keep_warnings = False + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = False + + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = "pydata_sphinx_theme" + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +html_theme_options = { + "header_links_before_dropdown": 5, + "icon_links": [ + { + "name": "jupyter.org", + "url": "https://jupyter.org", + "icon": "_static/jupyter_logo.svg", + "type": "local", + }, + { + "name": "GitHub", + "url": "https://github.com/jupyter/notebook", + "icon": "fab fa-github-square", + }, + { + "name": "Discourse", + "url": "https://discourse.jupyter.org/c/notebook/31", + "icon": "fab fa-discourse", + }, + { + "name": "Zulip", + "url": "https://jupyter.zulipchat.com/", + "icon": "_static/zulip-icon-square.svg", + "type": "local", + }, + ], + "logo": { + "alt_text": "Jupyter", + "image_light": "_static/logo-rectangle.svg", + "image_dark": "_static/logo-rectangle-dark.svg", + }, + "use_edit_page_button": True, + "navigation_with_keys": False, +} + +# Output for github to be used in links +html_context = { + "github_user": "jupyter", # Username + "github_repo": "notebook", # Repo name + "github_version": "main", # Version + "doc_path": "docs/source/", # Path in the checkout to the docs root +} + +# Add any paths that contain custom themes here, relative to this directory. +# html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +# html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +# html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +html_logo = "examples/images/jupyter_logo.png" + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +# html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +# NOTE: Sphinx's 'make html' builder will throw a warning about an unfound +# _static directory. Do not remove or comment out html_static_path +# since it is needed to properly generate _static in the build directory +html_static_path = ["_static"] + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +# html_extra_path = [] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +# html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +# html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +# html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +# html_additional_pages = {} + +# If false, no module index is generated. +# html_domain_indices = True + +# If false, no index is generated. +# html_use_index = True + +# If true, the index is split into individual pages for each letter. +# html_split_index = False + +# If true, links to the reST sources are added to the pages. +# html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +# html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +# html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +# html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +# html_file_suffix = None + +# Language to be used for generating the HTML full-text search index. +# Sphinx supports the following languages: +# 'da', 'de', 'en', 'es', 'fi', 'fr', 'h', 'it', 'ja' +# 'nl', 'no', 'pt', 'ro', 'r', 'sv', 'tr' +# html_search_language = 'en' + +# A dictionary with options for the search language support, empty by default. +# Now only 'ja' uses this config value +# html_search_options = {'type': 'default'} + +# The name of a javascript file (relative to the configuration directory) that +# implements a search results scorer. If empty, the default will be used. +# html_search_scorer = 'scorer.js' + +# Output file base name for HTML help builder. +htmlhelp_basename = "JupyterNotebookdoc" + +# This will ensure that we use the correctly set environment for canonical URLs +# Old Read the Docs injections makes it point only to the default version, +# for instance /en/stable/ +html_baseurl = os.environ.get("READTHEDOCS_CANONICAL_URL", "/") + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = {} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + ( + master_doc, + "JupyterNotebook.tex", + "Jupyter Notebook Documentation", + "https://jupyter.org", + "manual", + ), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +# latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +# latex_use_parts = False + +# If true, show page references after internal links. +# latex_show_pagerefs = False + +# If true, show URL addresses after external links. +# latex_show_urls = False + +# Documents to append as an appendix to all manuals. +# latex_appendices = [] + +# If false, no module index is generated. +# latex_domain_indices = True + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [(master_doc, "jupyternotebook", "Jupyter Notebook Documentation", [author], 1)] + +# If true, show URL addresses after external links. +# man_show_urls = False + + +# -- Options for link checks ---------------------------------------------- + +linkcheck_ignore = [r"http://127\.0\.0\.1/*"] + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + ( + master_doc, + "JupyterNotebook", + "Jupyter Notebook Documentation", + author, + "JupyterNotebook", + "One line description of project.", + "Miscellaneous", + ), +] + +# Documents to append as an appendix to all manuals. +# texinfo_appendices = [] + +# If false, no module index is generated. +# texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +# texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +# texinfo_no_detailmenu = False + +intersphinx_mapping = { + "ipython": ("https://ipython.readthedocs.io/en/stable/", None), + "nbconvert": ("https://nbconvert.readthedocs.io/en/latest/", None), + "nbformat": ("https://nbformat.readthedocs.io/en/latest/", None), + "jupyter": ("https://jupyter.readthedocs.io/en/latest/", None), +} + +spelling_lang = "en_US" +spelling_word_list_filename = "spelling_wordlist.txt" + + +def setup(app): + app.add_css_file("https://docs.jupyter.org/en/latest/_static/jupyter.css") diff --git a/src/docs/source/configuration.md b/src/docs/source/configuration.md new file mode 100644 index 000000000..990d09438 --- /dev/null +++ b/src/docs/source/configuration.md @@ -0,0 +1,10 @@ +# Configuration + +```{toctree} +:caption: Configuration +:maxdepth: 1 + +configuring/config_overview +Security +extending/index.rst +``` diff --git a/src/docs/source/configuring/config_overview.md b/src/docs/source/configuring/config_overview.md new file mode 100644 index 000000000..3755b2db3 --- /dev/null +++ b/src/docs/source/configuring/config_overview.md @@ -0,0 +1,73 @@ +(configuration-overview)= + +# Configuration Overview + +Beyond the default configuration settings, you can configure a rich array of +options to suit your workflow. Here are areas that are commonly configured +when using Jupyter Notebook: + +> - {ref}`Jupyter's common configuration system ` +> - {ref}`Jupyter Server ` +> - {ref}`Notebook extensions ` + +Let's look at highlights of each area. + +(configure-common)= + +## Jupyter's Common Configuration system + +Jupyter applications, from the Notebook to JupyterHub to nbgrader, share a +common configuration system. The process for creating a configuration file +and editing settings is similar for all the Jupyter applications. + +> - [Jupyter鈥檚 Common Configuration Approach](https://jupyter.readthedocs.io/en/latest/use/config.html) +> - [Common Directories and File Locations](https://jupyter.readthedocs.io/en/latest/use/jupyter-directories.html) +> - [Language kernels](https://jupyter.readthedocs.io/en/latest/projects/kernels.html) +> - [traitlets](https://traitlets.readthedocs.io/en/latest/config.html#module-traitlets.config) +> provide a low-level architecture for configuration. + +### Disabling Custom CSS + +Custom CSS is loaded by default as was done with Jupyter Notebook 6. In the jupyter configuration directory, the `/.jupyter/custom/custom.css` file will be loaded unless the the application is initialized with the `custom_css` flag with the argument set to `False` as in `--JupyterNotebookApp.custom_css=False`. + +(configure-jupyter-server)= + +## Jupyter server + +The Jupyter Server runs the language kernel and communicates with the +front-end Notebook client (i.e. the familiar notebook interface). + +> - Configuring the Jupyter Server +> +> > To create a `jupyter_server_config.py` file in the `.jupyter` +> > directory, with all the defaults commented out, use the following +> > command: +> > +> > ``` +> > $ jupyter server --generate-config +> > ``` +> +> - [Running a Jupyter Server](https://jupyter-server.readthedocs.io/en/stable/operators/public-server.html) +> +> - Related: [Configuring a language kernel](https://ipython.readthedocs.io/en/latest/install/kernel_install.html) +> to run in the Jupyter Server enables your server to run other languages, like R or Julia. + +```{warning} +Jupyter Notebook 7 is now based on Jupyter Server. This may break some previous `notebook` imports you may have been using, such as `notebook.auth` or `notebook.notebookapp`. + +Check out the [migration guide](../migrating/server-imports.md) to learn more on how to update these server imports. +``` + +(configure-nbextensions)= + +## Notebook extensions + +The Notebook frontend can be extending with JupyterLab extensions. + +See the {ref}`Frontend Extension Guide ` for more information. + +[Security in Jupyter notebooks:](https://jupyter-server.readthedocs.io/en/stable/operators/security.html) +Since security policies vary from organization to organization, we encourage you to +consult with your security team on settings that would be best for your use +cases. Our documentation offers some responsible security practices, and we +recommend becoming familiar with the practices. diff --git a/src/docs/source/configuring/interface_customization.md b/src/docs/source/configuring/interface_customization.md new file mode 100644 index 000000000..6ae6981c2 --- /dev/null +++ b/src/docs/source/configuring/interface_customization.md @@ -0,0 +1,62 @@ +# Interface Customization + +Multiple elements in the Notebook interface can be customized via the Settings Editor. + +## Layout + +By default some widgets are displayed in pre-defined parts of the user interface, which are often called "areas" or "regions". +For example the table of contents will be displayed in the `left` area by default, while the debugger will be displayed in the `right` area. + +However the positioning of some of these components can also be customized via the Settings Editor. Below are a few examples of how to do this. + +### Open the Markdown Preview on the left + +It is often useful to be able to see a rendered preview of a Markdown document while editing it. + +By default the Markdown Preview opens on the right side of the application. However it is also possible to open it on the left side by changing the Notebook Shell settings in the Advanced Settings Editor: + +```json +{ + "layout": { + "Markdown Preview": { + "area": "left" + } + } +} +``` + +![a screenshot showing the markdown preview in Notebook 7](https://github.com/jupyter/notebook/assets/591645/3faf0823-ec6f-4d5f-a66f-d6f53dc383de) + +### Configuring a third-party widget + +Third-party extensions can also add widgets to the application shell. This is for example the case with the [Voila extension](https://github.com/voila-dashboards/voila), which adds a preview widget to visualize a notebook as a dashboard. + +By default in JupyterLab the Voila Preview is added to the `main` area next to the corresponding notebook. With Notebook 7 it is possible to move the Voila Preview to the `right` area by changing the Notebook Shell setting in the Advanced Settings Editor as follows: + +```json +{ + "layout": { + "Voila Preview": { + "area": "right" + } + } +} +``` + +![a screenshot showing the voila preview in Notebook 7](https://github.com/jupyter/notebook/assets/591645/524ade3b-05de-4d3b-8ff9-089f2d38ac77) + +```{note} +Refer to the [JupyterLab Layout Documentation](https://jupyterlab.readthedocs.io/en/latest/user/interface_customization.html#layout) +to learn more about the default positioning of other UI elements. +``` + +## Toolbars, Menu bar and Context Menu + +It is also possible to customize toolbars, menus and context menu entries via the Settings Editor. + +For example the items of the notebook toolbar can be reordered, or some menu entries can be hidden. + +```{note} +Refer to the [JupyterLab Documentation](https://jupyterlab.readthedocs.io/en/latest/user/interface_customization.html) +to learn more about general interface customization via the settings editor. +``` diff --git a/src/docs/source/configuring/plugins.md b/src/docs/source/configuring/plugins.md new file mode 100644 index 000000000..8a881a1aa --- /dev/null +++ b/src/docs/source/configuring/plugins.md @@ -0,0 +1,21 @@ +# Managing plugins + +Notebook 7 uses the same extension system as JupyterLab. An extension can provide multiple plugins. + +```{note} +See the [JupyterLab documentation](https://jupyterlab.readthedocs.io/en/latest/user/extensions.html) to learn more about the extension system. +``` + +## Examples + +### Disabling the download button + +By default Notebook 7 provides a way to download files from the file browser. This functionality consists of a context menu entry and a main menu entry. They are provided by an application plugin that can be disabled. + +To disable the download entry of file browser context menus, open a terminal and run the following command: + +```text +jupyter labextension disable @jupyterlab/filebrowser-extension:download +``` + +Then restart the application and refresh the page. diff --git a/src/docs/source/contributor.md b/src/docs/source/contributor.md new file mode 100644 index 000000000..977ea8270 --- /dev/null +++ b/src/docs/source/contributor.md @@ -0,0 +1,9 @@ +# Contributing + +```{toctree} +:caption: Contributor Documentation +:maxdepth: 1 + +contributing +development_faq +``` diff --git a/src/docs/source/custom_css.md b/src/docs/source/custom_css.md new file mode 100644 index 000000000..ea9721ac3 --- /dev/null +++ b/src/docs/source/custom_css.md @@ -0,0 +1,79 @@ +# Applying Custom CSS + +To apply custom CSS, you can add a `/custom/custom.css` file in the jupyter `config` directory. You can find the path, `~/.jupyter`, to this directory by running `jupyter --paths`. There you can create a folder named `custom` and create a `custom.css` file within the folder. + +## Jupyter Styling + +You can use a custom CSS file to modify default Jupyter styling. + +```css +/* Modify Jupyter Styles */ +#top-panel-wrapper, +#jp-top-bar { + background-color: #aecad4 !important; +} + +#menu-panel-wrapper, +#jp-MainMenu, +#menu-panel { + background-color: #aecad4 !important; +} + +.jp-NotebookPanel-toolbar { + background-color: #aecad4 !important; +} +.lm-MenuBar-content { + color: #02484d; +} +``` + +![a screenshot custom jupyter styling](https://user-images.githubusercontent.com/12378147/245519958-17ce04e7-edc2-434e-8d93-a5c2de9fb225.png) + +## Markdown + +Another potential application for custom CSS is styling markdown. + +```css +/* Headings */ +h1, +h2 { + font-family: Impact, Charcoal, sans-serif; + font-weight: bold; + text-shadow: 2px 2px 4px #000000; +} + +h1 { + font-size: 52px; + margin-bottom: 40px; + color: #10929e; + text-decoration: underline; +} + +h2 { + font-size: 448px; + margin-bottom: 32px; + color: #76b4be; + text-transform: uppercase; +} + +/* Block Quotes */ +blockquote { + font-family: Georgia, serif; + font-size: 16px; + color: #19085c; + border-left: 8px solid #effffc; + background-color: #eafcff; + padding: 20px; +} + +/* Lists */ +ul, +ol { + font-family: Verdana, Geneva, sans-serif; + font-size: 18px; + color: #333333; + margin-bottom: 24px; +} +``` + +![a screenshot of custom markdown styling](https://user-images.githubusercontent.com/12378147/245520291-968848d3-d336-4523-a046-023b15082ff8.png) diff --git a/src/docs/source/development_faq.md b/src/docs/source/development_faq.md new file mode 100644 index 000000000..5ba4d37c0 --- /dev/null +++ b/src/docs/source/development_faq.md @@ -0,0 +1,17 @@ +(development-faq)= + +# Developer FAQ + +1. How do I install a prerelease version such as a beta or release candidate? + +You can install a prerelease version of the notebook using the `--pre` flag with `pip`: + +```bash +python -m pip install notebook --pre --upgrade +``` + +If you are using `conda` or `mamba`, you can install a prerelease version of the notebook using the alpha or beta label. For example, to install the latest alpha release, you can run: + +```bash +conda install -c conda-forge -c conda-forge/label/notebook_alpha notebook=7.0.0a18 +``` diff --git a/src/docs/source/examples/Notebook/Connecting with the Qt Console.ipynb b/src/docs/source/examples/Notebook/Connecting with the Qt Console.ipynb new file mode 100644 index 000000000..479420041 --- /dev/null +++ b/src/docs/source/examples/Notebook/Connecting with the Qt Console.ipynb @@ -0,0 +1,130 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Connecting to an existing IPython kernel using the Qt Console" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The Frontend/Kernel Model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The traditional IPython (`ipython`) consists of a single process that combines a terminal based UI with the process that runs the users code.\n", + "\n", + "While this traditional application still exists, the modern Jupyter consists of two processes:\n", + "\n", + "* Kernel: this is the process that runs the users code.\n", + "* Frontend: this is the process that provides the user interface where the user types code and sees results.\n", + "\n", + "Jupyter currently has 3 frontends:\n", + "\n", + "* Terminal Console (`jupyter console`)\n", + "* Qt Console (`jupyter qtconsole`)\n", + "* Notebook (`jupyter notebook`)\n", + "\n", + "The Kernel and Frontend communicate over a ZeroMQ/JSON based messaging protocol, which allows multiple Frontends (even of different types) to communicate with a single Kernel. This opens the door for all sorts of interesting things, such as connecting a Console or Qt Console to a Notebook's Kernel. For example, you may want to connect a Qt console to your Notebook's Kernel and use it as a help\n", + "browser, calling `??` on objects in the Qt console (whose pager is more flexible than the\n", + "one in the notebook). \n", + "\n", + "This Notebook describes how you would connect another Frontend to an IPython Kernel that is associated with a Notebook.\n", + "The commands currently given here are specific to the IPython kernel." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Manual connection" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To connect another Frontend to a Kernel manually, you first need to find out the connection information for the Kernel using the `%connect_info` magic:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%connect_info" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can see that this magic displays everything you need to connect to this Notebook's Kernel." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Automatic connection using a new Qt Console" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also start a new Qt Console connected to your current Kernel by using the `%qtconsole` magic. This will detect the necessary connection\n", + "information and start the Qt Console for you automatically." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a = 10" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%qtconsole" + ] + } + ], + "metadata": { + "nbsphinx": { + "execute": "never" + }, + "kernelspec": { + "display_name": "Python 3", + "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.5.2" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/src/docs/source/examples/Notebook/Custom Keyboard Shortcuts.ipynb b/src/docs/source/examples/Notebook/Custom Keyboard Shortcuts.ipynb new file mode 100644 index 000000000..9d2627940 --- /dev/null +++ b/src/docs/source/examples/Notebook/Custom Keyboard Shortcuts.ipynb @@ -0,0 +1,48 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Keyboard Shortcut Customization" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can customize the `command` mode shortcuts from within the Notebook Application itself. \n", + "\n", + "Head to the **Settings** menu and select the **Settings Editor** item.\n", + "A dialog will guide you through the process of adding custom keyboard shortcuts.\n", + "\n", + "Keyboard shortcut set from within the Notebook Application will be persisted to your configuration file. \n", + "A single action may have several shortcuts attached to it." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.5.2" + }, + "nbsphinx": { + "execute": "never" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/src/docs/source/examples/Notebook/Importing Notebooks.ipynb b/src/docs/source/examples/Notebook/Importing Notebooks.ipynb new file mode 100644 index 000000000..74702ffe3 --- /dev/null +++ b/src/docs/source/examples/Notebook/Importing Notebooks.ipynb @@ -0,0 +1,544 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Importing Jupyter Notebooks as Modules" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It is a common problem that people want to import code from Jupyter Notebooks.\n", + "This is made difficult by the fact that Notebooks are not plain Python files,\n", + "and thus cannot be imported by the regular Python machinery.\n", + "\n", + "Fortunately, Python provides some fairly sophisticated [hooks](https://www.python.org/dev/peps/pep-0302/) into the import machinery,\n", + "so we can actually make Jupyter notebooks importable without much difficulty,\n", + "and only using public APIs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import io, os, sys, types" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from IPython import get_ipython\n", + "from nbformat import read\n", + "from IPython.core.interactiveshell import InteractiveShell" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Import hooks typically take the form of two objects:\n", + "\n", + "1. a Module **Loader**, which takes a module name (e.g. `'IPython.display'`), and returns a Module\n", + "2. a Module **Finder**, which figures out whether a module might exist, and tells Python what **Loader** to use" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def find_notebook(fullname, path=None):\n", + " \"\"\"find a notebook, given its fully qualified name and an optional path\n", + "\n", + " This turns \"foo.bar\" into \"foo/bar.ipynb\"\n", + " and tries turning \"Foo_Bar\" into \"Foo Bar\" if Foo_Bar\n", + " does not exist.\n", + " \"\"\"\n", + " name = fullname.rsplit('.', 1)[-1]\n", + " if not path:\n", + " path = ['']\n", + " for d in path:\n", + " nb_path = os.path.join(d, name + \".ipynb\")\n", + " if os.path.isfile(nb_path):\n", + " return nb_path\n", + " # let import Notebook_Name find \"Notebook Name.ipynb\"\n", + " nb_path = nb_path.replace(\"_\", \" \")\n", + " if os.path.isfile(nb_path):\n", + " return nb_path" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Notebook Loader" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we have our Notebook Loader.\n", + "It's actually quite simple - once we figure out the filename of the module,\n", + "all it does is:\n", + "\n", + "1. load the notebook document into memory\n", + "2. create an empty Module\n", + "3. execute every cell in the Module namespace\n", + "\n", + "Since IPython cells can have extended syntax,\n", + "the IPython transform is applied to turn each of these cells into their pure-Python counterparts before executing them.\n", + "If all of your notebook cells are pure-Python,\n", + "this step is unnecessary." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "class NotebookLoader(object):\n", + " \"\"\"Module Loader for Jupyter Notebooks\"\"\"\n", + "\n", + " def __init__(self, path=None):\n", + " self.shell = InteractiveShell.instance()\n", + " self.path = path\n", + "\n", + " def load_module(self, fullname):\n", + " \"\"\"import a notebook as a module\"\"\"\n", + " path = find_notebook(fullname, self.path)\n", + "\n", + " print(\"importing Jupyter notebook from %s\" % path)\n", + "\n", + " # load the notebook object\n", + " with io.open(path, 'r', encoding='utf-8') as f:\n", + " nb = read(f, 4)\n", + "\n", + " # create the module and add it to sys.modules\n", + " # if name in sys.modules:\n", + " # return sys.modules[name]\n", + " mod = types.ModuleType(fullname)\n", + " mod.__file__ = path\n", + " mod.__loader__ = self\n", + " mod.__dict__['get_ipython'] = get_ipython\n", + " sys.modules[fullname] = mod\n", + "\n", + " # extra work to ensure that magics that would affect the user_ns\n", + " # actually affect the notebook module's ns\n", + " save_user_ns = self.shell.user_ns\n", + " self.shell.user_ns = mod.__dict__\n", + "\n", + " try:\n", + " for cell in nb.cells:\n", + " if cell.cell_type == 'code':\n", + " # transform the input to executable Python\n", + " code = self.shell.input_transformer_manager.transform_cell(cell.source)\n", + " # run the code in themodule\n", + " exec(code, mod.__dict__)\n", + " finally:\n", + " self.shell.user_ns = save_user_ns\n", + " return mod" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The Module Finder" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The finder is a simple object that tells you whether a name can be imported,\n", + "and returns the appropriate loader.\n", + "All this one does is check, when you do:\n", + "\n", + "```python\n", + "import mynotebook\n", + "```\n", + "\n", + "it checks whether `mynotebook.ipynb` exists.\n", + "If a notebook is found, then it returns a NotebookLoader.\n", + "\n", + "Any extra logic is just for resolving paths within packages." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "class NotebookFinder(object):\n", + " \"\"\"Module finder that locates Jupyter Notebooks\"\"\"\n", + "\n", + " def __init__(self):\n", + " self.loaders = {}\n", + "\n", + " def find_module(self, fullname, path=None):\n", + " nb_path = find_notebook(fullname, path)\n", + " if not nb_path:\n", + " return\n", + "\n", + " key = path\n", + " if path:\n", + " # lists aren't hashable\n", + " key = os.path.sep.join(path)\n", + "\n", + " if key not in self.loaders:\n", + " self.loaders[key] = NotebookLoader(path)\n", + " return self.loaders[key]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Register the hook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we register the `NotebookFinder` with `sys.meta_path`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "sys.meta_path.append(NotebookFinder())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After this point, my notebooks should be importable.\n", + "\n", + "Let's look at what we have in the CWD:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "ls nbpackage" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So I should be able to `import nbpackage.mynotebook`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import nbpackage.mynotebook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Aside: displaying notebooks" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is some simple code to display the contents of a notebook\n", + "with syntax highlighting, etc." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from pygments import highlight\n", + "from pygments.lexers import PythonLexer\n", + "from pygments.formatters import HtmlFormatter\n", + "\n", + "from IPython.display import display, HTML\n", + "\n", + "formatter = HtmlFormatter()\n", + "lexer = PythonLexer()\n", + "\n", + "# publish the CSS for pygments highlighting\n", + "display(\n", + " HTML(\n", + " \"\"\"\n", + "\n", + "\"\"\"\n", + " % formatter.get_style_defs()\n", + " )\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def show_notebook(fname):\n", + " \"\"\"display a short summary of the cells of a notebook\"\"\"\n", + " with io.open(fname, 'r', encoding='utf-8') as f:\n", + " nb = read(f, 4)\n", + " html = []\n", + " for cell in nb.cells:\n", + " html.append(\"

%s cell

\" % cell.cell_type)\n", + " if cell.cell_type == 'code':\n", + " html.append(highlight(cell.source, lexer, formatter))\n", + " else:\n", + " html.append(\"
%s
\" % cell.source)\n", + " display(HTML('\\n'.join(html)))\n", + "\n", + "\n", + "show_notebook(os.path.join(\"nbpackage\", \"mynotebook.ipynb\"))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So my notebook has some code cells,\n", + "one of which contains some IPython syntax.\n", + "\n", + "Let's see what happens when we import it" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from nbpackage import mynotebook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hooray, it imported! Does it work?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mynotebook.foo()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hooray again!\n", + "\n", + "Even the function that contains IPython syntax works:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mynotebook.has_ip_syntax()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Notebooks in packages" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We also have a notebook inside the `nb` package,\n", + "so let's make sure that works as well." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "ls nbpackage/nbs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that the `__init__.py` is necessary for `nb` to be considered a package,\n", + "just like usual." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "show_notebook(os.path.join(\"nbpackage\", \"nbs\", \"other.ipynb\"))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from nbpackage.nbs import other\n", + "\n", + "other.bar(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So now we have importable notebooks, from both the local directory and inside packages.\n", + "\n", + "I can even put a notebook inside IPython, to further demonstrate that this is working properly:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import shutil\n", + "from IPython.paths import get_ipython_package_dir\n", + "\n", + "utils = os.path.join(get_ipython_package_dir(), 'utils')\n", + "shutil.copy(\n", + " os.path.join(\"nbpackage\", \"mynotebook.ipynb\"), os.path.join(utils, \"inside_ipython.ipynb\")\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and import the notebook from `IPython.utils`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from IPython.utils import inside_ipython\n", + "\n", + "inside_ipython.whatsmyname()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This approach can even import functions and classes that are defined in a notebook using the `%%cython` magic." + ] + } + ], + "metadata": { + "gist_id": "6011986", + "nbsphinx": { + "execute": "never" + }, + "kernelspec": { + "display_name": "Python 3", + "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.5.1+" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/src/docs/source/examples/Notebook/Notebook Basics.ipynb b/src/docs/source/examples/Notebook/Notebook Basics.ipynb new file mode 100644 index 000000000..9e514158e --- /dev/null +++ b/src/docs/source/examples/Notebook/Notebook Basics.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Notebook Basics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The Notebook dashboard" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When you first start the notebook server, your browser will open to the notebook dashboard. The dashboard serves as a home page for the notebook. Its main purpose is to display the notebooks and files in the current directory. For example, here is a screenshot of the dashboard page for the `examples` directory in the Jupyter repository:\n", + "\n", + "![Jupyter dashboard showing files tab](images/dashboard_files_tab.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The top of the notebook list displays clickable breadcrumbs of the current directory. By clicking on these breadcrumbs or on sub-directories in the notebook list, you can navigate your file system.\n", + "\n", + "To create a new notebook, click on the \"New\" button at the top of the list and select a kernel from the dropdown (as seen below). Which kernels are listed depend on what's installed on the server. Some of the kernels in the screenshot below may not exist as an option to you.\n", + "\n", + "![Jupyter \"New\" menu](images/dashboard_files_tab_new.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notebooks and files can be uploaded to the current directory by dragging a notebook file onto the notebook list or by the \"click here\" text above the list.\n", + "\n", + "The notebook list shows green \"Running\" text and a green notebook icon next to running notebooks (as seen below). Notebooks remain running until you explicitly shut them down; closing the notebook's page is not sufficient.\n", + "\n", + "\n", + "![Jupyter dashboard showing one notebook with a running kernel](images/dashboard_files_tab_run.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To shutdown, delete, duplicate, or rename a notebook check the checkbox next to it and an array of controls will appear at the top of the notebook list (as seen below). You can also use the same operations on directories and files when applicable.\n", + "\n", + "![Buttons: Duplicate, rename, shutdown, delete, new, refresh](images/dashboard_files_tab_btns.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To see all of your running notebooks along with their directories, click on the \"Running\" tab:\n", + "\n", + "![Jupyter dashboard running tab](images/dashboard_running_tab.png)\n", + "\n", + "This view provides a convenient way to track notebooks that you start as you navigate the file system in a long running notebook server." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Overview of the Notebook UI" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you create a new notebook or open an existing one, you will be taken to the notebook user interface (UI). This UI allows you to run code and author notebook documents interactively. The notebook UI has the following main areas:\n", + "\n", + "* Menu\n", + "* Toolbar\n", + "* Notebook area and cells\n", + "\n", + "The notebook has an interactive tour of these elements that can be started in the \"Help:User Interface Tour\" menu item." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Modal editor" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Starting with IPython 2.0, the Jupyter Notebook has a modal user interface. This means that the keyboard does different things depending on which mode the Notebook is in. There are two modes: edit mode and command mode." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Edit mode" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Edit mode is indicated by a green cell border and a prompt showing in the editor area:\n", + "\n", + "![Jupyter cell with green border](images/edit_mode.png)\n", + "\n", + "When a cell is in edit mode, you can type into the cell, like a normal text editor." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Enter edit mode by pressing `Enter` or using the mouse to click on a cell's editor area.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Command mode" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Command mode is indicated by a grey cell border with a blue left margin:\n", + "\n", + "![Jupyter cell with blue & grey border](images/command_mode.png)\n", + "\n", + "When you are in command mode, you are able to edit the notebook as a whole, but not type into individual cells. Most importantly, in command mode, the keyboard is mapped to a set of shortcuts that let you perform notebook and cell actions efficiently. For example, if you are in command mode and you press `c`, you will copy the current cell - no modifier is needed." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Don't try to type into a cell in command mode; unexpected things will happen!\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Enter command mode by pressing `Esc` or using the mouse to click *outside* a cell's editor area.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Mouse navigation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "All navigation and actions in the Notebook are available using the mouse through the menubar and toolbar, which are both above the main Notebook area:\n", + "\n", + "![Jupyter notebook menus and toolbar](images/menubar_toolbar.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The first idea of mouse based navigation is that **cells can be selected by clicking on them.** The currently selected cell gets a grey or green border depending on whether the notebook is in edit or command mode. If you click inside a cell's editor area, you will enter edit mode. If you click on the prompt or output area of a cell you will enter command mode.\n", + "\n", + "If you are running this notebook in a live session (not on https://nbviewer.jupyter.org) try selecting different cells and going between edit and command mode. Try typing into a cell." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The second idea of mouse based navigation is that **cell actions usually apply to the currently selected cell**. Thus if you want to run the code in a cell, you would select it and click the button in the toolbar or the \"Cell:Run\" menu item. Similarly, to copy a cell you would select it and click the button in the toolbar or the \"Edit:Copy\" menu item. With this simple pattern, you should be able to do most everything you need with the mouse.\n", + "\n", + "Markdown cells have one other state that can be modified with the mouse. These cells can either be rendered or unrendered. When they are rendered, you will see a nice formatted representation of the cell's contents. When they are unrendered, you will see the raw text source of the cell. To render the selected cell with the mouse, click the button in the toolbar or the \"Cell:Run\" menu item. To unrender the selected cell, double click on the cell." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Keyboard Navigation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The modal user interface of the Jupyter Notebook has been optimized for efficient keyboard usage. This is made possible by having two different sets of keyboard shortcuts: one set that is active in edit mode and another in command mode.\n", + "\n", + "The most important keyboard shortcuts are `Enter`, which enters edit mode, and `Esc`, which enters command mode.\n", + "\n", + "In edit mode, most of the keyboard is dedicated to typing into the cell's editor. Thus, in edit mode there are relatively few shortcuts. In command mode, the entire keyboard is available for shortcuts, so there are many more. The `Help`->`Keyboard Shortcuts` dialog lists the available shortcuts." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We recommend learning the command mode shortcuts in the following rough order:\n", + "\n", + "1. Basic navigation: `enter`, `shift-enter`, `up/k`, `down/j`\n", + "2. Saving the notebook: `s`\n", + "2. Change Cell types: `y`, `m`, `1-6`, `t`\n", + "3. Cell creation: `a`, `b`\n", + "4. Cell editing: `x`, `c`, `v`, `d`, `z`\n", + "5. Kernel operations: `i`, `0` (press twice)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.5.2" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/src/docs/source/examples/Notebook/Running Code.ipynb b/src/docs/source/examples/Notebook/Running Code.ipynb new file mode 100644 index 000000000..c93213260 --- /dev/null +++ b/src/docs/source/examples/Notebook/Running Code.ipynb @@ -0,0 +1,915 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Running Code" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First and foremost, the Jupyter Notebook is an interactive environment for writing and running code. The notebook is capable of running code in a wide range of languages. However, each notebook is associated with a single kernel. This notebook is associated with the IPython kernel, therefore runs Python code." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Code cells allow you to enter and run code" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Run a code cell using `Shift-Enter` or pressing the button in the toolbar above:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [], + "source": [ + "a = 10" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10\n" + ] + } + ], + "source": [ + "print(a)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are two other keyboard shortcuts for running code:\n", + "\n", + "* `Alt-Enter` runs the current cell and inserts a new one below.\n", + "* `Ctrl-Enter` run the current cell and enters command mode." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Managing the Kernel" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Code is run in a separate process called the Kernel. The Kernel can be interrupted or restarted. Try running the following cell and then hit the button in the toolbar above." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [], + "source": [ + "import time\n", + "\n", + "time.sleep(10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If the Kernel dies you will be prompted to restart it. Here we call the low-level system libc.time routine with the wrong argument via\n", + "ctypes to segfault the Python interpreter:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [], + "source": [ + "import sys\n", + "\n", + "# This will crash a Linux or Mac system\n", + "# equivalent calls can be made on Windows\n", + "\n", + "# Uncomment these lines if you would like to see the segfault\n", + "\n", + "# dll = 'dylib' if sys.platform == 'darwin' else 'so.6'\n", + "# libc = CDLL(\"libc.%s\" % dll)\n", + "# libc.time(-1) # BOOM!!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cell menu" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The \"Cell\" menu has a number of menu items for running code in different ways. These includes:\n", + "\n", + "* Run and Select Below\n", + "* Run and Insert Below\n", + "* Run All\n", + "* Run All Above\n", + "* Run All Below" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Restarting the kernels" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The kernel maintains the state of a notebook's computations. You can reset this state by restarting the kernel. This is done by clicking on the in the toolbar above." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## sys.stdout and sys.stderr" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The stdout and stderr streams are displayed as text in the output area." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "hi, stdout\n" + ] + } + ], + "source": [ + "print(\"hi, stdout\")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "hi, stderr\n" + ] + } + ], + "source": [ + "print(\"hi, stderr\", file=sys.stderr)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Output is asynchronous" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "All output is displayed asynchronously as it is generated in the Kernel. If you execute the next cell, you will see the output one piece at a time, not all at the end." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "1\n", + "2\n", + "3\n", + "4\n", + "5\n", + "6\n", + "7\n" + ] + } + ], + "source": [ + "import sys\n", + "import time\n", + "\n", + "for i in range(8):\n", + " print(i)\n", + " time.sleep(0.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Large outputs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To better handle large outputs, the output area can be collapsed. Run the following cell and then single- or double- click on the active area to the left of the output:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "1\n", + "2\n", + "3\n", + "4\n", + "5\n", + "6\n", + "7\n", + "8\n", + "9\n", + "10\n", + "11\n", + "12\n", + "13\n", + "14\n", + "15\n", + "16\n", + "17\n", + "18\n", + "19\n", + "20\n", + "21\n", + "22\n", + "23\n", + "24\n", + "25\n", + "26\n", + "27\n", + "28\n", + "29\n", + "30\n", + "31\n", + "32\n", + "33\n", + "34\n", + "35\n", + "36\n", + "37\n", + "38\n", + "39\n", + "40\n", + "41\n", + "42\n", + "43\n", + "44\n", + "45\n", + "46\n", + "47\n", + "48\n", + "49\n" + ] + } + ], + "source": [ + "for i in range(50):\n", + " print(i)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Beyond a certain point, output will scroll automatically:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "1\n", + "3\n", + "7\n", + "15\n", + "31\n", + "63\n", + "127\n", + "255\n", + "511\n", + "1023\n", + "2047\n", + "4095\n", + "8191\n", + "16383\n", + "32767\n", + "65535\n", + "131071\n", + "262143\n", + "524287\n", + "1048575\n", + "2097151\n", + "4194303\n", + "8388607\n", + "16777215\n", + "33554431\n", + "67108863\n", + "134217727\n", + "268435455\n", + "536870911\n", + "1073741823\n", + "2147483647\n", + "4294967295\n", + "8589934591\n", + "17179869183\n", + "34359738367\n", + "68719476735\n", + "137438953471\n", + "274877906943\n", + "549755813887\n", + "1099511627775\n", + "2199023255551\n", + "4398046511103\n", + "8796093022207\n", + "17592186044415\n", + "35184372088831\n", + "70368744177663\n", + "140737488355327\n", + "281474976710655\n", + "562949953421311\n", + "1125899906842623\n", + "2251799813685247\n", + "4503599627370495\n", + "9007199254740991\n", + "18014398509481983\n", + "36028797018963967\n", + "72057594037927935\n", + "144115188075855871\n", + "288230376151711743\n", + "576460752303423487\n", + "1152921504606846975\n", + "2305843009213693951\n", + "4611686018427387903\n", + "9223372036854775807\n", + "18446744073709551615\n", + "36893488147419103231\n", + "73786976294838206463\n", + "147573952589676412927\n", + "295147905179352825855\n", + "590295810358705651711\n", + "1180591620717411303423\n", + "2361183241434822606847\n", + "4722366482869645213695\n", + "9444732965739290427391\n", + "18889465931478580854783\n", + "37778931862957161709567\n", + "75557863725914323419135\n", + "151115727451828646838271\n", + "302231454903657293676543\n", + "604462909807314587353087\n", + "1208925819614629174706175\n", + "2417851639229258349412351\n", + "4835703278458516698824703\n", + "9671406556917033397649407\n", + "19342813113834066795298815\n", + "38685626227668133590597631\n", + "77371252455336267181195263\n", + "154742504910672534362390527\n", + "309485009821345068724781055\n", + "618970019642690137449562111\n", + "1237940039285380274899124223\n", + "2475880078570760549798248447\n", + "4951760157141521099596496895\n", + "9903520314283042199192993791\n", + "19807040628566084398385987583\n", + "39614081257132168796771975167\n", + "79228162514264337593543950335\n", + "158456325028528675187087900671\n", + "316912650057057350374175801343\n", + "633825300114114700748351602687\n", + "1267650600228229401496703205375\n", + "2535301200456458802993406410751\n", + "5070602400912917605986812821503\n", + "10141204801825835211973625643007\n", + "20282409603651670423947251286015\n", + "40564819207303340847894502572031\n", + "81129638414606681695789005144063\n", + "162259276829213363391578010288127\n", + "324518553658426726783156020576255\n", + "649037107316853453566312041152511\n", + "1298074214633706907132624082305023\n", + "2596148429267413814265248164610047\n", + "5192296858534827628530496329220095\n", + "10384593717069655257060992658440191\n", + "20769187434139310514121985316880383\n", + "41538374868278621028243970633760767\n", + "83076749736557242056487941267521535\n", + "166153499473114484112975882535043071\n", + "332306998946228968225951765070086143\n", + "664613997892457936451903530140172287\n", + "1329227995784915872903807060280344575\n", + "2658455991569831745807614120560689151\n", + "5316911983139663491615228241121378303\n", + "10633823966279326983230456482242756607\n", + "21267647932558653966460912964485513215\n", + "42535295865117307932921825928971026431\n", + "85070591730234615865843651857942052863\n", + "170141183460469231731687303715884105727\n", + "340282366920938463463374607431768211455\n", + "680564733841876926926749214863536422911\n", + "1361129467683753853853498429727072845823\n", + "2722258935367507707706996859454145691647\n", + "5444517870735015415413993718908291383295\n", + "10889035741470030830827987437816582766591\n", + "21778071482940061661655974875633165533183\n", + "43556142965880123323311949751266331066367\n", + "87112285931760246646623899502532662132735\n", + "174224571863520493293247799005065324265471\n", + "348449143727040986586495598010130648530943\n", + "696898287454081973172991196020261297061887\n", + "1393796574908163946345982392040522594123775\n", + "2787593149816327892691964784081045188247551\n", + "5575186299632655785383929568162090376495103\n", + "11150372599265311570767859136324180752990207\n", + "22300745198530623141535718272648361505980415\n", + "44601490397061246283071436545296723011960831\n", + "89202980794122492566142873090593446023921663\n", + "178405961588244985132285746181186892047843327\n", + "356811923176489970264571492362373784095686655\n", + "713623846352979940529142984724747568191373311\n", + "1427247692705959881058285969449495136382746623\n", + "2854495385411919762116571938898990272765493247\n", + "5708990770823839524233143877797980545530986495\n", + "11417981541647679048466287755595961091061972991\n", + "22835963083295358096932575511191922182123945983\n", + "45671926166590716193865151022383844364247891967\n", + "91343852333181432387730302044767688728495783935\n", + "182687704666362864775460604089535377456991567871\n", + "365375409332725729550921208179070754913983135743\n", + "730750818665451459101842416358141509827966271487\n", + "1461501637330902918203684832716283019655932542975\n", + "2923003274661805836407369665432566039311865085951\n", + "5846006549323611672814739330865132078623730171903\n", + "11692013098647223345629478661730264157247460343807\n", + "23384026197294446691258957323460528314494920687615\n", + "46768052394588893382517914646921056628989841375231\n", + "93536104789177786765035829293842113257979682750463\n", + "187072209578355573530071658587684226515959365500927\n", + "374144419156711147060143317175368453031918731001855\n", + "748288838313422294120286634350736906063837462003711\n", + "1496577676626844588240573268701473812127674924007423\n", + "2993155353253689176481146537402947624255349848014847\n", + "5986310706507378352962293074805895248510699696029695\n", + "11972621413014756705924586149611790497021399392059391\n", + "23945242826029513411849172299223580994042798784118783\n", + "47890485652059026823698344598447161988085597568237567\n", + "95780971304118053647396689196894323976171195136475135\n", + "191561942608236107294793378393788647952342390272950271\n", + "383123885216472214589586756787577295904684780545900543\n", + "766247770432944429179173513575154591809369561091801087\n", + "1532495540865888858358347027150309183618739122183602175\n", + "3064991081731777716716694054300618367237478244367204351\n", + "6129982163463555433433388108601236734474956488734408703\n", + "12259964326927110866866776217202473468949912977468817407\n", + "24519928653854221733733552434404946937899825954937634815\n", + "49039857307708443467467104868809893875799651909875269631\n", + "98079714615416886934934209737619787751599303819750539263\n", + "196159429230833773869868419475239575503198607639501078527\n", + "392318858461667547739736838950479151006397215279002157055\n", + "784637716923335095479473677900958302012794430558004314111\n", + "1569275433846670190958947355801916604025588861116008628223\n", + "3138550867693340381917894711603833208051177722232017256447\n", + "6277101735386680763835789423207666416102355444464034512895\n", + "12554203470773361527671578846415332832204710888928069025791\n", + "25108406941546723055343157692830665664409421777856138051583\n", + "50216813883093446110686315385661331328818843555712276103167\n", + "100433627766186892221372630771322662657637687111424552206335\n", + "200867255532373784442745261542645325315275374222849104412671\n", + "401734511064747568885490523085290650630550748445698208825343\n", + "803469022129495137770981046170581301261101496891396417650687\n", + "1606938044258990275541962092341162602522202993782792835301375\n", + "3213876088517980551083924184682325205044405987565585670602751\n", + "6427752177035961102167848369364650410088811975131171341205503\n", + "12855504354071922204335696738729300820177623950262342682411007\n", + "25711008708143844408671393477458601640355247900524685364822015\n", + "51422017416287688817342786954917203280710495801049370729644031\n", + "102844034832575377634685573909834406561420991602098741459288063\n", + "205688069665150755269371147819668813122841983204197482918576127\n", + "411376139330301510538742295639337626245683966408394965837152255\n", + "822752278660603021077484591278675252491367932816789931674304511\n", + "1645504557321206042154969182557350504982735865633579863348609023\n", + "3291009114642412084309938365114701009965471731267159726697218047\n", + "6582018229284824168619876730229402019930943462534319453394436095\n", + "13164036458569648337239753460458804039861886925068638906788872191\n", + "26328072917139296674479506920917608079723773850137277813577744383\n", + "52656145834278593348959013841835216159447547700274555627155488767\n", + "105312291668557186697918027683670432318895095400549111254310977535\n", + "210624583337114373395836055367340864637790190801098222508621955071\n", + "421249166674228746791672110734681729275580381602196445017243910143\n", + "842498333348457493583344221469363458551160763204392890034487820287\n", + "1684996666696914987166688442938726917102321526408785780068975640575\n", + "3369993333393829974333376885877453834204643052817571560137951281151\n", + "6739986666787659948666753771754907668409286105635143120275902562303\n", + "13479973333575319897333507543509815336818572211270286240551805124607\n", + "26959946667150639794667015087019630673637144422540572481103610249215\n", + "53919893334301279589334030174039261347274288845081144962207220498431\n", + "107839786668602559178668060348078522694548577690162289924414440996863\n", + "215679573337205118357336120696157045389097155380324579848828881993727\n", + "431359146674410236714672241392314090778194310760649159697657763987455\n", + "862718293348820473429344482784628181556388621521298319395315527974911\n", + "1725436586697640946858688965569256363112777243042596638790631055949823\n", + "3450873173395281893717377931138512726225554486085193277581262111899647\n", + "6901746346790563787434755862277025452451108972170386555162524223799295\n", + "13803492693581127574869511724554050904902217944340773110325048447598591\n", + "27606985387162255149739023449108101809804435888681546220650096895197183\n", + "55213970774324510299478046898216203619608871777363092441300193790394367\n", + "110427941548649020598956093796432407239217743554726184882600387580788735\n", + "220855883097298041197912187592864814478435487109452369765200775161577471\n", + "441711766194596082395824375185729628956870974218904739530401550323154943\n", + "883423532389192164791648750371459257913741948437809479060803100646309887\n", + "1766847064778384329583297500742918515827483896875618958121606201292619775\n", + "3533694129556768659166595001485837031654967793751237916243212402585239551\n", + "7067388259113537318333190002971674063309935587502475832486424805170479103\n", + "14134776518227074636666380005943348126619871175004951664972849610340958207\n", + "28269553036454149273332760011886696253239742350009903329945699220681916415\n", + "56539106072908298546665520023773392506479484700019806659891398441363832831\n", + "113078212145816597093331040047546785012958969400039613319782796882727665663\n", + "226156424291633194186662080095093570025917938800079226639565593765455331327\n", + "452312848583266388373324160190187140051835877600158453279131187530910662655\n", + "904625697166532776746648320380374280103671755200316906558262375061821325311\n", + "1809251394333065553493296640760748560207343510400633813116524750123642650623\n", + "3618502788666131106986593281521497120414687020801267626233049500247285301247\n", + "7237005577332262213973186563042994240829374041602535252466099000494570602495\n", + "14474011154664524427946373126085988481658748083205070504932198000989141204991\n", + "28948022309329048855892746252171976963317496166410141009864396001978282409983\n", + "57896044618658097711785492504343953926634992332820282019728792003956564819967\n", + "115792089237316195423570985008687907853269984665640564039457584007913129639935\n", + "231584178474632390847141970017375815706539969331281128078915168015826259279871\n", + "463168356949264781694283940034751631413079938662562256157830336031652518559743\n", + "926336713898529563388567880069503262826159877325124512315660672063305037119487\n", + "1852673427797059126777135760139006525652319754650249024631321344126610074238975\n", + "3705346855594118253554271520278013051304639509300498049262642688253220148477951\n", + "7410693711188236507108543040556026102609279018600996098525285376506440296955903\n", + "14821387422376473014217086081112052205218558037201992197050570753012880593911807\n", + "29642774844752946028434172162224104410437116074403984394101141506025761187823615\n", + "59285549689505892056868344324448208820874232148807968788202283012051522375647231\n", + "118571099379011784113736688648896417641748464297615937576404566024103044751294463\n", + "237142198758023568227473377297792835283496928595231875152809132048206089502588927\n", + "474284397516047136454946754595585670566993857190463750305618264096412179005177855\n", + "948568795032094272909893509191171341133987714380927500611236528192824358010355711\n", + "1897137590064188545819787018382342682267975428761855001222473056385648716020711423\n", + "3794275180128377091639574036764685364535950857523710002444946112771297432041422847\n", + "7588550360256754183279148073529370729071901715047420004889892225542594864082845695\n", + "15177100720513508366558296147058741458143803430094840009779784451085189728165691391\n", + "30354201441027016733116592294117482916287606860189680019559568902170379456331382783\n", + "60708402882054033466233184588234965832575213720379360039119137804340758912662765567\n", + "121416805764108066932466369176469931665150427440758720078238275608681517825325531135\n", + "242833611528216133864932738352939863330300854881517440156476551217363035650651062271\n", + "485667223056432267729865476705879726660601709763034880312953102434726071301302124543\n", + "971334446112864535459730953411759453321203419526069760625906204869452142602604249087\n", + "1942668892225729070919461906823518906642406839052139521251812409738904285205208498175\n", + "3885337784451458141838923813647037813284813678104279042503624819477808570410416996351\n", + "7770675568902916283677847627294075626569627356208558085007249638955617140820833992703\n", + "15541351137805832567355695254588151253139254712417116170014499277911234281641667985407\n", + "31082702275611665134711390509176302506278509424834232340028998555822468563283335970815\n", + "62165404551223330269422781018352605012557018849668464680057997111644937126566671941631\n", + "124330809102446660538845562036705210025114037699336929360115994223289874253133343883263\n", + "248661618204893321077691124073410420050228075398673858720231988446579748506266687766527\n", + "497323236409786642155382248146820840100456150797347717440463976893159497012533375533055\n", + "994646472819573284310764496293641680200912301594695434880927953786318994025066751066111\n", + "1989292945639146568621528992587283360401824603189390869761855907572637988050133502132223\n", + "3978585891278293137243057985174566720803649206378781739523711815145275976100267004264447\n", + "7957171782556586274486115970349133441607298412757563479047423630290551952200534008528895\n", + "15914343565113172548972231940698266883214596825515126958094847260581103904401068017057791\n", + "31828687130226345097944463881396533766429193651030253916189694521162207808802136034115583\n", + "63657374260452690195888927762793067532858387302060507832379389042324415617604272068231167\n", + "127314748520905380391777855525586135065716774604121015664758778084648831235208544136462335\n", + "254629497041810760783555711051172270131433549208242031329517556169297662470417088272924671\n", + "509258994083621521567111422102344540262867098416484062659035112338595324940834176545849343\n", + "1018517988167243043134222844204689080525734196832968125318070224677190649881668353091698687\n", + "2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397375\n", + "4074071952668972172536891376818756322102936787331872501272280898708762599526673412366794751\n", + "8148143905337944345073782753637512644205873574663745002544561797417525199053346824733589503\n", + "16296287810675888690147565507275025288411747149327490005089123594835050398106693649467179007\n", + "32592575621351777380295131014550050576823494298654980010178247189670100796213387298934358015\n", + "65185151242703554760590262029100101153646988597309960020356494379340201592426774597868716031\n", + "130370302485407109521180524058200202307293977194619920040712988758680403184853549195737432063\n", + "260740604970814219042361048116400404614587954389239840081425977517360806369707098391474864127\n", + "521481209941628438084722096232800809229175908778479680162851955034721612739414196782949728255\n", + "1042962419883256876169444192465601618458351817556959360325703910069443225478828393565899456511\n", + "2085924839766513752338888384931203236916703635113918720651407820138886450957656787131798913023\n", + "4171849679533027504677776769862406473833407270227837441302815640277772901915313574263597826047\n", + "8343699359066055009355553539724812947666814540455674882605631280555545803830627148527195652095\n", + "16687398718132110018711107079449625895333629080911349765211262561111091607661254297054391304191\n", + "33374797436264220037422214158899251790667258161822699530422525122222183215322508594108782608383\n", + "66749594872528440074844428317798503581334516323645399060845050244444366430645017188217565216767\n", + "133499189745056880149688856635597007162669032647290798121690100488888732861290034376435130433535\n", + "266998379490113760299377713271194014325338065294581596243380200977777465722580068752870260867071\n", + "533996758980227520598755426542388028650676130589163192486760401955554931445160137505740521734143\n", + "1067993517960455041197510853084776057301352261178326384973520803911109862890320275011481043468287\n", + "2135987035920910082395021706169552114602704522356652769947041607822219725780640550022962086936575\n", + "4271974071841820164790043412339104229205409044713305539894083215644439451561281100045924173873151\n", + "8543948143683640329580086824678208458410818089426611079788166431288878903122562200091848347746303\n", + "17087896287367280659160173649356416916821636178853222159576332862577757806245124400183696695492607\n", + "34175792574734561318320347298712833833643272357706444319152665725155515612490248800367393390985215\n", + "68351585149469122636640694597425667667286544715412888638305331450311031224980497600734786781970431\n", + "136703170298938245273281389194851335334573089430825777276610662900622062449960995201469573563940863\n", + "273406340597876490546562778389702670669146178861651554553221325801244124899921990402939147127881727\n", + "546812681195752981093125556779405341338292357723303109106442651602488249799843980805878294255763455\n", + "1093625362391505962186251113558810682676584715446606218212885303204976499599687961611756588511526911\n", + "2187250724783011924372502227117621365353169430893212436425770606409952999199375923223513177023053823\n", + "4374501449566023848745004454235242730706338861786424872851541212819905998398751846447026354046107647\n", + "8749002899132047697490008908470485461412677723572849745703082425639811996797503692894052708092215295\n", + "17498005798264095394980017816940970922825355447145699491406164851279623993595007385788105416184430591\n", + "34996011596528190789960035633881941845650710894291398982812329702559247987190014771576210832368861183\n", + "69992023193056381579920071267763883691301421788582797965624659405118495974380029543152421664737722367\n", + "139984046386112763159840142535527767382602843577165595931249318810236991948760059086304843329475444735\n", + "279968092772225526319680285071055534765205687154331191862498637620473983897520118172609686658950889471\n", + "559936185544451052639360570142111069530411374308662383724997275240947967795040236345219373317901778943\n", + "1119872371088902105278721140284222139060822748617324767449994550481895935590080472690438746635803557887\n", + "2239744742177804210557442280568444278121645497234649534899989100963791871180160945380877493271607115775\n", + "4479489484355608421114884561136888556243290994469299069799978201927583742360321890761754986543214231551\n", + "8958978968711216842229769122273777112486581988938598139599956403855167484720643781523509973086428463103\n", + "17917957937422433684459538244547554224973163977877196279199912807710334969441287563047019946172856926207\n", + "35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852415\n", + "71671831749689734737838152978190216899892655911508785116799651230841339877765150252188079784691427704831\n", + "143343663499379469475676305956380433799785311823017570233599302461682679755530300504376159569382855409663\n", + "286687326998758938951352611912760867599570623646035140467198604923365359511060601008752319138765710819327\n", + "573374653997517877902705223825521735199141247292070280934397209846730719022121202017504638277531421638655\n", + "1146749307995035755805410447651043470398282494584140561868794419693461438044242404035009276555062843277311\n", + "2293498615990071511610820895302086940796564989168281123737588839386922876088484808070018553110125686554623\n", + "4586997231980143023221641790604173881593129978336562247475177678773845752176969616140037106220251373109247\n", + "9173994463960286046443283581208347763186259956673124494950355357547691504353939232280074212440502746218495\n", + "18347988927920572092886567162416695526372519913346248989900710715095383008707878464560148424881005492436991\n", + "36695977855841144185773134324833391052745039826692497979801421430190766017415756929120296849762010984873983\n", + "73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747967\n", + "146783911423364576743092537299333564210980159306769991919205685720763064069663027716481187399048043939495935\n", + "293567822846729153486185074598667128421960318613539983838411371441526128139326055432962374798096087878991871\n", + "587135645693458306972370149197334256843920637227079967676822742883052256278652110865924749596192175757983743\n", + "1174271291386916613944740298394668513687841274454159935353645485766104512557304221731849499192384351515967487\n", + "2348542582773833227889480596789337027375682548908319870707290971532209025114608443463698998384768703031934975\n", + "4697085165547666455778961193578674054751365097816639741414581943064418050229216886927397996769537406063869951\n", + "9394170331095332911557922387157348109502730195633279482829163886128836100458433773854795993539074812127739903\n", + "18788340662190665823115844774314696219005460391266558965658327772257672200916867547709591987078149624255479807\n", + "37576681324381331646231689548629392438010920782533117931316655544515344401833735095419183974156299248510959615\n", + "75153362648762663292463379097258784876021841565066235862633311089030688803667470190838367948312598497021919231\n", + "150306725297525326584926758194517569752043683130132471725266622178061377607334940381676735896625196994043838463\n", + "300613450595050653169853516389035139504087366260264943450533244356122755214669880763353471793250393988087676927\n", + "601226901190101306339707032778070279008174732520529886901066488712245510429339761526706943586500787976175353855\n", + "1202453802380202612679414065556140558016349465041059773802132977424491020858679523053413887173001575952350707711\n", + "2404907604760405225358828131112281116032698930082119547604265954848982041717359046106827774346003151904701415423\n", + "4809815209520810450717656262224562232065397860164239095208531909697964083434718092213655548692006303809402830847\n", + "9619630419041620901435312524449124464130795720328478190417063819395928166869436184427311097384012607618805661695\n", + "19239260838083241802870625048898248928261591440656956380834127638791856333738872368854622194768025215237611323391\n", + "38478521676166483605741250097796497856523182881313912761668255277583712667477744737709244389536050430475222646783\n", + "76957043352332967211482500195592995713046365762627825523336510555167425334955489475418488779072100860950445293567\n", + "153914086704665934422965000391185991426092731525255651046673021110334850669910978950836977558144201721900890587135\n", + "307828173409331868845930000782371982852185463050511302093346042220669701339821957901673955116288403443801781174271\n", + "615656346818663737691860001564743965704370926101022604186692084441339402679643915803347910232576806887603562348543\n", + "1231312693637327475383720003129487931408741852202045208373384168882678805359287831606695820465153613775207124697087\n", + "2462625387274654950767440006258975862817483704404090416746768337765357610718575663213391640930307227550414249394175\n", + "4925250774549309901534880012517951725634967408808180833493536675530715221437151326426783281860614455100828498788351\n", + "9850501549098619803069760025035903451269934817616361666987073351061430442874302652853566563721228910201656997576703\n", + "19701003098197239606139520050071806902539869635232723333974146702122860885748605305707133127442457820403313995153407\n", + "39402006196394479212279040100143613805079739270465446667948293404245721771497210611414266254884915640806627990306815\n", + "78804012392788958424558080200287227610159478540930893335896586808491443542994421222828532509769831281613255980613631\n", + "157608024785577916849116160400574455220318957081861786671793173616982887085988842445657065019539662563226511961227263\n", + "315216049571155833698232320801148910440637914163723573343586347233965774171977684891314130039079325126453023922454527\n", + "630432099142311667396464641602297820881275828327447146687172694467931548343955369782628260078158650252906047844909055\n", + "1260864198284623334792929283204595641762551656654894293374345388935863096687910739565256520156317300505812095689818111\n", + "2521728396569246669585858566409191283525103313309788586748690777871726193375821479130513040312634601011624191379636223\n", + "5043456793138493339171717132818382567050206626619577173497381555743452386751642958261026080625269202023248382759272447\n", + "10086913586276986678343434265636765134100413253239154346994763111486904773503285916522052161250538404046496765518544895\n", + "20173827172553973356686868531273530268200826506478308693989526222973809547006571833044104322501076808092993531037089791\n", + "40347654345107946713373737062547060536401653012956617387979052445947619094013143666088208645002153616185987062074179583\n", + "80695308690215893426747474125094121072803306025913234775958104891895238188026287332176417290004307232371974124148359167\n", + "161390617380431786853494948250188242145606612051826469551916209783790476376052574664352834580008614464743948248296718335\n", + "322781234760863573706989896500376484291213224103652939103832419567580952752105149328705669160017228929487896496593436671\n", + "645562469521727147413979793000752968582426448207305878207664839135161905504210298657411338320034457858975792993186873343\n", + "1291124939043454294827959586001505937164852896414611756415329678270323811008420597314822676640068915717951585986373746687\n", + "2582249878086908589655919172003011874329705792829223512830659356540647622016841194629645353280137831435903171972747493375\n", + "5164499756173817179311838344006023748659411585658447025661318713081295244033682389259290706560275662871806343945494986751\n", + "10328999512347634358623676688012047497318823171316894051322637426162590488067364778518581413120551325743612687890989973503\n", + "20657999024695268717247353376024094994637646342633788102645274852325180976134729557037162826241102651487225375781979947007\n", + "41315998049390537434494706752048189989275292685267576205290549704650361952269459114074325652482205302974450751563959894015\n", + "82631996098781074868989413504096379978550585370535152410581099409300723904538918228148651304964410605948901503127919788031\n", + "165263992197562149737978827008192759957101170741070304821162198818601447809077836456297302609928821211897803006255839576063\n", + "330527984395124299475957654016385519914202341482140609642324397637202895618155672912594605219857642423795606012511679152127\n", + "661055968790248598951915308032771039828404682964281219284648795274405791236311345825189210439715284847591212025023358304255\n", + "1322111937580497197903830616065542079656809365928562438569297590548811582472622691650378420879430569695182424050046716608511\n", + "2644223875160994395807661232131084159313618731857124877138595181097623164945245383300756841758861139390364848100093433217023\n", + "5288447750321988791615322464262168318627237463714249754277190362195246329890490766601513683517722278780729696200186866434047\n", + "10576895500643977583230644928524336637254474927428499508554380724390492659780981533203027367035444557561459392400373732868095\n", + "21153791001287955166461289857048673274508949854856999017108761448780985319561963066406054734070889115122918784800747465736191\n", + "42307582002575910332922579714097346549017899709713998034217522897561970639123926132812109468141778230245837569601494931472383\n", + "84615164005151820665845159428194693098035799419427996068435045795123941278247852265624218936283556460491675139202989862944767\n", + "169230328010303641331690318856389386196071598838855992136870091590247882556495704531248437872567112920983350278405979725889535\n", + "338460656020607282663380637712778772392143197677711984273740183180495765112991409062496875745134225841966700556811959451779071\n", + "676921312041214565326761275425557544784286395355423968547480366360991530225982818124993751490268451683933401113623918903558143\n", + "1353842624082429130653522550851115089568572790710847937094960732721983060451965636249987502980536903367866802227247837807116287\n", + "2707685248164858261307045101702230179137145581421695874189921465443966120903931272499975005961073806735733604454495675614232575\n", + "5415370496329716522614090203404460358274291162843391748379842930887932241807862544999950011922147613471467208908991351228465151\n", + "10830740992659433045228180406808920716548582325686783496759685861775864483615725089999900023844295226942934417817982702456930303\n", + "21661481985318866090456360813617841433097164651373566993519371723551728967231450179999800047688590453885868835635965404913860607\n", + "43322963970637732180912721627235682866194329302747133987038743447103457934462900359999600095377180907771737671271930809827721215\n", + "86645927941275464361825443254471365732388658605494267974077486894206915868925800719999200190754361815543475342543861619655442431\n", + "173291855882550928723650886508942731464777317210988535948154973788413831737851601439998400381508723631086950685087723239310884863\n", + "346583711765101857447301773017885462929554634421977071896309947576827663475703202879996800763017447262173901370175446478621769727\n", + "693167423530203714894603546035770925859109268843954143792619895153655326951406405759993601526034894524347802740350892957243539455\n", + "1386334847060407429789207092071541851718218537687908287585239790307310653902812811519987203052069789048695605480701785914487078911\n", + "2772669694120814859578414184143083703436437075375816575170479580614621307805625623039974406104139578097391210961403571828974157823\n", + "5545339388241629719156828368286167406872874150751633150340959161229242615611251246079948812208279156194782421922807143657948315647\n", + "11090678776483259438313656736572334813745748301503266300681918322458485231222502492159897624416558312389564843845614287315896631295\n", + "22181357552966518876627313473144669627491496603006532601363836644916970462445004984319795248833116624779129687691228574631793262591\n", + "44362715105933037753254626946289339254982993206013065202727673289833940924890009968639590497666233249558259375382457149263586525183\n", + "88725430211866075506509253892578678509965986412026130405455346579667881849780019937279180995332466499116518750764914298527173050367\n", + "177450860423732151013018507785157357019931972824052260810910693159335763699560039874558361990664932998233037501529828597054346100735\n", + "354901720847464302026037015570314714039863945648104521621821386318671527399120079749116723981329865996466075003059657194108692201471\n", + "709803441694928604052074031140629428079727891296209043243642772637343054798240159498233447962659731992932150006119314388217384402943\n", + "1419606883389857208104148062281258856159455782592418086487285545274686109596480318996466895925319463985864300012238628776434768805887\n", + "2839213766779714416208296124562517712318911565184836172974571090549372219192960637992933791850638927971728600024477257552869537611775\n", + "5678427533559428832416592249125035424637823130369672345949142181098744438385921275985867583701277855943457200048954515105739075223551\n", + "11356855067118857664833184498250070849275646260739344691898284362197488876771842551971735167402555711886914400097909030211478150447103\n", + "22713710134237715329666368996500141698551292521478689383796568724394977753543685103943470334805111423773828800195818060422956300894207\n", + "45427420268475430659332737993000283397102585042957378767593137448789955507087370207886940669610222847547657600391636120845912601788415\n", + "90854840536950861318665475986000566794205170085914757535186274897579911014174740415773881339220445695095315200783272241691825203576831\n", + "181709681073901722637330951972001133588410340171829515070372549795159822028349480831547762678440891390190630401566544483383650407153663\n", + "363419362147803445274661903944002267176820680343659030140745099590319644056698961663095525356881782780381260803133088966767300814307327\n", + "726838724295606890549323807888004534353641360687318060281490199180639288113397923326191050713763565560762521606266177933534601628614655\n", + "1453677448591213781098647615776009068707282721374636120562980398361278576226795846652382101427527131121525043212532355867069203257229311\n", + "2907354897182427562197295231552018137414565442749272241125960796722557152453591693304764202855054262243050086425064711734138406514458623\n", + "5814709794364855124394590463104036274829130885498544482251921593445114304907183386609528405710108524486100172850129423468276813028917247\n", + "11629419588729710248789180926208072549658261770997088964503843186890228609814366773219056811420217048972200345700258846936553626057834495\n", + "23258839177459420497578361852416145099316523541994177929007686373780457219628733546438113622840434097944400691400517693873107252115668991\n", + "46517678354918840995156723704832290198633047083988355858015372747560914439257467092876227245680868195888801382801035387746214504231337983\n", + "93035356709837681990313447409664580397266094167976711716030745495121828878514934185752454491361736391777602765602070775492429008462675967\n", + "186070713419675363980626894819329160794532188335953423432061490990243657757029868371504908982723472783555205531204141550984858016925351935\n", + "372141426839350727961253789638658321589064376671906846864122981980487315514059736743009817965446945567110411062408283101969716033850703871\n", + "744282853678701455922507579277316643178128753343813693728245963960974631028119473486019635930893891134220822124816566203939432067701407743\n", + "1488565707357402911845015158554633286356257506687627387456491927921949262056238946972039271861787782268441644249633132407878864135402815487\n", + "2977131414714805823690030317109266572712515013375254774912983855843898524112477893944078543723575564536883288499266264815757728270805630975\n", + "5954262829429611647380060634218533145425030026750509549825967711687797048224955787888157087447151129073766576998532529631515456541611261951\n", + "11908525658859223294760121268437066290850060053501019099651935423375594096449911575776314174894302258147533153997065059263030913083222523903\n", + "23817051317718446589520242536874132581700120107002038199303870846751188192899823151552628349788604516295066307994130118526061826166445047807\n", + "47634102635436893179040485073748265163400240214004076398607741693502376385799646303105256699577209032590132615988260237052123652332890095615\n", + "95268205270873786358080970147496530326800480428008152797215483387004752771599292606210513399154418065180265231976520474104247304665780191231\n", + "190536410541747572716161940294993060653600960856016305594430966774009505543198585212421026798308836130360530463953040948208494609331560382463\n", + "381072821083495145432323880589986121307201921712032611188861933548019011086397170424842053596617672260721060927906081896416989218663120764927\n", + "762145642166990290864647761179972242614403843424065222377723867096038022172794340849684107193235344521442121855812163792833978437326241529855\n", + "1524291284333980581729295522359944485228807686848130444755447734192076044345588681699368214386470689042884243711624327585667956874652483059711\n", + "3048582568667961163458591044719888970457615373696260889510895468384152088691177363398736428772941378085768487423248655171335913749304966119423\n", + "6097165137335922326917182089439777940915230747392521779021790936768304177382354726797472857545882756171536974846497310342671827498609932238847\n", + "12194330274671844653834364178879555881830461494785043558043581873536608354764709453594945715091765512343073949692994620685343654997219864477695\n", + "24388660549343689307668728357759111763660922989570087116087163747073216709529418907189891430183531024686147899385989241370687309994439728955391\n", + "48777321098687378615337456715518223527321845979140174232174327494146433419058837814379782860367062049372295798771978482741374619988879457910783\n", + "97554642197374757230674913431036447054643691958280348464348654988292866838117675628759565720734124098744591597543956965482749239977758915821567\n", + "195109284394749514461349826862072894109287383916560696928697309976585733676235351257519131441468248197489183195087913930965498479955517831643135\n", + "390218568789499028922699653724145788218574767833121393857394619953171467352470702515038262882936496394978366390175827861930996959911035663286271\n", + "780437137578998057845399307448291576437149535666242787714789239906342934704941405030076525765872992789956732780351655723861993919822071326572543\n", + "1560874275157996115690798614896583152874299071332485575429578479812685869409882810060153051531745985579913465560703311447723987839644142653145087\n", + "3121748550315992231381597229793166305748598142664971150859156959625371738819765620120306103063491971159826931121406622895447975679288285306290175\n", + "6243497100631984462763194459586332611497196285329942301718313919250743477639531240240612206126983942319653862242813245790895951358576570612580351\n", + "12486994201263968925526388919172665222994392570659884603436627838501486955279062480481224412253967884639307724485626491581791902717153141225160703\n", + "24973988402527937851052777838345330445988785141319769206873255677002973910558124960962448824507935769278615448971252983163583805434306282450321407\n", + "49947976805055875702105555676690660891977570282639538413746511354005947821116249921924897649015871538557230897942505966327167610868612564900642815\n", + "99895953610111751404211111353381321783955140565279076827493022708011895642232499843849795298031743077114461795885011932654335221737225129801285631\n", + "199791907220223502808422222706762643567910281130558153654986045416023791284464999687699590596063486154228923591770023865308670443474450259602571263\n", + "399583814440447005616844445413525287135820562261116307309972090832047582568929999375399181192126972308457847183540047730617340886948900519205142527\n", + "799167628880894011233688890827050574271641124522232614619944181664095165137859998750798362384253944616915694367080095461234681773897801038410285055\n", + "1598335257761788022467377781654101148543282249044465229239888363328190330275719997501596724768507889233831388734160190922469363547795602076820570111\n", + "3196670515523576044934755563308202297086564498088930458479776726656380660551439995003193449537015778467662777468320381844938727095591204153641140223\n", + "6393341031047152089869511126616404594173128996177860916959553453312761321102879990006386899074031556935325554936640763689877454191182408307282280447\n", + "12786682062094304179739022253232809188346257992355721833919106906625522642205759980012773798148063113870651109873281527379754908382364816614564560895\n", + "25573364124188608359478044506465618376692515984711443667838213813251045284411519960025547596296126227741302219746563054759509816764729633229129121791\n", + "51146728248377216718956089012931236753385031969422887335676427626502090568823039920051095192592252455482604439493126109519019633529459266458258243583\n", + "102293456496754433437912178025862473506770063938845774671352855253004181137646079840102190385184504910965208878986252219038039267058918532916516487167\n", + "204586912993508866875824356051724947013540127877691549342705710506008362275292159680204380770369009821930417757972504438076078534117837065833032974335\n", + "409173825987017733751648712103449894027080255755383098685411421012016724550584319360408761540738019643860835515945008876152157068235674131666065948671\n", + "818347651974035467503297424206899788054160511510766197370822842024033449101168638720817523081476039287721671031890017752304314136471348263332131897343\n", + "1636695303948070935006594848413799576108321023021532394741645684048066898202337277441635046162952078575443342063780035504608628272942696526664263794687\n" + ] + } + ], + "source": [ + "for i in range(500):\n", + " print(2**i - 1)" + ] + } + ], + "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.10.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/src/docs/source/examples/Notebook/Typesetting Equations.ipynb b/src/docs/source/examples/Notebook/Typesetting Equations.ipynb new file mode 100644 index 000000000..761d03e50 --- /dev/null +++ b/src/docs/source/examples/Notebook/Typesetting Equations.ipynb @@ -0,0 +1,280 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Markdown parser included in the Jupyter Notebook is MathJax-aware. This means that you can freely mix in mathematical expressions using the [MathJax subset of Tex and LaTeX](https://docs.mathjax.org/en/latest/input/tex/). [Some examples from the MathJax demos site](https://mathjax.github.io/MathJax-demos-web/) are reproduced below, as well as the Markdown+TeX source." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Motivating Examples\n", + "\n", + "## The Lorenz Equations\n", + "### Source\n", + "```\n", + "\\begin{align}\n", + "\\dot{x} & = \\sigma(y-x) \\\\\n", + "\\dot{y} & = \\rho x - y - xz \\\\\n", + "\\dot{z} & = -\\beta z + xy\n", + "\\end{align}\n", + "```\n", + "### Display\n", + "\n", + "$\\begin{align}\n", + "\\dot{x} & = \\sigma(y-x) \\\\\n", + "\\dot{y} & = \\rho x - y - xz \\\\\n", + "\\dot{z} & = -\\beta z + xy\n", + "\\end{align}$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The Cauchy-Schwarz Inequality\n", + "### Source\n", + "```\n", + "\\begin{equation*}\n", + "\\left( \\sum_{k=1}^n a_k b_k \\right)^2 \\leq \\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)\n", + "\\end{equation*}\n", + "```\n", + "### Display\n", + "\n", + "$\\begin{equation*}\n", + "\\left( \\sum_{k=1}^n a_k b_k \\right)^2 \\leq \\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)\n", + "\\end{equation*}$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A Cross Product Formula\n", + "### Source\n", + "```\n", + "\\begin{equation*}\n", + "\\mathbf{V}_1 \\times \\mathbf{V}_2 = \\begin{vmatrix}\n", + "\\mathbf{i} & \\mathbf{j} & \\mathbf{k} \\\\\n", + "\\frac{\\partial X}{\\partial u} & \\frac{\\partial Y}{\\partial u} & 0 \\\\\n", + "\\frac{\\partial X}{\\partial v} & \\frac{\\partial Y}{\\partial v} & 0\n", + "\\end{vmatrix} \n", + "\\end{equation*}\n", + "```\n", + "### Display\n", + "\n", + "$\\begin{equation*}\n", + "\\mathbf{V}_1 \\times \\mathbf{V}_2 = \\begin{vmatrix}\n", + "\\mathbf{i} & \\mathbf{j} & \\mathbf{k} \\\\\n", + "\\frac{\\partial X}{\\partial u} & \\frac{\\partial Y}{\\partial u} & 0 \\\\\n", + "\\frac{\\partial X}{\\partial v} & \\frac{\\partial Y}{\\partial v} & 0\n", + "\\end{vmatrix} \n", + "\\end{equation*}$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The probability of getting \\(k\\) heads when flipping \\(n\\) coins is\n", + "### Source\n", + "```\n", + "\\begin{equation*}\n", + "P(E) = {n \\choose k} p^k (1-p)^{ n-k} \n", + "\\end{equation*}\n", + "```\n", + "### Display\n", + "\n", + "$\\begin{equation*}\n", + "P(E) = {n \\choose k} p^k (1-p)^{ n-k} \n", + "\\end{equation*}$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## An Identity of Ramanujan\n", + "### Source\n", + "```\n", + "\\begin{equation*}\n", + "\\frac{1}{\\Bigl(\\sqrt{\\phi \\sqrt{5}}-\\phi\\Bigr) e^{\\frac25 \\pi}} =\n", + "1+\\frac{e^{-2\\pi}} {1+\\frac{e^{-4\\pi}} {1+\\frac{e^{-6\\pi}}\n", + "{1+\\frac{e^{-8\\pi}} {1+\\ldots} } } } \n", + "\\end{equation*}\n", + "```\n", + "### Display\n", + "$\\begin{equation*}\n", + "\\frac{1}{\\Bigl(\\sqrt{\\phi \\sqrt{5}}-\\phi\\Bigr) e^{\\frac25 \\pi}} =\n", + "1+\\frac{e^{-2\\pi}} {1+\\frac{e^{-4\\pi}} {1+\\frac{e^{-6\\pi}}\n", + "{1+\\frac{e^{-8\\pi}} {1+\\ldots} } } } \n", + "\\end{equation*}$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A Rogers-Ramanujan Identity\n", + "### Source\n", + "```\n", + "\\begin{equation*}\n", + "1 + \\frac{q^2}{(1-q)}+\\frac{q^6}{(1-q)(1-q^2)}+\\cdots =\n", + "\\prod_{j=0}^{\\infty}\\frac{1}{(1-q^{5j+2})(1-q^{5j+3})},\n", + "\\quad\\quad \\text{for $|q|<1$}. \n", + "\\end{equation*}\n", + "```\n", + "### Display\n", + "\n", + "$$\\begin{equation*}\n", + "1 + \\frac{q^2}{(1-q)}+\\frac{q^6}{(1-q)(1-q^2)}+\\cdots =\n", + "\\prod_{j=0}^{\\infty}\\frac{1}{(1-q^{5j+2})(1-q^{5j+3})},\n", + "\\quad\\quad \\text{for $|q|<1$}. \n", + "\\end{equation*}$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Maxwell's Equations\n", + "### Source\n", + "```\n", + "\\begin{align}\n", + "\\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\\ \\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\\\n", + "\\nabla \\times \\vec{\\mathbf{E}}\\, +\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\\n", + "\\nabla \\cdot \\vec{\\mathbf{B}} & = 0 \n", + "\\end{align}\n", + "```\n", + "### Display\n", + "\n", + "$\\begin{align}\n", + "\\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\\ \\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\\\n", + "\\nabla \\times \\vec{\\mathbf{E}}\\, +\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\\n", + "\\nabla \\cdot \\vec{\\mathbf{B}} & = 0 \n", + "\\end{align}$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Equation Numbering and References\n", + "\n", + "Equation numbering and referencing will be available in a future version of the Jupyter notebook." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Inline Typesetting (Mixing Markdown and TeX)\n", + "\n", + "While display equations look good for a page of samples, the ability to mix math and *formatted* **text** in a paragraph is also important.\n", + "\n", + "### Source\n", + "```\n", + "This expression $\\sqrt{3x-1}+(1+x)^2$ is an example of a TeX inline equation in a [Markdown-formatted](https://daringfireball.net/projects/markdown/) sentence. \n", + "```\n", + "\n", + "### Display\n", + "This expression $\\sqrt{3x-1}+(1+x)^2$ is an example of a TeX inline equation in a [Markdown-formatted](https://daringfireball.net/projects/markdown/) sentence. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Other Syntax\n", + "\n", + "You will notice in other places on the web that `$$` are needed explicitly to begin and end MathJax typesetting. This is **not** required if you will be using TeX environments, but the Jupyter notebook will accept this syntax on legacy notebooks. \n", + "\n", + "## Source\n", + "\n", + "```\n", + "$$\n", + "\\begin{array}{c}\n", + "y_1 \\\\\\\n", + "y_2 \\mathtt{t}_i \\\\\\\n", + "z_{3,4}\n", + "\\end{array}\n", + "$$\n", + "```\n", + "\n", + "```\n", + "$$\n", + "\\begin{array}{c}\n", + "y_1 \\cr\n", + "y_2 \\mathtt{t}_i \\cr\n", + "y_{3}\n", + "\\end{array}\n", + "$$\n", + "```\n", + "\n", + "```\n", + "$$\\begin{eqnarray} \n", + "x' &=& &x \\sin\\phi &+& z \\cos\\phi \\\\\n", + "z' &=& - &x \\cos\\phi &+& z \\sin\\phi \\\\\n", + "\\end{eqnarray}$$\n", + "```\n", + "\n", + "```\n", + "$$\n", + "x=4\n", + "$$\n", + "```\n", + "\n", + "## Display\n", + "\n", + "$$\n", + "\\begin{array}{c}\n", + "y_1 \\\\\\\n", + "y_2 \\mathtt{t}_i \\\\\\\n", + "z_{3,4}\n", + "\\end{array}\n", + "$$\n", + "\n", + "$$\n", + "\\begin{array}{c}\n", + "y_1 \\cr\n", + "y_2 \\mathtt{t}_i \\cr\n", + "y_{3}\n", + "\\end{array}\n", + "$$\n", + "\n", + "$$\\begin{eqnarray} \n", + "x' &=& &x \\sin\\phi &+& z \\cos\\phi \\\\\n", + "z' &=& - &x \\cos\\phi &+& z \\sin\\phi \\\\\n", + "\\end{eqnarray}$$\n", + "\n", + "$$\n", + "x=4\n", + "$$" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/src/docs/source/examples/Notebook/What is the Jupyter Notebook.ipynb b/src/docs/source/examples/Notebook/What is the Jupyter Notebook.ipynb new file mode 100644 index 000000000..8534f2330 --- /dev/null +++ b/src/docs/source/examples/Notebook/What is the Jupyter Notebook.ipynb @@ -0,0 +1,180 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# What is the Jupyter Notebook?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Jupyter Notebook is an **interactive computing environment** that enables users to author notebook documents that include: \n", + "- Live code\n", + "- Interactive widgets\n", + "- Plots\n", + "- Narrative text\n", + "- Equations\n", + "- Images\n", + "- Video\n", + "\n", + "These documents provide a **complete and self-contained record of a computation** that can be converted to various formats and shared with others using email, [Dropbox](https://www.dropbox.com/), version control systems (like git/[GitHub](https://github.com)) or [nbviewer.jupyter.org](https://nbviewer.jupyter.org)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Components" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Jupyter Notebook combines three components:\n", + "\n", + "* **The notebook web application**: An interactive web application for writing and running code interactively and authoring notebook documents.\n", + "* **Kernels**: Separate processes started by the notebook web application that runs users' code in a given language and returns output back to the notebook web application. The kernel also handles things like computations for interactive widgets, tab completion and introspection. \n", + "* **Notebook documents**: Self-contained documents that contain a representation of all content visible in the notebook web application, including inputs and outputs of the computations, narrative\n", + "text, equations, images, and rich media representations of objects. Each notebook document has its own kernel." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Notebook web application" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The notebook web application enables users to:\n", + "\n", + "* **Edit code in the browser**, with automatic syntax highlighting, indentation, and tab completion/introspection.\n", + "* **Run code from the browser**, with the results of computations attached to the code which generated them.\n", + "* See the results of computations with **rich media representations**, such as HTML, LaTeX, PNG, SVG, PDF, etc.\n", + "* Create and use **interactive JavaScript widgets**, which bind interactive user interface controls and visualizations to reactive kernel side computations.\n", + "* Author **narrative text** using the [Markdown](https://daringfireball.net/projects/markdown/) markup language.\n", + "* Include mathematical equations using **LaTeX syntax in Markdown**, which are rendered in-browser by [MathJax](https://www.mathjax.org/)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Kernels" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Through Jupyter's kernel and messaging architecture, the Notebook allows code to be run in a range of different programming languages. For each notebook document that a user opens, the web application starts a kernel that runs the code for that notebook. Each kernel is capable of running code in a single programming language and there are kernels available in the following languages:\n", + "\n", + "* Python(https://github.com/ipython/ipython)\n", + "* Julia (https://github.com/JuliaLang/IJulia.jl)\n", + "* R (https://github.com/IRkernel/IRkernel)\n", + "* Ruby (https://github.com/minrk/iruby)\n", + "* Haskell (https://github.com/gibiansky/IHaskell)\n", + "* Scala (https://github.com/Bridgewater/scala-notebook)\n", + "* node.js (https://gist.github.com/Carreau/4279371)\n", + "* Go (https://github.com/takluyver/igo)\n", + "\n", + "The default kernel runs Python code. The notebook provides a simple way for users to pick which of these kernels is used for a given notebook. \n", + "\n", + "Each of these kernels communicate with the notebook web application and web browser using a JSON over ZeroMQ/WebSockets message protocol that is described [here](https://jupyter-client.readthedocs.io/en/latest/messaging.html#messaging). Most users don't need to know about these details, but it helps to understand that \"kernels run code.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Notebook documents" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notebook documents contain the **inputs and outputs** of an interactive session as well as **narrative text** that accompanies the code but is not meant for execution. **Rich output** generated by running code, including HTML, images, video, and plots, is embeddeed in the notebook, which makes it a complete and self-contained record of a computation. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When you run the notebook web application on your computer, notebook documents are just **files on your local filesystem with a** `.ipynb` **extension**. This allows you to use familiar workflows for organizing your notebooks into folders and sharing them with others." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notebooks consist of a **linear sequence of cells**. There are three basic cell types:\n", + "\n", + "* **Code cells:** Input and output of live code that is run in the kernel\n", + "* **Markdown cells:** Narrative text with embedded LaTeX equations\n", + "* **Raw cells:** Unformatted text that is included, without modification, when notebooks are converted to different formats using nbconvert\n", + "\n", + "Internally, notebook documents are [JSON](https://en.wikipedia.org/wiki/JSON) **data** with **binary values** [base64](https://en.wikipedia.org/wiki/Base64) encoded. This allows them to be **read and manipulated programmatically** by any programming language. Because JSON is a text format, notebook documents are version control friendly.\n", + "\n", + "**Notebooks can be exported** to different static formats including HTML, reStructeredText, LaTeX, PDF, and slide shows ([reveal.js](https://revealjs.com)) using Jupyter's `nbconvert` utility.\n", + "\n", + "Furthermore, any notebook document available from a **public URL or on GitHub can be shared** via [nbviewer](https://nbviewer.jupyter.org). This service loads the notebook document from the URL and renders it as a static web page. The resulting web page may thus be shared with others **without their needing to install the Jupyter Notebook**." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.2" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/src/docs/source/examples/Notebook/Working With Markdown Cells.ipynb b/src/docs/source/examples/Notebook/Working With Markdown Cells.ipynb new file mode 100644 index 000000000..82f6864bd --- /dev/null +++ b/src/docs/source/examples/Notebook/Working With Markdown Cells.ipynb @@ -0,0 +1,369 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Markdown Cells" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Text can be added to Jupyter Notebooks using Markdown cells. You can change the cell type to Markdown by using the `Cell` menu, the toolbar, or the key shortcut `m`. Markdown is a popular markup language that is a superset of HTML. Its specification can be found here:\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Markdown basics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can make text *italic* or **bold** by surrounding a block of text with a single or double * respectively" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can build nested itemized or enumerated lists:\n", + "\n", + "* One\n", + " - Sublist\n", + " - This\n", + " - Sublist\n", + " - That\n", + " - The other thing\n", + "* Two\n", + " - Sublist\n", + "* Three\n", + " - Sublist\n", + "\n", + "Now another list:\n", + "\n", + "1. Here we go\n", + " 1. Sublist\n", + " 2. Sublist\n", + "2. There we go\n", + "3. Now this" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can add horizontal rules:\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is a blockquote:\n", + "\n", + "> Beautiful is better than ugly.\n", + "> Explicit is better than implicit.\n", + "> Simple is better than complex.\n", + "> Complex is better than complicated.\n", + "> Flat is better than nested.\n", + "> Sparse is better than dense.\n", + "> Readability counts.\n", + "> Special cases aren't special enough to break the rules.\n", + "> Although practicality beats purity.\n", + "> Errors should never pass silently.\n", + "> Unless explicitly silenced.\n", + "> In the face of ambiguity, refuse the temptation to guess.\n", + "> There should be one-- and preferably only one --obvious way to do it.\n", + "> Although that way may not be obvious at first unless you're Dutch.\n", + "> Now is better than never.\n", + "> Although never is often better than *right* now.\n", + "> If the implementation is hard to explain, it's a bad idea.\n", + "> If the implementation is easy to explain, it may be a good idea.\n", + "> Namespaces are one honking great idea -- let's do more of those!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And shorthand for links:\n", + "\n", + "[Jupyter's website](https://jupyter.org)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can use backslash \\ to generate literal characters which would otherwise have special meaning in the Markdown syntax.\n", + "\n", + "```\n", + "\\*literal asterisks\\*\n", + " *literal asterisks*\n", + "```\n", + "\n", + "Use double backslash \\ \\ to generate the literal $ symbol." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Headings" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can add headings by starting a line with one (or multiple) `#` followed by a space, as in the following example:\n", + "\n", + "```\n", + "# Heading 1\n", + "# Heading 2\n", + "## Heading 2.1\n", + "## Heading 2.2\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Embedded code" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can embed code meant for illustration instead of execution in Python:\n", + "\n", + " def f(x):\n", + " \"\"\"a docstring\"\"\"\n", + " return x**2\n", + "\n", + "or other languages:\n", + "\n", + " for (i=0; i\n", + "\n", + "Header 1\n", + "Header 2\n", + "\n", + "\n", + "row 1, cell 1\n", + "row 1, cell 2\n", + "\n", + "\n", + "row 2, cell 1\n", + "row 2, cell 2\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Local files" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you have local files in your Notebook directory, you can refer to these files in Markdown cells directly:\n", + "\n", + " [subdirectory/]\n", + "\n", + "For example, in the images folder, we have the Python logo:\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "and a video with the HTML5 video tag:\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "These do not embed the data into the notebook file, and require that the files exist when you are viewing the notebook." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Security of local files" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that this means that the Jupyter notebook server also acts as a generic file server\n", + "for files inside the same tree as your notebooks. Access is not granted outside the\n", + "notebook folder so you have strict control over what files are visible, but for this\n", + "reason it is highly recommended that you do not run the notebook server with a notebook\n", + "directory at a high level in your filesystem (e.g. your home directory).\n", + "\n", + "When you run the notebook in a password-protected manner, local file access is restricted\n", + "to authenticated users unless read-only views are active." + ] + }, + { + "attachments": { + "pycon-logo.jpg": { + "image/jpeg": "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wwFLUXxDFNS9srVKbE1EY0t20AWVo/BAxBIcm/CVxiLnd+D8sSVNhM9eEg2cIChfkf8APNnAIoW5nCRMlTYTPT/wD//aAAwDAQACAAMAAAAQ8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888YU88888888888888888888888888s8skcw84Mw488888888888888888cYMIcc8g4c8ss44IU088888888888888oQYYQocMMc8MAoYQ4Qc888888888888M8I88888462088E88csU8888888888888s088zGfI4zEvKz88s088888888888888883/y2EWUV6np2/788888888888888888E4E0VUVUVpVpGI5I888888888888888E+XVcQeSZbiYjVpU+J8888888xw05KAxASQTCCCCCCCCCCwjiAxAG14wxDCCCGEMLJDEHP+sMMc+PLIDFHMIKCCCDL7eVPd/48004088808888w8w0vlbJu3H88/Q8N84s08wI4Ak08gkEMYM08t6sv8APPPK7LnfLGKPKPPAOFPOHAPAPPPLHnF/PPPPvovPLHKHJNOCEFPKGGEAONPPEvvvPPPPMPPPPPPHDHPHDPPPPHPHDPPPPMPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP/EACkRAQABAgMHBQEBAQAAAAAAAAEAETEhQaFRYXGBkcHRIECx4fAwgBD/2gAIAQMB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Davod+mLkEux2EJow4QYBAeh+RxozNxn2CmbIhHI9LnI8MZPeP5fcnCR9XToUi4uisp9PzlqJENxGvkG3P4FsKGF4ZNhhR2omuZ2AFFpV24N+jNAS8JExaTWRPFqBili0cwo8VYigsbJhwOiZ1dGnCeRUEIGS5lphG0xmo5Mw2xvIz7VOM4QZCyXZi6hdgoXldqkuY0kJ4qHB2DQmZYBquzpFOVcyg3dhSJ0miPLPRkwsAO7a34Z8OATDYGInmr+giXXaiqEoiuRvRLSAVIIW7exvaghfMY4iIbaGJGamgqAw3iKeSjvpdimReQ3AIm8uOnNAzUjiYmrWuRQA0AydyuYyXqDwb1dH34ARF4lmWIj+AIFxdJYRxfp7k4Sfq6/ymC+8CBNCRC9KSHttjCFss+f88D22ThA3WfPSk4L7yaA0BEB/wDgH//ZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA=" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Markdown attachments\n", + "\n", + "Since Jupyter notebook version 5.0, in addition to referencing external file you can attach a file to a markdown cell. \n", + "To do so drag the file from in a markdown cell while editing it:\n", + "\n", + "![pycon-logo.jpg](attachment:pycon-logo.jpg)\n", + "\n", + "Files are stored in cell metadata and will be automatically scrubbed at save-time if not referenced. You can recognized attached images from other files by their url that starts with `attachment:`. For the image above:\n", + "\n", + " ![pycon-logo.jpg](attachment:pycon-logo.jpg)\n", + " \n", + "Keep in mind that attached files will increase the size of your notebook. \n", + "\n", + "You can manually edit the attachment by using the `View > Cell Toolbar > Attachment` menu, but you should not need to. " + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "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.7.2" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/src/docs/source/examples/Notebook/examples_index.rst b/src/docs/source/examples/Notebook/examples_index.rst new file mode 100644 index 000000000..5f3cb084e --- /dev/null +++ b/src/docs/source/examples/Notebook/examples_index.rst @@ -0,0 +1,21 @@ +================= +Notebook Examples +================= + +The pages in this section are all converted notebook files. You can also +`view these notebooks on nbviewer`__. + +__ https://nbviewer.jupyter.org/github/jupyter/notebook/blob/main/ + docs/source/examples/Notebook/ + +.. toctree:: + :maxdepth: 2 + + What is the Jupyter Notebook + Notebook Basics + Running Code + Working With Markdown Cells + Custom Keyboard Shortcuts + Importing Notebooks + Connecting with the Qt Console + Typesetting Equations diff --git a/src/docs/source/examples/Notebook/images/command_mode.png b/src/docs/source/examples/Notebook/images/command_mode.png new file mode 100644 index 000000000..4482de3e0 Binary files /dev/null and b/src/docs/source/examples/Notebook/images/command_mode.png differ diff --git a/src/docs/source/examples/Notebook/images/dashboard_files_tab.png b/src/docs/source/examples/Notebook/images/dashboard_files_tab.png new file mode 100644 index 000000000..1809d7cb6 Binary files /dev/null and b/src/docs/source/examples/Notebook/images/dashboard_files_tab.png differ diff --git a/src/docs/source/examples/Notebook/images/dashboard_files_tab_btns.png b/src/docs/source/examples/Notebook/images/dashboard_files_tab_btns.png new file mode 100644 index 000000000..b76af88e3 Binary files /dev/null and b/src/docs/source/examples/Notebook/images/dashboard_files_tab_btns.png differ diff --git a/src/docs/source/examples/Notebook/images/dashboard_files_tab_new.png b/src/docs/source/examples/Notebook/images/dashboard_files_tab_new.png new file mode 100644 index 000000000..d0d02f894 Binary files /dev/null and b/src/docs/source/examples/Notebook/images/dashboard_files_tab_new.png differ diff --git a/src/docs/source/examples/Notebook/images/dashboard_files_tab_run.png b/src/docs/source/examples/Notebook/images/dashboard_files_tab_run.png new file mode 100644 index 000000000..65c7259f6 Binary files /dev/null and b/src/docs/source/examples/Notebook/images/dashboard_files_tab_run.png differ diff --git a/src/docs/source/examples/Notebook/images/dashboard_running_tab.png b/src/docs/source/examples/Notebook/images/dashboard_running_tab.png new file mode 100644 index 000000000..54f2bd27c Binary files /dev/null and b/src/docs/source/examples/Notebook/images/dashboard_running_tab.png differ diff --git a/src/docs/source/examples/Notebook/images/edit_mode.png b/src/docs/source/examples/Notebook/images/edit_mode.png new file mode 100644 index 000000000..9d52aaaa9 Binary files /dev/null and b/src/docs/source/examples/Notebook/images/edit_mode.png differ diff --git a/src/docs/source/examples/Notebook/images/menubar_toolbar.png b/src/docs/source/examples/Notebook/images/menubar_toolbar.png new file mode 100644 index 000000000..c22d96088 Binary files /dev/null and b/src/docs/source/examples/Notebook/images/menubar_toolbar.png differ diff --git a/src/docs/source/examples/Notebook/images/nbconvert_arch.png b/src/docs/source/examples/Notebook/images/nbconvert_arch.png new file mode 100644 index 000000000..27cd69b79 Binary files /dev/null and b/src/docs/source/examples/Notebook/images/nbconvert_arch.png differ diff --git a/src/docs/source/examples/Notebook/nbpackage/__init__.py b/src/docs/source/examples/Notebook/nbpackage/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/docs/source/examples/Notebook/nbpackage/mynotebook.ipynb b/src/docs/source/examples/Notebook/nbpackage/mynotebook.ipynb new file mode 100644 index 000000000..191e181af --- /dev/null +++ b/src/docs/source/examples/Notebook/nbpackage/mynotebook.ipynb @@ -0,0 +1,69 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# My Notebook" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def foo():\n", + " return \"foo\"" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def has_ip_syntax():\n", + " listing = !ls\n", + " return listing" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def whatsmyname():\n", + " return __name__" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.5.1+" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/src/docs/source/examples/Notebook/nbpackage/nbs/__init__.py b/src/docs/source/examples/Notebook/nbpackage/nbs/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/docs/source/examples/Notebook/nbpackage/nbs/other.ipynb b/src/docs/source/examples/Notebook/nbpackage/nbs/other.ipynb new file mode 100644 index 000000000..43825b896 --- /dev/null +++ b/src/docs/source/examples/Notebook/nbpackage/nbs/other.ipynb @@ -0,0 +1,46 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Other notebook\n", + "\n", + "This notebook just defines `bar`" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def bar(x):\n", + " return \"bar\" * x" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.5.1" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/src/docs/source/examples/images/FrontendKernel.graffle/data.plist b/src/docs/source/examples/images/FrontendKernel.graffle/data.plist new file mode 100644 index 000000000..6179209c4 --- /dev/null +++ b/src/docs/source/examples/images/FrontendKernel.graffle/data.plist @@ -0,0 +1,461 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGraffle + 139.18.0.187838 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {576, 733}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + BaseZoom + 0 + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2014-05-27 21:39:30 +0000 + Creator + bgranger + DisplayScale + 1 0/72 in = 1.0000 in + GraphDocumentVersion + 8 + GraphicsList + + + Class + LineGraphic + ControlPoints + + {0, 0} + {-7, 8} + {6.9999849080788863, -8.0000033519149838} + {0, 0} + + ID + 29 + Points + + {164, 341.5} + {186.5, 338} + {196, 327.5} + + Style + + stroke + + Bezier + + HeadArrow + 0 + Legacy + + LineType + 1 + TailArrow + 0 + + + + + Bounds + {{107.64779663085938, 305.5}, {69.088050842285156, 84.499992370605469}} + Class + ShapedGraphic + ID + 9 + ImageID + 1 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + + Class + LineGraphic + Head + + ID + 6 + Position + 0.53676468133926392 + + ID + 8 + Points + + {288.09285678056523, 276} + {288.49999833106995, 304.50001973116196} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 7 + + + + Bounds + {{207, 263}, {162, 13}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 7 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 xkcd-Regular;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs20 \cf0 Interactive Computing Protocol} + VerticalPad + 0 + + Wrap + NO + + + Class + LineGraphic + Head + + ID + 1 + + ID + 6 + Points + + {252, 304.50001973116196} + {320, 304.50001973116196} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + Pattern + 1 + TailArrow + FilledArrow + + + Tail + + ID + 5 + + + + Bounds + {{186.5, 286.5}, {65, 36}} + Class + ShapedGraphic + ID + 5 + Shape + Rectangle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 xkcd-Regular;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs20 \cf0 Frontend} + + + + Bounds + {{320.5, 286.5}, {65, 36}} + Class + ShapedGraphic + ID + 1 + Shape + Rectangle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 xkcd-Regular;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs20 \cf0 Kernel} + + + + GridInfo + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 2 + ImageLinkBack + + + + ImageList + + image1.png + + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2014-05-27 22:28:18 +0000 + Modifier + bgranger + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {612, 792} + + NSPrintReverseOrientation + + int + 0 + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + ExpandedCanvases + + + name + Canvas 1 + + + Frame + {{277, 7}, {832, 871}} + ListView + + OutlineWidth + 142 + RightSidebar + + ShowRuler + + Sidebar + + SidebarWidth + 120 + VisibleRegion + {{96.5, 197.5}, {348.5, 366}} + Zoom + 2 + ZoomValues + + + Canvas 1 + 2 + 1 + + + + + diff --git a/src/docs/source/examples/images/FrontendKernel.graffle/image1.png b/src/docs/source/examples/images/FrontendKernel.graffle/image1.png new file mode 100644 index 000000000..c01e3497f Binary files /dev/null and b/src/docs/source/examples/images/FrontendKernel.graffle/image1.png differ diff --git a/src/docs/source/examples/images/FrontendKernel.png b/src/docs/source/examples/images/FrontendKernel.png new file mode 100644 index 000000000..62aa89027 Binary files /dev/null and b/src/docs/source/examples/images/FrontendKernel.png differ diff --git a/src/docs/source/examples/images/animation.m4v b/src/docs/source/examples/images/animation.m4v new file mode 100644 index 000000000..13ecf88c5 Binary files /dev/null and b/src/docs/source/examples/images/animation.m4v differ diff --git a/src/docs/source/examples/images/ipython_logo.png b/src/docs/source/examples/images/ipython_logo.png new file mode 100644 index 000000000..e9bdce394 Binary files /dev/null and b/src/docs/source/examples/images/ipython_logo.png differ diff --git a/src/docs/source/examples/images/jupyter_logo.png b/src/docs/source/examples/images/jupyter_logo.png new file mode 100644 index 000000000..3f3f57ff3 Binary files /dev/null and b/src/docs/source/examples/images/jupyter_logo.png differ diff --git a/src/docs/source/examples/images/python_logo.svg b/src/docs/source/examples/images/python_logo.svg new file mode 100644 index 000000000..116eaac31 --- /dev/null +++ b/src/docs/source/examples/images/python_logo.svg @@ -0,0 +1,269 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/docs/source/examples/utils/list_pyfiles.ipy b/src/docs/source/examples/utils/list_pyfiles.ipy new file mode 100644 index 000000000..4b15482e7 --- /dev/null +++ b/src/docs/source/examples/utils/list_pyfiles.ipy @@ -0,0 +1,6 @@ +# A simple IPython script that provides Notebook links to .py files in the cwd + +from IPython.display import FileLink, display +files =!ls *.py +for f in files: + display(FileLink(f)) diff --git a/src/docs/source/examples/utils/list_subdirs.ipy b/src/docs/source/examples/utils/list_subdirs.ipy new file mode 100644 index 000000000..b8a161245 --- /dev/null +++ b/src/docs/source/examples/utils/list_subdirs.ipy @@ -0,0 +1,7 @@ +# A simple IPython script that lists files in all subdirs + +from IPython.display import FileLinks, display +dirs =!ls -d */ +for d in dirs: + if d != '__pycache__/': + display(FileLinks(d)) diff --git a/src/docs/source/extending/frontend_extensions.md b/src/docs/source/extending/frontend_extensions.md new file mode 100644 index 000000000..fe938e453 --- /dev/null +++ b/src/docs/source/extending/frontend_extensions.md @@ -0,0 +1,17 @@ +(frontend-extensions)= + +# Custom front-end extensions + +This describes the basic steps to write a TypeScript extension for the Jupyter +notebook front-end. This allows you to customize the behaviour of the various +pages like the dashboard, the notebook, or the text editor. + +Starting with Notebook 7, front-end extensions for the notebook can be developed +as prebuilt JupyterLab extensions. + +This means Notebook 7 is able to reuse many of the existing extensions from the JupyterLab ecosystem as is. + +If you would like to develop a prebuilt extension for Notebook 7, check out: + +- [JupyterLab Extension Tutorial](https://jupyterlab.readthedocs.io/en/latest/extension/extension_tutorial.html): A tutorial to learn how to make a simple JupyterLab extension. +- The [JupyterLab Extension Examples Repository](https://github.com/jupyterlab/extension-examples): A repository containing many examples of JupyterLab extensions for performing various tasks: adding commands, adding a new widget, handling user settings, etc. diff --git a/src/docs/source/extending/index.md b/src/docs/source/extending/index.md new file mode 100644 index 000000000..e97928a44 --- /dev/null +++ b/src/docs/source/extending/index.md @@ -0,0 +1,27 @@ +# Extending the Notebook + +```{warning} +Please note that the extension system for Notebook 7 is radically different +from the one used in Notebook 6.5.x and earlier. If you are looking for +information on how to extend the classic Notebook, please refer to the +[documentation for NbClassic](https://nbclassic.readthedocs.io/en/latest/extending/index.html). +``` + +```{note} +With Notebook 7 being developed on top of JupyterLab and Jupyter Server, the +frontend extension system is now based on the same extension system used by JupyterLab. + +Server extensions are also now based on the same system used by Jupyter Server. +You will find below a link to the relevant documentations. +``` + +Certain subsystems of the notebook server are designed to be extended or +overridden by users. These documents explain these systems, and show how to +override the notebook's defaults with your own custom behavior. + +```{toctree} +:maxdepth: 2 + +Extending the Jupyter Server +frontend_extensions +``` diff --git a/src/docs/source/index.md b/src/docs/source/index.md new file mode 100644 index 000000000..a6c13c568 --- /dev/null +++ b/src/docs/source/index.md @@ -0,0 +1,40 @@ +# Jupyter Notebook Documentation + +Welcome to the **Jupyter Notebook** documentation site. **Jupyter Notebook** +is a simplified notebook authoring application, and is a part of [Project +Jupyter](https://docs.jupyter.org/en/latest/), a large umbrella project +centered around the goal of providing tools (and [standards](https://docs.jupyter.org/en/latest/#sub-project-documentation)) +for interactive computing with [computational notebooks](https://docs.jupyter.org/en/latest/#what-is-a-notebook). + +A [computational notebook](https://docs.jupyter.org/en/latest/#what-is-a-notebook) +is a shareable document that combines computer +code, plain language descriptions, data, rich visualizations like 3D models, +charts, graphs and figures, and interactive controls. A notebook, along with +an editor like **Jupyter Notebook**, provides a fast interactive environment for +prototyping and explaining code, exploring and visualizing data, and sharing +ideas with others. + +**Jupyter Notebook** is a sibling to other notebook authoring applications under +the Project Jupyter umbrella, like [JupyterLab](https://jupyterlab.readthedocs.io/en/stable/) +and [Jupyter Desktop](https://github.com/jupyterlab/jupyterlab-desktop). +Jupyter Notebook offers a lightweight, simplified experience compared to JupyterLab. + +Read more about how to use **Jupyter Notebook** on this site, in the [User +Documentation](notebook.md). + +```{image} ./_static/images/notebook-running-code.png + +``` + +- [Installation](https://jupyter.readthedocs.io/en/latest/install.html) +- [Starting the Notebook](https://jupyter.readthedocs.io/en/latest/running.html) + +```{toctree} +:maxdepth: 2 + +user-documentation +configuration +migrate_to_notebook7 +contributor +changelog +``` diff --git a/src/docs/source/ipython_security.asc b/src/docs/source/ipython_security.asc new file mode 100644 index 000000000..95436812a --- /dev/null +++ b/src/docs/source/ipython_security.asc @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v2.0.22 (GNU/Linux) + +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 +5vmLc+Ibz+eT+rM= +=XVDe +-----END PGP PUBLIC KEY BLOCK----- diff --git a/src/docs/source/links.txt b/src/docs/source/links.txt new file mode 100644 index 000000000..1d4820bf9 --- /dev/null +++ b/src/docs/source/links.txt @@ -0,0 +1,41 @@ +.. This (-*- rst -*-) format file contains commonly used link targets + and name substitutions. It may be included in many files, + therefore it should only contain link targets and name + substitutions. Try grepping for "^\.\. _" to find plausible + candidates for this list. + + NOTE: this file must have an extension *opposite* to that of the main reST + files in the manuals, so that we can include it with ".. include::" + directives, but without triggering warnings from Sphinx for not being listed + in any toctree. Since IPython uses .txt for the main files, this one will + use .rst. + + NOTE: reST targets are + __not_case_sensitive__, so only one target definition is needed for + ipython, IPython, etc. + + NOTE: Some of these were taken from the nipy links compendium. + +.. Main Jupyter notebook links + +.. _Notebook Basics: notebook_p2_ +.. _notebook_p2: https://nbviewer.jupyter.org/github/jupyter/notebook/blob/main/docs/source/examples/Notebook/Notebook%20Basics.ipynb + +.. _Running Code in the Jupyter Notebook: notebook_p1_ +.. _notebook_p1: https://nbviewer.jupyter.org/github/jupyter/notebook/blob/main/docs/source/examples/Notebook/Running%20Code.ipynb + +.. Other python projects +.. _matplotlib: https://matplotlib.org +.. _nbviewer: https://nbviewer.jupyter.org +.. _nbconvert: https://nbconvert.readthedocs.io/en/latest/ + +.. Other tools and projects +.. _Markdown: https://daringfireball.net/projects/markdown/syntax + +.. _Rich Output: notebook_p5_ +.. _notebook_p5: https://nbviewer.jupyter.org/github/ipython/ipython/blob/main/examples/IPython%20Kernel/Rich%20Output.ipynb + +.. _Plotting with Matplotlib: notebook_p3_ +.. _notebook_p3: https://nbviewer.jupyter.org/github/ipython/ipython/blob/main/examples/IPython%20Kernel/Plotting%20in%20the%20Notebook.ipynb + +.. _Working with Markdown Cells: https://nbviewer.jupyter.org/github/jupyter/notebook/blob/main/docs/source/examples/Notebook/Working%20With%20Markdown%20Cells.ipynb diff --git a/src/docs/source/migrate_to_notebook7.md b/src/docs/source/migrate_to_notebook7.md new file mode 100644 index 000000000..4fdf3e2f4 --- /dev/null +++ b/src/docs/source/migrate_to_notebook7.md @@ -0,0 +1,84 @@ +# Migrating + +_Updated 2023-05-17_ + +```{warning} +Version 7 of the Jupyter Notebook application might break your +extensions or other customizations. Please read this page to find out if you +need to take any actions to ensure a smooth, uninterrupted experience. +``` + +A major upgrade to the Jupyter Notebook interface is coming with Notebook 7! This +upgrade will bring a heap of new features, but will also break backwards +compatibility with many classic Notebook features and customizations. + +This set of guides is here to help you migrate your Classic Notebook setup and +extensions to the new Notebook 7. + +## What you need to do + +For users who don't use extensions or other customizations, you will seamlessly +receive the new Notebook 7 when you `pip install notebook` once version 7 is +released out of beta, along with all its new features, like realtime +collaboration, debugger, and theming. + +For users who need to use extensions or other customizations, you have a couple +of options: + +- Look for Notebook 7 compatible versions of the extensions you already use, + and [find replacements for those that are not available] + +- If you need to maintain compatibility with the Classic Notebook for extensions + or other customizations that are critical to your workflows, you can switch to + [nbclassic], which will provide compatibility with the old notebook interface + and support during an intermediate transition period to Notebook 7 + +## Why a new version? + +For the past few years, the Classic Jupyter Notebook has been in maintenance +mode. + +Development has mostly moved to alternative user interfaces like JupyterLab, +which is a more modern and extensible web application. This has resulted in +a lot of new features and improvements in JupyterLab, but also in a lot of +new features and improvements that were not possible to integrate to the +Classic Notebook. + +For a while, the plan was to progressively _sunset_ the Classic Notebook and +not maintain it anymore. However, the Classic Notebook is still widely used +and it is still the default user interface for Jupyter in many scenarios. +Many users and organizations have not been able to switch to JupyterLab yet. +For some users, JupyterLab can also be a more complex environment to use, +especially for beginners. + +Following the feedback from the community, it was decided in late 2021 to +continue developing the Jupyter Notebook application and _sunrise_ it as +Notebook 7. + +You can find more details about the changes currently taking place in the +Jupyter Ecosystem in the [JEP 79] and [team-compass note]. + +## New features in Notebook 7 + +```{toctree} +:maxdepth: 2 + +notebook_7_features.md +``` + +## Migration Guides + +```{toctree} +:maxdepth: 2 + +migrating/frontend-extensions.md +migrating/server-extensions.md +migrating/server-imports.md +migrating/custom-themes.md +migrating/multiple-interfaces.md +``` + +[jep 79]: https://jupyter.org/enhancement-proposals/79-notebook-v7/notebook-v7.html +[team-compass note]: https://github.com/jupyter/notebook-team-compass/issues/5#issuecomment-1085254000 +[find replacements for those that are not available]: https://jupyter-notebook.readthedocs.io/en/latest/migrating/frontend-extensions.html#jupyterlab-equivalent-extensions-to-the-classic-notebook +[nbclassic]: https://github.com/jupyter/nbclassic diff --git a/src/docs/source/migrating/custom-themes.md b/src/docs/source/migrating/custom-themes.md new file mode 100644 index 000000000..dfb7a55c2 --- /dev/null +++ b/src/docs/source/migrating/custom-themes.md @@ -0,0 +1,35 @@ +# Custom themes in Notebook 7 + +In Notebook 7, the way to create custom themes has changed. This means that custom themes developed for Notebook 6 or earlier will not work with Notebook 7 and upwards. + +This is for example the case for community contributed themes such as [jupyter-themes](https://github.com/dunovank/jupyter-themes). + +## Using a custom theme + +Fortunately installing a custom theme for Notebook 7 is very easy. It is the same process as installing a regular extension. + +For example let's say you want to install the [JupyterLab Night](https://github.com/jupyterlab-contrib/jupyterlab-night) theme. You can do so by running the following command: + +```bash +pip install jupyterlab-night +``` + +Then refresh the page and you should see the new theme available in the settings menu: + +![a screencast showing how to install a custom theme](https://user-images.githubusercontent.com/591645/229583076-de3c0541-246f-4781-8941-fcbec2204038.gif) + +There are already many themes available on [PyPI](https://pypi.org/search/?q=jupyterlab-theme). + +You can also find other themes using the `jupyterlab-theme` topic on GitHub: https://github.com/topics/jupyterlab-theme + +For example: + +- [https://github.com/johnnybarrels/jupyterlab_onedarkpro](https://github.com/johnnybarrels/jupyterlab_onedarkpro) +- [https://github.com/dunovank/jupyterlab_legos_ui](https://github.com/dunovank/jupyterlab_legos_ui) +- [https://github.com/timkpaine/jupyterlab_miami_nights](https://github.com/timkpaine/jupyterlab_miami_nights) + +## Creating a custom theme + +Creating a custom theme for Notebook 7 follows the same process as creating a custom theme for JupyterLab 4. + +See the {ref}`Frontend Extension Guide ` to get you started. When creating the extension, select the `Theme` option in the cookiecutter prompt. diff --git a/src/docs/source/migrating/frontend-extensions.md b/src/docs/source/migrating/frontend-extensions.md new file mode 100644 index 000000000..ecd0ee4ce --- /dev/null +++ b/src/docs/source/migrating/frontend-extensions.md @@ -0,0 +1,33 @@ +# Frontend Extensions in Notebook 7 + +```{warning} +Any extension developed for Notebook \< 7 or NbClassic will not be +compatible with Notebook 7 and upwards. + +Some extensions like nbgrader have already been ported. We invite you to +check if the extensions you are using have already been ported. +``` + +You can check the following resources to see if your extension is available for Notebook 7: + +## List of available Notebook 7 extensions + +To get an idea of the extensions available for Notebook 7, you can check the following resources: + +- [List of JupyterLab extensions][list of jupyterlab extensions] +- [Awesome Jupyter][awesome jupyter] + +These resources are for JupyterLab, but many of them are compatible with Notebook 7 since Notebook 7 is based on JupyterLab. + +[list of jupyterlab extensions]: https://jupyterlab-contrib.github.io/extensions.html +[awesome jupyter]: https://github.com/markusschanta/awesome-jupyter#jupyterlab-extensions + +## JupyterLab equivalent extensions to the Classic Notebook + +The `jupyterlab-contrib` organization maintains a list of extensions to ease the transition from the Classic Notebook to Notebook 7 and / or JupyterLab. + +The list is available at the following URL: [Migrating from the Classic Notebook][migrate from classic] + +![a screenshot showing extensions in classic and lab](https://user-images.githubusercontent.com/591645/229616855-94d34762-6666-4edd-a969-e85b285d7094.png) + +[migrate from classic]: https://jupyterlab-contrib.github.io/migrate_from_classical.html diff --git a/src/docs/source/migrating/multiple-interfaces.md b/src/docs/source/migrating/multiple-interfaces.md new file mode 100644 index 000000000..2d8fcdd29 --- /dev/null +++ b/src/docs/source/migrating/multiple-interfaces.md @@ -0,0 +1,88 @@ +# Simultaneous usage of different versions of Notebook 7 and the Classic Notebook UI + +With the release of Notebook 7, the classic Notebook UI is now +available as a Jupyter Server extension, NbClassic. This means that +NbClassic can be installed independently of Notebook 7, and can be also +installed alongside Notebook 7. + +Below are different scenarios that you might consider when updating to Notebook 7. + +## Try it on Binder + +You can try JupyterLab, Notebook 7 and NBClassic installed together using [this gist][lab-nb-nbclassic] on Binder: + +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gist/jtpio/35a72862c8be13dee31b61ebac2d9786/master?urlpath=/tree) + +[lab-nb-nbclassic]: https://gist.github.com/jtpio/35a72862c8be13dee31b61ebac2d9786 + +## Using the `Interface` dropdown + +Notebook 7 provides a dropdown menu to switch between the different user interfaces available on the same server. + +It is available in the Notebook toolbar: + +![image](https://user-images.githubusercontent.com/591645/229729077-a91bc9dd-9bb9-4510-a266-599bf2f97745.png) + +```{note} +This dropdown is only available when using Notebook 7 or JupyterLab. +It is not displayed when using NbClassic. +``` + +## NbClassic and Notebook 7 + +You can install NbClassic, Notebook 7 and JupyterLab, all three of +which will provide different user interfaces +on the same server. When Notebook 7 is available, the NbClassic UI, will +be served at the `/nbclassic/tree` base path rather than the +base path `/tree` used otherwise. If you are using Notebook 7 along +with NbClassic, you will also have JupyterLab installed as it is a +dependency of Notebook 7, and these front ends will be available +through the following base paths: JupyterLab at `/lab`, Notebook 7 at +`/tree`, and NbClassic at `/nbclassic/tree`. + +## NbClassic and Notebook 6.5.x + +As NbClassic provides the static assets for Notebook 6.5.x, while +having both installed should cause no issues, the user interface provided +by these two packages will be the same. These UIs will be served by +different back end servers. An NbClassic instance will be at a server with the +`/tree` path and opening a Notebook 6.5.x instance will open on a +different server with the `/tree` path as well, presenting the same +static assets. When starting an instance of JupyterLab you will be able +to access the classic view of Notebook with NbClassic served on the same +server at `/tree`. + +## NbClassic and Notebook \<= 6.4.x + +When using NbClassic and Notebook \<= 6.4.x you can expect that these UIs +will not be only presented at different servers, meaning they will both +be available at their respective server under `/tree` but they +may also differ as potential changes to the NbClassic UI will not be +reflected in Notebook versions \<= 6.4.x. In this case as well, you would +be able to access the classic view of Notebook with NbClassic served on +the same server, at `/tree`. + +## NbClassic and JupyterLab 3.x + +When only JupyterLab 3.x is installed, then NbClassic does not have to be +explicitly installed as JupyterLab 3.x depends on it. They will run on +the same server, and are reachable via `/tree` for NbClassic and +`/lab` for JupyterLab. + +## NbClassic and JupyterLab 4.x + +When only JupyterLab 4.x is installed, then NbClassic has to be installed +explicitly. They will run on the same server, and are reachable via +`/tree` for NbClassic, and `/lab` for JupyterLab. + +## NbClassic Independently + +When you choose to install only NbClassic via `pip install nbclassic`, +the classic Notebook UI will be presented at the `/tree` path. As the +other frontends are not installed, attempting to access the other paths +will return errors. Note that NbClassic being a Jupyter Server extension, +indicated Jupyter Server will be available. This provides an additional +way to view the NbClassic frontend. You would be able to manually +enable the extension when running an instance of Jupyter Server, +`> jupyter server --ServerApp.jpserver_extensions="nbclassic=True"`, +which will provide the NbClassic frontend at `/tree` path when visited. diff --git a/src/docs/source/migrating/server-extensions.md b/src/docs/source/migrating/server-extensions.md new file mode 100644 index 000000000..cf2a86535 --- /dev/null +++ b/src/docs/source/migrating/server-extensions.md @@ -0,0 +1,13 @@ +# Server Extensions in Notebook 7 + +Notebook 7 is now based on Jupyter Server, which is a new server application that allows to run multiple Jupyter applications (e.g. Notebook, JupyterLab, NBClassic, etc.) on the same server. + +This means that Notebook 7 is able to reuse many of the existing server extensions from the Jupyter ecosystem as is. + +## Migration from the Notebook Server + +The Jupyter Server documentation provides a [guide for migrating from the classic notebook server to Jupyter Server](https://jupyter-server.readthedocs.io/en/latest/operators/migrate-from-nbserver.html) + +## Authoring Server Extensions + +The Jupyter Server documentation provides a [guide for authoring server extensions](https://jupyter-server.readthedocs.io/en/latest/developers/extensions.html) diff --git a/src/docs/source/migrating/server-imports.md b/src/docs/source/migrating/server-imports.md new file mode 100644 index 000000000..c00f80820 --- /dev/null +++ b/src/docs/source/migrating/server-imports.md @@ -0,0 +1,33 @@ +# Server Imports in Notebook 7 + +Notebook 7 is now based on Jupyter Server, which lets users run multiple Jupyter frontends (e.g. Notebook, JupyterLab, NBClassic, etc.) on the same server. + +Prior to Notebook 7, the Classic Notebook server included the server modules in the `notebook` package. This means it was possible to import the server modules from the `notebook` package, for example: + +```python +from notebook.auth import passwd +passwd("foo") +``` + +Or: + +```python +from notebook import notebookapp +notebookapp.list_running_servers() +``` + +In Notebook 7, these server modules are now exposed by the `jupyter_server` package. The code snippets above should be updated to: + +```python +from jupyter_server.auth import passwd +passwd("foo") +``` + +And: + +```python +from jupyter_server import serverapp +serverapp.list_running_servers() +``` + +These are just examples, so you may have to adjust your use of `notebook` imports based on the specific server modules you were using. diff --git a/src/docs/source/notebook.md b/src/docs/source/notebook.md new file mode 100644 index 000000000..5b8eb30dd --- /dev/null +++ b/src/docs/source/notebook.md @@ -0,0 +1,408 @@ +(htmlnotebook)= + +# The Jupyter Notebook + +## Introduction + +**Jupyter Notebook** is a notebook authoring application, under the [Project +Jupyter](https://docs.jupyter.org/en/latest/) umbrella. Built on the power of +the [computational notebook format](https://docs.jupyter.org/en/latest/#what-is-a-notebook), +**Jupyter Notebook** offers fast, interactive new ways to prototype and explain +your code, explore and visualize your data, and share your ideas with others. + +Notebooks extend the console-based approach to interactive computing in a +qualitatively new direction, providing a web-based application suitable for +capturing the whole computation process: developing, documenting, and executing +code, as well as communicating the results. The Jupyter notebook combines two +components: + +**A web application:** A browser-based editing program for interactive authoring +of computational notebooks which provides a fast interactive environment for prototyping and +explaining code, exploring and visualizing data, and sharing ideas with others + +**Computational Notebook documents**: A shareable document that combines computer +code, plain language descriptions, data, rich visualizations like 3D models, charts, +mathematics, graphs and figures, and interactive controls + +```{seealso} +See the {ref}`installation guide ` on how to install the +notebook and its dependencies. +``` + +### Main features of the web application + +- In-browser editing for code, with automatic syntax highlighting, + indentation, and tab completion/introspection. +- The ability to execute code from the browser, with the results of + computations attached to the code which generated them. +- Displaying the result of computation using rich media representations, such + as HTML, LaTeX, PNG, SVG, etc. For example, publication-quality figures + rendered by the [matplotlib] library, can be included inline. +- In-browser editing for rich text using the [Markdown] markup language, which + can provide commentary for the code, is not limited to plain text. +- The ability to easily include mathematical notation within markdown cells + using LaTeX, and rendered natively by [MathJax]. + +### Notebook documents + +Notebook documents contain the inputs and outputs of an interactive session as +well as additional text that accompanies the code but is not meant for +execution. In this way, notebook files can serve as a complete computational +record of a session, interleaving executable code with explanatory text, +mathematics, and rich representations of resulting objects. These documents +are internally [JSON] files and are saved with the `.ipynb` extension. Since +JSON is a plain text format, they can be version-controlled and shared with +colleagues. + +Notebooks may be exported to a range of static formats, including HTML (for +example, for blog posts), reStructuredText, LaTeX, PDF, and slide shows, via +the [nbconvert] command. + +Furthermore, any `.ipynb` notebook document available from a public +URL can be shared via the Jupyter Notebook Viewer \. +This service loads the notebook document from the URL and renders it as a +static web page. The results may thus be shared with a colleague, or as a +public blog post, without other users needing to install the Jupyter notebook +themselves. In effect, nbviewer is simply [nbconvert] as +a web service, so you can do your own static conversions with nbconvert, +without relying on nbviewer. + +```{seealso} +{ref}`Details on the notebook JSON file format ` +``` + +### Notebooks and privacy + +Because you use Jupyter in a web browser, some people are understandably +concerned about using it with sensitive data. +However, if you followed the standard +[install instructions](https://jupyter.readthedocs.io/en/latest/install.html), +Jupyter is actually running on your own computer. +If the URL in the address bar starts with `http://localhost:` or +`http://127.0.0.1:`, it's your computer acting as the server. +Jupyter doesn't send your data anywhere else鈥攁nd as it's open source, +other people can check that we're being honest about this. + +You can also use Jupyter remotely: +your company or university might run the server for you, for instance. +If you want to work with sensitive data in those cases, +talk to your IT or data protection staff about it. + +We aim to ensure that other pages in your browser or other users on the same +computer can't access your notebook server. See the [security documentation](https://jupyter-server.readthedocs.io/en/stable/operators/security.html) for +more about this. + +## Starting the notebook server + +You can start running a notebook server from the command line using the +following command: + +``` +jupyter notebook +``` + +This will print some information about the notebook server in your console, +and open a web browser to the URL of the web application (by default, +`http://127.0.0.1:8888`). + +The landing page of the Jupyter notebook web application, the **dashboard**, +shows the notebooks currently available in the notebook directory (by default, +the directory from which the notebook server was started). + +You can create new notebooks from the dashboard with the `New Notebook` +button, or open existing ones by clicking on their name. You can also drag +and drop `.ipynb` notebooks and standard `.py` Python source code files +into the notebook list area. + +When starting a notebook server from the command line, you can also open a +particular notebook directly, bypassing the dashboard, with `jupyter notebook my_notebook.ipynb`. The `.ipynb` extension is assumed if no extension is +given. + +When you are inside an open notebook, the `File | Open...` menu option will +open the dashboard in a new browser tab, to allow you to open another notebook +from the notebook directory or to create a new notebook. + +```{note} +You can start more than one notebook server at the same time, if you want +to work on notebooks in different directories. By default the first +notebook server starts on port 8888, and later notebook servers search for +ports near that one. You can also manually specify the port with the +`--port` option. +``` + +### Creating a new notebook document + +A new notebook may be created at any time, either from the dashboard, or using +the {menuselection}`File --> New` menu option from within an active notebook. +The new notebook is created within the same directory and will open in a new +browser tab. It will also be reflected as a new entry in the notebook list on +the dashboard. + +![a screencast showing how to create new notebooks from the user interface](https://user-images.githubusercontent.com/591645/229563554-2776b489-a831-44a0-a7a2-2f211e38b78b.gif) + +### Opening notebooks + +An open notebook has **exactly one** interactive session connected to a +kernel, which will execute code sent by the user +and communicate back results. This kernel remains active if the web browser +window is closed, and reopening the same notebook from the dashboard will +reconnect the web application to the same kernel. In the dashboard, notebooks +with an active kernel have a `Shutdown` button next to them, whereas +notebooks without an active kernel have a `Delete` button in its place. + +Other clients may connect to the same kernel. +When each kernel is started, the notebook server prints to the terminal a +message like this: + +``` +[JupyterNotebookApp] Kernel started: 87f7d2c0-13e3-43df-8bb8-1bd37aaf3373 +``` + +This long string is the kernel's ID which is sufficient for getting the +information necessary to connect to the kernel. If the notebook uses the IPython +kernel, you can also see this +connection data by running the `%connect_info` {ref}`magic `, which will print the same ID information along with other +details. + +You can then, for example, manually start a Qt console connected to the _same_ +kernel from the command line, by passing a portion of the ID: + +``` +$ jupyter qtconsole --existing 87f7d2c0 +``` + +Without an ID, `--existing` will connect to the most recently +started kernel. + +With the IPython kernel, you can also run the `%qtconsole` +{ref}`magic ` in the notebook to open a Qt console connected +to the same kernel. + +```{seealso} +{ref}`ipythonzmq` +``` + +## Notebook user interface + +When you create a new notebook document, you will be presented with the +**notebook name**, a **menu bar**, a **toolbar** and an empty **code cell**. + +![a screenshot showing a blank notebook](https://user-images.githubusercontent.com/591645/229563988-8e3a4d04-6f31-4411-9a6b-9b9b045bc55e.png) + +**Notebook name**: The name displayed at the top of the page, +next to the Jupyter logo, reflects the name of the `.ipynb` file. +Clicking on the notebook name brings up a dialog which allows you to rename it. +Thus, renaming a notebook +from "Untitled0" to "My first notebook" in the browser, renames the +`Untitled0.ipynb` file to `My first notebook.ipynb`. + +**Menu bar**: The menu bar presents different options that may be used to +manipulate the way the notebook functions. + +**Toolbar**: The tool bar gives a quick way of performing the most-used +operations within the notebook, by clicking on an icon. + +**Code cell**: the default type of cell; read on for an explanation of cells. + +## Structure of a notebook document + +The notebook consists of a sequence of cells. A cell is a multiline text input +field, and its contents can be executed by using {kbd}`Shift-Enter`, or by +clicking either the "Play" button the toolbar, or {guilabel}`Cell`, {guilabel}`Run` in the menu bar. +The execution behavior of a cell is determined by the cell's type. There are three +types of cells: **code cells**, **markdown cells**, and **raw cells**. Every +cell starts off being a **code cell**, but its type can be changed by using a +drop-down on the toolbar (which will be "Code", initially), or via +{ref}`keyboard shortcuts `. + +For more information on the different things you can do in a notebook, +see the [collection of examples](https://nbviewer.jupyter.org/github/jupyter/notebook/tree/main/docs/source/examples/Notebook/). + +### Code cells + +A _code cell_ allows you to edit and write new code, with full syntax +highlighting and tab completion. The programming language you use depends +on the _kernel_, and the default kernel (IPython) runs Python code. + +When a code cell is executed, code that it contains is sent to the kernel +associated with the notebook. The results that are returned from this +computation are then displayed in the notebook as the cell's _output_. The +output is not limited to text, with many other possible forms of output are +also possible, including `matplotlib` figures and HTML tables (as used, for +example, in the `pandas` data analysis package). This is known as IPython's +_rich display_ capability. + +```{seealso} +[Rich Output] example notebook +``` + +### Markdown cells + +You can document the computational process in a literate way, alternating +descriptive text with code, using _rich text_. In IPython this is accomplished +by marking up text with the Markdown language. The corresponding cells are +called _Markdown cells_. The Markdown language provides a simple way to +perform this text markup, that is, to specify which parts of the text should +be emphasized (italics), bold, form lists, etc. + +If you want to provide structure for your document, you can use markdown +headings. Markdown headings consist of 1 to 6 hash # signs `#` followed by a +space and the title of your section. The markdown heading will be converted +to a clickable link for a section of the notebook. It is also used as a hint +when exporting to other document formats, like PDF. + +When a Markdown cell is executed, the Markdown code is converted into +the corresponding formatted rich text. Markdown allows arbitrary HTML code for +formatting. + +Within Markdown cells, you can also include _mathematics_ in a straightforward +way, using standard LaTeX notation: `$...$` for inline mathematics and +`$$...$$` for displayed mathematics. When the Markdown cell is executed, +the LaTeX portions are automatically rendered in the HTML output as equations +with high quality typography. This is made possible by [MathJax], which +supports a [large subset](https://docs.mathjax.org/en/latest/input/tex/index.html) of LaTeX functionality + +Standard mathematics environments defined by LaTeX and AMS-LaTeX (the +`amsmath` package) also work, such as +`\begin{equation}...\end{equation}`, and `\begin{align}...\end{align}`. +New LaTeX macros may be defined using standard methods, +such as `\newcommand`, by placing them anywhere _between math delimiters_ in +a Markdown cell. These definitions are then available throughout the rest of +the IPython session. + +```{seealso} +[Working with Markdown Cells] example notebook +``` + +### Raw cells + +_Raw_ cells provide a place in which you can write _output_ directly. +Raw cells are not evaluated by the notebook. +When passed through [nbconvert], raw cells arrive in the +destination format unmodified. For example, you can type full LaTeX +into a raw cell, which will only be rendered by LaTeX after conversion by +nbconvert. + +## Basic workflow + +The normal workflow in a notebook is, then, quite similar to a standard +IPython session, with the difference that you can edit cells in-place multiple +times until you obtain the desired results, rather than having to +rerun separate scripts with the `%run` magic command. + +Typically, you will work on a computational problem in pieces, organizing +related ideas into cells and moving forward once previous parts work +correctly. This is much more convenient for interactive exploration than +breaking up a computation into scripts that must be executed together, as was +previously necessary, especially if parts of them take a long time to run. + +To interrupt a calculation which is taking too long, use the {guilabel}`Kernel`, +{guilabel}`Interrupt` menu option, or the {kbd}`i,i` keyboard shortcut. +Similarly, to restart the whole computational process, +use the {guilabel}`Kernel`, {guilabel}`Restart` menu option or {kbd}`0,0` +shortcut. + +A notebook may be downloaded as a `.ipynb` file or converted to a number of +other formats using the menu option {guilabel}`File`, {guilabel}`Download as`. + +```{seealso} +[Running Code in the Jupyter Notebook] example notebook + +[Notebook Basics] example notebook +``` + +(keyboard-shortcuts)= + +### Keyboard shortcuts + +All actions in the notebook can be performed with the mouse, but keyboard +shortcuts are also available for the most common ones. The essential shortcuts +to remember are the following: + +- {kbd}`Shift-Enter`: run cell + : Execute the current cell, show any output, and jump to the next cell below. + If {kbd}`Shift-Enter` is invoked on the last cell, it makes a new cell below. + This is equivalent to clicking the {guilabel}`Cell`, {guilabel}`Run` menu + item, or the Play button in the toolbar. +- {kbd}`Esc`: Command mode + : In command mode, you can navigate around the notebook using keyboard shortcuts. +- {kbd}`Enter`: Edit mode + : In edit mode, you can edit text in cells. + +For the full list of available shortcuts, click {guilabel}`Help`, +{guilabel}`Keyboard Shortcuts` in the notebook menus. + +## Searching + +Jupyter Notebook has an advanced built-in search plugin for finding text within a +notebook or other document, which uses the {kbd}`Ctrl-F` ({kbd}`Cmd+F` for macOS) shortcut by default. + +Your browser's `find` function will give unexpected results because it doesn't have +access to the full content of a document (by default), but you can still use your browser find +function from the browser menu if you want, or you can disable the built-in search +shortcut using the Advanced Settings Editor. + +Alternatively, you can disable windowed notebook rendering to expose the full +document content to the browser at the expense of performance. + +## Plotting + +One major feature of the Jupyter notebook is the ability to display plots that +are the output of running code cells. The IPython kernel is designed to work +seamlessly with the [matplotlib] plotting library to provide this functionality. +Specific plotting library integration is a feature of the kernel. + +## Installing kernels + +For information on how to install a Python kernel, refer to the +[IPython install page](https://ipython.org/install). + +The Jupyter wiki has a long list of [Kernels for other languages](https://github.com/jupyter/jupyter/wiki/Jupyter-kernels). +They usually come with instructions on how to make the kernel available +in the notebook. + +(signing-notebooks)= + +## Trusting Notebooks + +To prevent untrusted code from executing on users' behalf when notebooks open, +we store a signature of each trusted notebook. +The notebook server verifies this signature when a notebook is opened. +If no matching signature is found, +Javascript and HTML output will not be displayed +until they are regenerated by re-executing the cells. + +Any notebook that you have fully executed yourself will be +considered trusted, and its HTML and Javascript output will be displayed on +load. + +If you need to see HTML or Javascript output without re-executing, +and you are sure the notebook is not malicious, you can tell Jupyter to trust it +at the command-line with: + +``` +$ jupyter trust mynotebook.ipynb +``` + +See the [security documentation](https://jupyter-server.readthedocs.io/en/stable/operators/security.html) for more details about the trust mechanism. + +## Browser Compatibility + +The Jupyter Notebook aims to support the latest versions of these browsers: + +- Chrome +- Safari +- Firefox + +Up to date versions of Opera and Edge may also work, but if they don't, please +use one of the supported browsers. + +Using Safari with HTTPS and an untrusted certificate is known to not work +(websockets will fail). + +```{eval-rst} +.. include:: links.txt +``` + +[json]: https://en.wikipedia.org/wiki/JSON +[mathjax]: https://www.mathjax.org/ diff --git a/src/docs/source/notebook_7_features.md b/src/docs/source/notebook_7_features.md new file mode 100644 index 000000000..427a5a22e --- /dev/null +++ b/src/docs/source/notebook_7_features.md @@ -0,0 +1,134 @@ +# New features in Notebook 7 + +This document describes the new features in Notebook 7 as originally mentioned in the related Jupyter Enhancement Proposal [JEP 79][jep 79]. + +```{contents} Table of Contents +:depth: 3 +:local: +``` + +## Debugger + +Notebook 7 includes a new debugger that allows you to step through your code cell by cell. You can also set breakpoints and inspect variables. + +![a screenshot of the debugger](https://user-images.githubusercontent.com/591645/195543524-e16647a1-a4e0-4832-929d-73d5a77ef001.png) + +## Real Time collaboration + +Notebook 7 allows for using the real time collaboration extension so you can share your notebook with other users and edit it in real time. + +The Real Time Collaboration feature is the same as in JupyterLab and is available as a JupyterLab extension. It is not enabled by default, but you can install with `pip`: + +```bash +pip install jupyter-collaboration +``` + +or with `conda`: + +```bash +conda install -c conda-forge jupyter-collaboration +``` + +After installing the extension, restart the Jupyter Server so the extension can be loaded. + +```{note} +It is possible for two users to work on the same notebook using Notebook 7 or JupyterLab. +``` + +![a screencast showing how users can collaborate on the same document with both Notebook 7 and JupyterLab](https://user-images.githubusercontent.com/591645/229854102-6eed73f4-587f-406e-8ed1-347b788da9ee.gif) + +## Table of Contents + +Notebook 7 includes a new table of contents extension that allows you to navigate through your notebook using a sidebar. The Table of Contents is built-in and enabled by default, just like in JupyterLab. + +![a screenshot of the table of contents](https://user-images.githubusercontent.com/591645/195544813-22e7dec9-846f-4aaa-913a-36a9ed908036.png) + +## Theming and Dark Mode + +A Dark Theme is now available in the Jupyter Notebook by default. You can also install other themes as JupyterLab extensions. + +![a screenshot of the dark theme](https://user-images.githubusercontent.com/591645/229732821-3ab15024-e6d7-414d-94ca-246619da4b67.png) + +You can also install many other JupyterLab themes. For example to install the [JupyterLab Night](https://github.com/martinRenou/jupyterlab-night) theme: + +```shell +pip install jupyterlab-night +``` + +Then refresh the page and select the new theme in the settings: + +![a screenshot of a custom theme](https://user-images.githubusercontent.com/591645/229733418-db0898b3-7e8c-4db5-98d6-2e9f813ab9e9.png) + +## Internationalization + +Notebook 7 now provides the ability to set the display language of the user interface. + +Users will need to install the language pack as a separate Python package. Language packs are grouped in the [language packs repository on GitHub](https://github.com/jupyterlab/language-packs/), and can be installed with `pip`. For example, it is possible to install the language pack for French (France) using the following command: + +```shell +pip install jupyterlab-language-pack-fr-FR +``` + +After installing the language pack, reload the page and the new language should be available in the settings. + +![a screencast showing how to switch the display language in Notebook 7](https://user-images.githubusercontent.com/591645/229734057-e08a2020-58c1-4aa5-b30e-ebb83fcde12c.gif) + +```{note} +Notebook 7 and JupyterLab share the same language packs, so it is possible to use the same language pack in both applications. +``` + +## Accessibility Improvements + +The text editor underlying the Jupyter Notebook (CodeMirror 5) had major accessibility issues. Fortunately, this accessibility bottleneck has been unblocked as JupyterLab has been upgraded to use CodeMirror 6, a complete rewrite of the text editor with a strong focus on accessibility. Although this upgrade required extensive codebase modifications, the changes is available with JupyterLab 4. By being built on top of JupyterLab, Jupyter Notebook 7 directly benefits from the CodeMirror 6 upgrade. + +## Support for many JupyterLab extensions + +Notebook 7 is based on JupyterLab and therefore supports many of the existing JupyterLab extensions. + +You can install JupyterLab extensions with `pip` or `conda`. For example to install the LSP (Language Server Protocol) extension for enhanced code completion, you can use the following commands: + +```bash +pip install jupyter-lsp +``` + +```bash +conda install -c conda-forge jupyter-lsp +``` + +Popular extensions like `nbgrader` and `RISE` have already been ported to work with Notebook 7. + +### nbgrader + +```{note} +The nbgrader extension is still under active development and a version compatible with Notebook 7 is not yet available on PyPI. +However a version compatible with Notebook 7 will be available before the final release of Notebook 7. +``` + +![a screenshot showing the nbgrader extension in Notebook 7](https://user-images.githubusercontent.com/32258950/196110653-6556c8d7-b169-4586-b1a1-66b3be05c790.png) + +![a second screenshot showing the nbgrader extension in Notebook 7](https://user-images.githubusercontent.com/32258950/196110825-7e3b9237-1064-42be-a629-15a5510a3aee.png) + +### RISE + +The RISE extension is another popular JupyterLab extension that has been ported to work with Notebook 7. It allows you to turn your Jupyter Notebooks into a slideshow. See the [installation instructions](https://github.com/jupyterlab-contrib/rise#install). + +## A document-centric user experience + +Despite all the new features and as stated in [JEP 79][jep 79], Notebook 7 keeps the document-centric user experience of the Classic Notebook: + +> The Jupyter Notebook application offers a document-centric user experience. That is, in the Notebook application, the landing page that contains a file manager, running tools tab, and a few optional extras, is a launching point into opening standalone, individual documents. This document-centric experience is important for many users, and that is the first key point this proposal aims to preserve. Notebook v7 will be based on a different JavaScript implementation than v6, but it will preserve the document-centric experience, where each individual notebook opens in a separate browser tab and the visible tools and menus are focused on the open document. + +[jep 79]: https://jupyter.org/enhancement-proposals/79-notebook-v7/notebook-v7.html + +## Compact View on Mobile Devices + +Notebook 7 automatically switches to a more compact layout on mobile devices, making it convenient to run code on the go. + +![a screenshot of the compact view on mobile devices](https://user-images.githubusercontent.com/591645/101995448-2793f380-3cca-11eb-8971-067dd068ccbe.gif) + +## References + +This was just a quick overview of the new features in Notebook 7. For more details, you can check out the following resources: + +- The [JupyterLab Documentation](https://jupyterlab.readthedocs.io/en/latest/) is a great resource to learn more about JupyterLab and the extensions available. Since Notebook 7 is based on JupyterLab, many of the features and extensions available for JupyterLab are also available for Notebook 7. +- [Migration Guide](./migrate_to_notebook7.md) for Notebook 7, which explains how to migrate from the Classic Notebook to Notebook 7. diff --git a/src/docs/source/spelling_wordlist.txt b/src/docs/source/spelling_wordlist.txt new file mode 100644 index 000000000..e9db8e9cc --- /dev/null +++ b/src/docs/source/spelling_wordlist.txt @@ -0,0 +1,74 @@ +AMS +API +api +args +async +auth +autodetect +Broull贸n +changelog +config +coroutines +css +CSS +dockerfile +Dockerfile +drop-down +filenames +filesystem +front-end +front end +frontend +github +GitHub +IFrame +iframe +ip +IP +IPython +javascript +JavaScript +jinja +jinja2 +Jinja +js +jupyter +Jupyter +Kamens +keepalive +LaTeX +localhost +login +logout +mathjax +MathJax +matplotlib +menubar +metadata +minify +minified +multiline +natively +nbviewer +pre +prerelease +Quantopian +repo +reStructuredText +subclasses +subdirectory +subprocesses +startup +symlink +uncomment +unencrypted +unicode +Unicode +untracked +untrusted +URL +url +username +webserver +websockets +workflow diff --git a/src/docs/source/template.tpl b/src/docs/source/template.tpl new file mode 100644 index 000000000..0c49c448f --- /dev/null +++ b/src/docs/source/template.tpl @@ -0,0 +1,20 @@ +{%- extends 'rst.tpl' -%} + +{% macro notebooklink() -%} + +`View the original notebook on nbviewer `__ + + +{%- endmacro %} + +{%- block header %} +{{ notebooklink() }} +{% endblock header -%} + +{%- block footer %} +{{ notebooklink() }} +{% endblock footer -%} + +{% block markdowncell scoped %} +{{ cell.source | markdown2rst | replace(".ipynb>", ".html>") }} +{% endblock markdowncell %} diff --git a/src/docs/source/troubleshooting.md b/src/docs/source/troubleshooting.md new file mode 100644 index 000000000..40e25a993 --- /dev/null +++ b/src/docs/source/troubleshooting.md @@ -0,0 +1,243 @@ +# What to do when things go wrong + +First, have a look at the common problems listed below. If you can figure it out +from these notes, it will be quicker than asking for help. + +Check that you have the latest version of any packages that look relevant. +Unfortunately it's not always easy to figure out what packages are relevant, +but if there was a bug that's already been fixed, +it's easy to upgrade and get on with what you wanted to do. + +## Jupyter fails to start + +- Have you [installed it](https://jupyter.org/install.html)? ;-) +- If you're using a menu shortcut or Anaconda launcher to start it, try + opening a terminal or command prompt and running the command `jupyter notebook`. +- If it can't find `jupyter`, + you may need to configure your `PATH` environment variable. + If you don't know what that means, and don't want to find out, + just (re)install Anaconda with the default settings, + and it should set up PATH correctly. +- If Jupyter gives an error that it can't find `notebook`, + check with pip or conda that the `notebook` package is installed. +- Try running `jupyter-notebook` (with a hyphen). This should normally be the + same as `jupyter notebook` (with a space), but if there's any difference, + the version with the hyphen is the 'real' launcher, and the other one wraps + that. + +## Jupyter doesn't load or doesn't work in the browser + +- Try in another browser (e.g. if you normally use Firefox, try with Chrome). + This helps pin down where the problem is. +- Try disabling any browser extensions and/or any Jupyter extensions you have + installed. +- Some internet security software can interfere with Jupyter. + If you have security software, try turning it off temporarily, + and look in the settings for a more long-term solution. +- In the address bar, try changing between `localhost` and `127.0.0.1`. + They should be the same, but in some cases it makes a difference. + +## Jupyter can't start a kernel + +Files called _kernel specs_ tell Jupyter how to start different kinds of kernels. +To see where these are on your system, run `jupyter kernelspec list`: + +``` +$ jupyter kernelspec list +Available kernels: + python3 /home/takluyver/.local/lib/python3.6/site-packages/ipykernel/resources + bash /home/takluyver/.local/share/jupyter/kernels/bash + ir /home/takluyver/.local/share/jupyter/kernels/ir +``` + +There's a special fallback for the Python kernel: +if it doesn't find a real kernelspec, but it can import the `ipykernel` package, +it provides a kernel which will run in the same Python environment as the notebook server. +A path ending in `ipykernel/resources`, like in the example above, +is this default kernel. +The default often does what you want, +so if the `python3` kernelspec points somewhere else +and you can't start a Python kernel, +try deleting or renaming that kernelspec folder to expose the default. + +If your problem is with another kernel, not the Python one we maintain, +you may need to look for support about that kernel. + +## Python Environments + +Multiple python environments, whether based on Anaconda or Python Virtual environments, +are often the source of reported issues. In many cases, these issues stem from the +Notebook server running in one environment, while the kernel and/or its resources, +derive from another environment. Indicators of this scenario include: + +- `import` statements within code cells producing `ImportError` or `ModuleNotFound` exceptions. +- General kernel startup failures exhibited by nothing happening when attempting + to execute a cell. + +In these situations, take a close look at your environment structure and ensure all +packages required by your notebook's code are installed in the correct environment. +If you need to run the kernel from different environments than your Notebook +server, check out [IPython's documentation](https://ipython.readthedocs.io/en/stable/install/kernel_install.html#kernels-for-different-environments) +for using kernels from different environments as this is the recommended approach. +Anaconda's [nb_conda_kernels](https://github.com/Anaconda-Platform/nb_conda_kernels) +package might also be an option for you in these scenarios. + +Another thing to check is the `kernel.json` file that will be located in the +aforementioned _kernel specs_ directory identified by running `jupyter kernelspec list`. +This file will contain an `argv` stanza that includes the actual command to run +when launching the kernel. Oftentimes, when reinstalling python environments, a previous +`kernel.json` will reference an python executable from an old or non-existent location. +As a result, it's always a good idea when encountering kernel startup issues to validate +the `argv` stanza to ensure all file references exist and are appropriate. + +## Windows Systems + +Although Jupyter Notebook is primarily developed on the various flavors of the Unix +operating system it also supports Microsoft +Windows - which introduces its own set of commonly encountered issues, +particularly in the areas of security, process management and lower-level libraries. + +### pywin32 Issues + +The primary package for interacting with Windows' primitives is `pywin32`. + +- Issues surrounding the creation of the kernel's communication file utilize + `jupyter_core`'s `secure_write()` function. This function ensures a file is + created in which only the owner of the file has access. If libraries like `pywin32` + are not properly installed, issues can arise when it's necessary to use the native + Windows libraries. + + Here's a portion of such a traceback: + + ``` + File "c:\users\jovyan\python\myenv.venv\lib\site-packages\jupyter_core\paths.py", line 424, in secure_write + win32_restrict_file_to_user(fname) + File "c:\users\jovyan\python\myenv.venv\lib\site-packages\jupyter_core\paths.py", line 359, in win32_restrict_file_to_user + import win32api + ImportError: DLL load failed: The specified module could not be found. + ``` + +- As noted earlier, the installation of `pywin32` can be problematic on Windows + configurations. When such an issue occurs, you may need to revisit how the environment + was setup. Pay careful attention to whether you're running the 32 or 64 bit versions + of Windows and be sure to install appropriate packages for that environment. + + Here's a portion of such a traceback: + + ``` + File "C:\Users\jovyan\AppData\Roaming\Python\Python37\site-packages\jupyter_core\paths.py", line 435, in secure_write + win32_restrict_file_to_user(fname) + File "C:\Users\jovyan\AppData\Roaming\Python\Python37\site-packages\jupyter_core\paths.py", line 361, in win32_restrict_file_to_user + import win32api + ImportError: DLL load failed: %1 is not a valid Win32 application + ``` + +#### Resolving pywin32 Issues + +> In this case, your `pywin32` module may not be installed correctly and the following +> should be attempted: +> +> ``` +> pip install --upgrade pywin32 +> ``` +> +> or: +> +> ``` +> conda install --force-reinstall pywin32 +> ``` +> +> followed by: +> +> ``` +> python.exe Scripts/pywin32_postinstall.py -install +> ``` +> +> where `Scripts` is located in the active Python's installation location. + +- Another common failure specific to Windows environments is the location of various + python commands. On `*nix` systems, these typically reside in the `bin` directory + of the active Python environment. However, on Windows, these tend to reside in the + `Scripts` folder - which is a sibling to `bin`. As a result, when encountering + kernel startup issues, again, check the `argv` stanza and verify it's pointing to a + valid file. You may find that it's pointing in `bin` when `Scripts` is correct, or + the referenced file does not include its `.exe` extension - typically resulting in + `FileNotFoundError` exceptions. + +## This Worked An Hour Ago + +The Jupyter stack is very complex and rightfully so, there's a lot going on. On occasion +you might find the system working perfectly well, then, suddenly, you can't get past a +certain cell due to `import` failures. In these situations, it's best to ask yourself +if any new python files were added to your notebook development area. + +These issues are usually evident by carefully analyzing the traceback produced in +the notebook error or the Notebook server's command window. In these cases, you'll typically +find the Python kernel code (from `IPython` and `ipykernel`) performing _its_ imports +and notice a file from your Notebook development error included in that traceback followed +by an `AttributeError`: + +``` +File "C:\Users\jovyan\anaconda3\lib\site-packages\ipykernel\connect.py", line 13, in +from IPython.core.profiledir import ProfileDir +File "C:\Users\jovyan\anaconda3\lib\site-packages\IPython_init.py", line 55, in +from .core.application import Application +... +File "C:\Users\jovyan\anaconda3\lib\site-packages\ipython_genutils\path.py", line 13, in +import random +File "C:\Users\jovyan\Desktop\Notebooks\random.py", line 4, in +rand_set = random.sample(english_words_lower_set, 12) +AttributeError: module 'random' has no attribute 'sample' +``` + +What has happened is that you have named a file that conflicts with an installed package +that is used by the kernel software and now introduces a conflict preventing the +kernel's startup. + +**Resolution**: You'll need to rename your file. A best practice would be to prefix or +_namespace_ your files so as not to conflict with any python package. + +## Asking for help + +As with any problem, try searching to see if someone has already found an answer. +If you can't find an existing answer, you can ask questions at: + +- The [Jupyter Discourse Forum](https://discourse.jupyter.org/) + +- The [jupyter-notebook tag on Stackoverflow](https://stackoverflow.com/questions/tagged/jupyter-notebook) + +- Peruse the [jupyter/help repository on Github](https://github.com/jupyter/help) (read-only) + +- Or in an issue on another repository, if it's clear which component is + responsible. Typical repositories include: + + > - [jupyter_core](https://github.com/jupyter/jupyter_core) - `secure_write()` + > and file path issues + > - [jupyter_client](https://github.com/jupyter/jupyter_core) - kernel management + > issues found in Notebook server's command window. + > - [IPython](https://github.com/ipython/ipython) and + > [ipykernel](https://github.com/ipython/ipykernel) - kernel runtime issues + > typically found in Notebook server's command window and/or Notebook cell execution. + +### Gathering Information + +Should you find that your problem warrants that an issue be opened in +[notebook](https://github.com/jupyter/notebook) please don't forget to provide details +like the following: + +- What error messages do you see (within your notebook and, more importantly, in + the Notebook server's command window)? +- What platform are you on? +- How did you install Jupyter? +- What have you tried already? + +The `jupyter troubleshoot` command collects a lot of information +about your installation, which can also be useful. + +When providing textual information, it's most helpful if you can _scrape_ the contents +into the issue rather than providing a screenshot. This enables others to select +pieces of that content so they can search more efficiently and try to help. + +Remember that it's not anyone's job to help you. +We want Jupyter to work for you, +but we can't always help everyone individually. diff --git a/src/docs/source/ui_components.md b/src/docs/source/ui_components.md new file mode 100644 index 000000000..12ebd4f9e --- /dev/null +++ b/src/docs/source/ui_components.md @@ -0,0 +1,44 @@ +# User interface components + +When opening bug reports or sending emails to the Jupyter mailing list, it is +useful to know the names of different UI components so that other developers +and users have an easier time helping you diagnose your problems. This section +will familiarize you with the names of UI elements within the Notebook and the +different Notebook modes. + +## Notebook Dashboard + +When you launch `jupyter notebook` the first page that you encounter is the +Notebook Dashboard. + +![a screenshot showing the jupyter notebook dashboard page](https://user-images.githubusercontent.com/591645/229564680-3e9a9031-e925-4008-833c-a478b3e96c97.png) + +## Notebook Editor + +Once you've selected a Notebook to edit, the Notebook will open in the Notebook +Editor. + +![a screenshot showing the default notebook interface](https://user-images.githubusercontent.com/591645/229564924-7a76bed6-924a-45ff-9ac7-6ec6d99930b7.png) + +## Interactive User Interface Tour of the Notebook + +If you would like to learn more about the specific elements within the Notebook +Editor, you can go through the user interface tour by selecting _Help_ in the +menubar then selecting _User Interface Tour_. + +### Edit Mode and Notebook Editor + +When a cell is in edit mode, the Cell Mode Indicator will change to reflect +the cell's state. This state is indicated by a small pencil icon on the +top right of the interface. When the cell is in command mode, there is no +icon in that location. + +![a screenshot showing a notebook with some cells in edit mode](https://user-images.githubusercontent.com/591645/229565074-34e61454-3329-4612-b483-7a52663c794b.png) + +## File Editor + +Now let's say that you've chosen to open a Markdown file instead of a Notebook +file whilst in the Notebook Dashboard. If so, the file will be opened in the +File Editor. + +![a screenshot showing the file editor](https://user-images.githubusercontent.com/591645/229565182-254eef80-edfb-4e2c-b454-1c978fd89f13.png) diff --git a/src/docs/source/user-documentation.md b/src/docs/source/user-documentation.md new file mode 100644 index 000000000..cdb7f562e --- /dev/null +++ b/src/docs/source/user-documentation.md @@ -0,0 +1,17 @@ +# Documentation + +Use this page to navigate to different parts of the user documentation. + +```{toctree} +:maxdepth: 2 + +notebook +ui_components +notebook_7_features +examples/Notebook/examples_index.rst +custom_css +configuring/plugins +configuring/interface_customization +troubleshooting +changelog +``` diff --git a/src/jupyter-config/jupyter_server_config.d/notebook.json b/src/jupyter-config/jupyter_server_config.d/notebook.json new file mode 100644 index 000000000..09113911a --- /dev/null +++ b/src/jupyter-config/jupyter_server_config.d/notebook.json @@ -0,0 +1,7 @@ +{ + "ServerApp": { + "jpserver_extensions": { + "notebook": true + } + } +} diff --git a/src/jupyter-notebook.desktop b/src/jupyter-notebook.desktop new file mode 100644 index 000000000..095d5ac65 --- /dev/null +++ b/src/jupyter-notebook.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=Jupyter Notebook +Comment=Run Jupyter Notebook +Exec=jupyter-notebook %f +Terminal=true +Type=Application +Icon=notebook +StartupNotify=true +MimeType=application/x-ipynb+json; +Categories=Development;Education; +Keywords=python; diff --git a/src/jupyter.svg b/src/jupyter.svg new file mode 100644 index 000000000..42918a707 --- /dev/null +++ b/src/jupyter.svg @@ -0,0 +1,364 @@ + + + + + + image/svg+xml + + Group.svg + + + + + Group.svg + Created using Figma 0.90 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/jupyter_config.json b/src/jupyter_config.json new file mode 100644 index 000000000..4d392a974 --- /dev/null +++ b/src/jupyter_config.json @@ -0,0 +1,4 @@ +{ + "LabApp": { "expose_app_in_browser": true }, + "JupyterNotebookApp": { "expose_app_in_browser": true } +} diff --git a/src/lerna.json b/src/lerna.json new file mode 100644 index 000000000..610b7981b --- /dev/null +++ b/src/lerna.json @@ -0,0 +1,4 @@ +{ + "$schema": "node_modules/lerna/schemas/lerna-schema.json", + "version": "independent" +} diff --git a/src/notebook.svg b/src/notebook.svg new file mode 100644 index 000000000..52e713c32 --- /dev/null +++ b/src/notebook.svg @@ -0,0 +1,335 @@ + + + + + + image/svg+xml + + logo.svg + + + + logo.svg + Created using Figma 0.90 + + + + + + + + + + + + + + + + + + diff --git a/src/nx.json b/src/nx.json new file mode 100644 index 000000000..f95f2099d --- /dev/null +++ b/src/nx.json @@ -0,0 +1,35 @@ +{ + "$schema": "./node_modules/nx/schemas/nx-schema.json", + "tasksRunnerOptions": { + "default": { + "runner": "nx/tasks-runners/default", + "options": { + "cacheableOperations": [ + "build", + "build:prod", + "build:lib", + "build:labextension:dev", + "build:labextension" + ] + } + } + }, + "namedInputs": { + "default": ["{projectRoot}/**/*"] + }, + "targetDefaults": { + "build:lib": { + "dependsOn": ["^build:lib"], + "inputs": ["default", "^default"], + "outputs": ["{projectRoot}/lib"] + }, + "build": { + "dependsOn": ["^build"], + "inputs": ["default", "^default"] + }, + "build:prod": { + "dependsOn": ["^build:prod"], + "inputs": ["default", "^default"] + } + } +} diff --git a/src/package.json b/src/package.json new file mode 100644 index 000000000..0e06f25ad --- /dev/null +++ b/src/package.json @@ -0,0 +1,70 @@ +{ + "name": "@jupyter-notebook/root", + "version": "0.1.0", + "private": true, + "homepage": "https://github.com/jupyter/notebook", + "bugs": { + "url": "https://github.com/jupyter/notebook/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/jupyter/notebook" + }, + "license": "BSD-3-Clause", + "author": "Project Jupyter", + "workspaces": { + "packages": [ + "app", + "buildutils", + "packages/*" + ] + }, + "scripts": { + "build": "lerna run build", + "build:lib": "lerna run build:lib", + "build:prod": "lerna run build:prod --skip-nx-cache", + "build:test": "lerna run build:test", + "build:utils": "cd buildutils && npm run build", + "clean": "lerna run clean", + "deduplicate": "jlpm dlx yarn-berry-deduplicate -s fewerHighest && jlpm install", + "develop": "jupyter labextension develop . --overwrite && node ./buildutils/lib/develop.js --overwrite", + "eslint": "eslint . --ext .ts,.tsx --fix", + "eslint:check": "eslint . --ext .ts,.tsx", + "eslint:files": "eslint --fix", + "get:lab:version": "node ./buildutils/lib/get-latest-lab-version.js", + "integrity": "node buildutils/lib/ensure-repo.js", + "prettier": "prettier --write \"**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}\"", + "prettier:check": "prettier --list-different \"**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}\"", + "prettier:files": "prettier --write", + "release:bump": "node ./buildutils/lib/release-bump.js", + "release:patch": "node ./buildutils/lib/release-patch.js", + "test": "lerna run test", + "update:dependency": "node ./node_modules/@jupyterlab/buildutils/lib/update-dependency.js --lerna", + "upgrade:lab:dependencies": "node ./buildutils/lib/upgrade-lab-dependencies.js", + "watch": "run-p watch:lib watch:app", + "watch:app": "lerna exec --stream --scope \"@jupyter-notebook/app\" jlpm watch", + "watch:lib": "lerna exec --stream --scope @jupyter-notebook/metapackage jlpm watch" + }, + "resolutions": { + "@types/react": "^18.0.26", + "react": "^18.2.0", + "yjs": "^13.5.40" + }, + "devDependencies": { + "@jupyterlab/buildutils": "~4.6.0-alpha.0", + "@typescript-eslint/eslint-plugin": "^5.55.0", + "@typescript-eslint/parser": "^5.55.0", + "eslint": "^8.36.0", + "eslint-config-prettier": "^8.7.0", + "eslint-plugin-jest": "^27.2.1", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-react": "^7.32.2", + "html-webpack-plugin": "^5.6.3", + "lerna": "^7.1.4", + "npm-run-all": "^4.1.5", + "prettier": "^2.8.5", + "rimraf": "^3.0.2", + "typescript": "~5.5.4" + }, + "nx": {} +} diff --git a/src/pixi.lock b/src/pixi.lock new file mode 100644 index 000000000..270a15338 --- /dev/null +++ b/src/pixi.lock @@ -0,0 +1,3321 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nodejs-22.12.0-hf235a45_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.0.1-pyh145f28c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.2-hf636f53_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - pypi: https://files.pythonhosted.org/packages/8d/3f/95338030883d8c8b91223b4e21744b04d11b161a3ef117295d8241f50ab4/accessible_pygments-0.0.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/46/eb/e7f063ad1fec6b3178a3cd82d1a3c4de82cccf283fc42746168188e1cdd5/anyio-4.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a4/6a/e8a041599e78b6b3752da48000b14c8d1e8a04ded09c88c714ba047f34f5/argon2_cffi-23.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fa/9f/3c3503693386c4b0f245eaf5ca6198e3b28879ca0a40bde6b0e319793453/async_lru-2.0.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fc/30/d4986a882011f9df997a55e6becd864812ccfcd821d64aac8570ee39f719/attrs-25.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/49/6abb616eb3cbab6a7cca303dc02fdf3836de2e0b834bf966a7f5271a34d8/beautifulsoup4-4.13.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/38/fc/bce832fd4fd99766c04d1ee0eead6b0ec6486fb100ae5e74c1d91292b982/certifi-2025.1.31-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/52/ed/b7f4f07de100bdb95c1756d3a4d17b90c1a3c53715c1a476f8738058e0fa/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/78/2b/999b2a1e1ba2206f2d3bca267d68f350beb2b048a41ea827e08ce7260098/cryptography-44.0.2-cp39-abi3-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ec/ed/db4b10ff3b5bb30fe41d9e86444a08bb6448e4d8265e7768450b8408dd36/debugpy-1.8.13-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/89/ec/00d68c4ddfedfe64159999e5f8a98fb8442729a63e2077eb9dcd89623d27/filelock-3.17.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/85/c6/ad910cdb79600af0100b7c4f7093eb4b95a2b44e589e66b6b938b09cc6f9/hatch-1.14.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/08/e7/ae38d7a6dfba0533684e0b2136817d667588ae3ec984c1a4e5df5eb88482/hatchling-1.27.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/87/f5/72347bc88306acb359581ac4d52f23c0ef445b57157adedb9aee0cd689d2/httpcore-1.0.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6e/aa/8caf6a0a3e62863cbb9dab27135660acba46903b703e224f14f447e57934/hyperlink-21.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/78/8c/4bfcab2d8286473b8d83ea742716f4b79290172e75f91142bc1534b05b9a/identify-2.6.8-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/28/39/fda74f8215ef94a812dd780073c61a826a88a01e51f627a3454f7ae6951d/ipython-9.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9f/4f/24b319316142c44283d7540e76c7b5a6dbd5db623abd86bb7b3491c21018/jaraco.functools-4.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b2/a3/e137168c9c44d18eff0376253da9f1e9234d0239e0ee230d2fee6cea8e55/jeepney-0.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/aa/42/797895b952b682c3dafe23b1834507ee7f02f4d6299b65aaa61425763278/json5-0.10.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1c/24/83349ac2189cc2435e84da3f69ba3c97314d3c0622628e55171c6798ed80/jsonschema_specifications-2023.7.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e2/a2/89eeaf0bb954a123a909859fa507fa86f96eb61b62dc30667b60dbd5fdaf/jupyter_server-2.15.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1a/81/d5b27d91a8fbb709b6623806037f6de6b7c2543d7f03543aa5a6de9812e6/jupyterlab-4.5.0rc0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e0/07/a000fe835f76b7e1143242ab1122e6362ef1c03f23f83a045c38859c2ae0/jupyterlab_server-2.28.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d3/32/da7f44bcb1105d3e88a0b74ebdca50c59121d2ddf71c9e34ba47df7f3a56/keyring-25.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/f7/7782a043553ee469c1ff49cfa1cdace2d6bf99a1f333cf38676b3ddf30da/mdit_py_plugins-0.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/12/92/30b4e54c4d7c48c06db61595cffbbf4f19588ea177896f9b78f0fbe021fd/mistune-3.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/23/62/0fe302c6d1be1c777cab0616e6302478251dfbf9055ad426f5d0def75c89/more_itertools-10.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5f/df/76d0321c3797b54b60fef9ec3bd6f4cfd124b9e422182156a1dd418722cf/myst_parser-4.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/49/2d/8c8e635bcc6757573d311bb3c5445426382f280da32b8cd6d82d501ef4a4/nbsphinx-0.9.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/43/b3/df14c580d82b9627d173ceea305ba898dca135feb360b6d84019d0803d3b/pre_commit-4.1.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/c2/ab7d37426c179ceb9aeb109a85cda8948bb269b7561a0be870cc656eefe4/prometheus_client-0.21.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e4/ea/d836f008d33151c7a1f62caf3d8dd782e4d15f6a43897f64480c2b8de2ad/prompt_toolkit-3.0.50-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e2/0d/8ba33fa83a7dcde13eb3c1c2a0c1cc29950a048bfed6d9b0d8b6bd710b4c/pydata_sphinx_theme-0.16.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/54/4c/a741dddab6ad96f257d90cb4d23067ffadac526c9cab3a99ca6ce3c05477/pyenchant-3.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c9/48/15d5f415504572dd4b92b52db5de7a5befc76bb75340ba9f36f71306a66d/pyzmq-26.2.1-cp313-cp313-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/be/8e/56d6f1e2d591f4d6cbcba446cac4a1b0dc4f584537e2071d9bcee8eeab6b/referencing-0.30.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f6/55/b3c18c04a460d951bf8e91f2abf46ce5b6426fb69784166a6a25827cb90a/rpds_py-0.23.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/38/7d7362e031bd6dc121e5081d8cb6aa6f6fedf2b67bf889962134c6da4705/setuptools-75.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/dc/c02e01294f7265e63a7315fe086dd1df7dacb9f840a804da846b96d01b96/snowballstemmer-2.2.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/c2/fe97d779f3ef3b15f05c94a2f1e3d21732574ed441687474db9d342a7315/soupsieve-2.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/26/60/1ddff83a56d33aaf6f10ec8ce84b4c007d9368b21008876fceda7e7381ef/sphinx-8.1.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/70/12/d9b6bf8093906108017f3cdbecae3e2b3b4963c5112b28f0cd482b433182/sphinxcontrib_github_alt-1.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/03/30/05efe7261eac789cf3ba28ef5dfb76d719df30baae6881cb54a6801c0e8f/sphinxcontrib_spelling-8.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c7/18/c86eb8e0202e32dd3df50d43d7ff9854f8e0603945ff398974c1d91ac1ef/tomli_w-1.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/b6/a447b5e4ec71e13871be01ba81f5dfc9d0af7e473da256ff46bc0e24026f/tomlkit-0.13.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/22/55/b78a464de78051a30599ceb6983b01d8f732e6f69bf37b4ed07f642ac0fc/tornado-6.4.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/bf/44195f3d9c3c4fe4cccf1c261c80d50781b9e8a0a6febf084c09c66740ff/trove_classifiers-2025.3.3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0f/b3/ca41df24db5eb99b00d97f89d7674a90cb6b3134c52fb8121b6d8d30f15c/types_python_dateutil-2.9.0.20241206-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/43/99/3ec6335ded5b88c2f7ed25c56ffd952546f7ed007ffb1e1539dc3b57015a/userpath-1.9.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/66/32/ad9944c9716360c82fb62516aca72bdeaedf7991483383f3a06734cb2cf4/uv-0.6.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c2/eb/c6db6e3001d58c6a9e67c74bb7b4206767caa3ccc28c6b9eaf4c23fb4e34/virtualenv-20.29.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fa/18/89ac62eac46b69948bf35fcd90d37103f38722968e2981f752d69081ec4d/zstandard-0.23.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: . + dev: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nodejs-22.12.0-hf235a45_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.0.1-pyh145f28c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.2-hf636f53_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - pypi: https://files.pythonhosted.org/packages/8d/3f/95338030883d8c8b91223b4e21744b04d11b161a3ef117295d8241f50ab4/accessible_pygments-0.0.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/46/eb/e7f063ad1fec6b3178a3cd82d1a3c4de82cccf283fc42746168188e1cdd5/anyio-4.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a4/6a/e8a041599e78b6b3752da48000b14c8d1e8a04ded09c88c714ba047f34f5/argon2_cffi-23.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fa/9f/3c3503693386c4b0f245eaf5ca6198e3b28879ca0a40bde6b0e319793453/async_lru-2.0.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fc/30/d4986a882011f9df997a55e6becd864812ccfcd821d64aac8570ee39f719/attrs-25.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/49/6abb616eb3cbab6a7cca303dc02fdf3836de2e0b834bf966a7f5271a34d8/beautifulsoup4-4.13.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/38/fc/bce832fd4fd99766c04d1ee0eead6b0ec6486fb100ae5e74c1d91292b982/certifi-2025.1.31-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/52/ed/b7f4f07de100bdb95c1756d3a4d17b90c1a3c53715c1a476f8738058e0fa/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/78/2b/999b2a1e1ba2206f2d3bca267d68f350beb2b048a41ea827e08ce7260098/cryptography-44.0.2-cp39-abi3-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ec/ed/db4b10ff3b5bb30fe41d9e86444a08bb6448e4d8265e7768450b8408dd36/debugpy-1.8.13-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/89/ec/00d68c4ddfedfe64159999e5f8a98fb8442729a63e2077eb9dcd89623d27/filelock-3.17.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/85/c6/ad910cdb79600af0100b7c4f7093eb4b95a2b44e589e66b6b938b09cc6f9/hatch-1.14.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/08/e7/ae38d7a6dfba0533684e0b2136817d667588ae3ec984c1a4e5df5eb88482/hatchling-1.27.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/87/f5/72347bc88306acb359581ac4d52f23c0ef445b57157adedb9aee0cd689d2/httpcore-1.0.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6e/aa/8caf6a0a3e62863cbb9dab27135660acba46903b703e224f14f447e57934/hyperlink-21.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/78/8c/4bfcab2d8286473b8d83ea742716f4b79290172e75f91142bc1534b05b9a/identify-2.6.8-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/28/39/fda74f8215ef94a812dd780073c61a826a88a01e51f627a3454f7ae6951d/ipython-9.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9f/4f/24b319316142c44283d7540e76c7b5a6dbd5db623abd86bb7b3491c21018/jaraco.functools-4.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b2/a3/e137168c9c44d18eff0376253da9f1e9234d0239e0ee230d2fee6cea8e55/jeepney-0.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/aa/42/797895b952b682c3dafe23b1834507ee7f02f4d6299b65aaa61425763278/json5-0.10.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1c/24/83349ac2189cc2435e84da3f69ba3c97314d3c0622628e55171c6798ed80/jsonschema_specifications-2023.7.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e2/a2/89eeaf0bb954a123a909859fa507fa86f96eb61b62dc30667b60dbd5fdaf/jupyter_server-2.15.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1a/81/d5b27d91a8fbb709b6623806037f6de6b7c2543d7f03543aa5a6de9812e6/jupyterlab-4.5.0rc0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e0/07/a000fe835f76b7e1143242ab1122e6362ef1c03f23f83a045c38859c2ae0/jupyterlab_server-2.28.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d3/32/da7f44bcb1105d3e88a0b74ebdca50c59121d2ddf71c9e34ba47df7f3a56/keyring-25.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/f7/7782a043553ee469c1ff49cfa1cdace2d6bf99a1f333cf38676b3ddf30da/mdit_py_plugins-0.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/12/92/30b4e54c4d7c48c06db61595cffbbf4f19588ea177896f9b78f0fbe021fd/mistune-3.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/23/62/0fe302c6d1be1c777cab0616e6302478251dfbf9055ad426f5d0def75c89/more_itertools-10.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5f/df/76d0321c3797b54b60fef9ec3bd6f4cfd124b9e422182156a1dd418722cf/myst_parser-4.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/49/2d/8c8e635bcc6757573d311bb3c5445426382f280da32b8cd6d82d501ef4a4/nbsphinx-0.9.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/43/b3/df14c580d82b9627d173ceea305ba898dca135feb360b6d84019d0803d3b/pre_commit-4.1.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/c2/ab7d37426c179ceb9aeb109a85cda8948bb269b7561a0be870cc656eefe4/prometheus_client-0.21.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e4/ea/d836f008d33151c7a1f62caf3d8dd782e4d15f6a43897f64480c2b8de2ad/prompt_toolkit-3.0.50-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e2/0d/8ba33fa83a7dcde13eb3c1c2a0c1cc29950a048bfed6d9b0d8b6bd710b4c/pydata_sphinx_theme-0.16.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/54/4c/a741dddab6ad96f257d90cb4d23067ffadac526c9cab3a99ca6ce3c05477/pyenchant-3.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c9/48/15d5f415504572dd4b92b52db5de7a5befc76bb75340ba9f36f71306a66d/pyzmq-26.2.1-cp313-cp313-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/be/8e/56d6f1e2d591f4d6cbcba446cac4a1b0dc4f584537e2071d9bcee8eeab6b/referencing-0.30.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f6/55/b3c18c04a460d951bf8e91f2abf46ce5b6426fb69784166a6a25827cb90a/rpds_py-0.23.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/38/7d7362e031bd6dc121e5081d8cb6aa6f6fedf2b67bf889962134c6da4705/setuptools-75.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/dc/c02e01294f7265e63a7315fe086dd1df7dacb9f840a804da846b96d01b96/snowballstemmer-2.2.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/c2/fe97d779f3ef3b15f05c94a2f1e3d21732574ed441687474db9d342a7315/soupsieve-2.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/26/60/1ddff83a56d33aaf6f10ec8ce84b4c007d9368b21008876fceda7e7381ef/sphinx-8.1.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/70/12/d9b6bf8093906108017f3cdbecae3e2b3b4963c5112b28f0cd482b433182/sphinxcontrib_github_alt-1.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/03/30/05efe7261eac789cf3ba28ef5dfb76d719df30baae6881cb54a6801c0e8f/sphinxcontrib_spelling-8.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c7/18/c86eb8e0202e32dd3df50d43d7ff9854f8e0603945ff398974c1d91ac1ef/tomli_w-1.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/b6/a447b5e4ec71e13871be01ba81f5dfc9d0af7e473da256ff46bc0e24026f/tomlkit-0.13.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/22/55/b78a464de78051a30599ceb6983b01d8f732e6f69bf37b4ed07f642ac0fc/tornado-6.4.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/bf/44195f3d9c3c4fe4cccf1c261c80d50781b9e8a0a6febf084c09c66740ff/trove_classifiers-2025.3.3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0f/b3/ca41df24db5eb99b00d97f89d7674a90cb6b3134c52fb8121b6d8d30f15c/types_python_dateutil-2.9.0.20241206-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/43/99/3ec6335ded5b88c2f7ed25c56ffd952546f7ed007ffb1e1539dc3b57015a/userpath-1.9.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/66/32/ad9944c9716360c82fb62516aca72bdeaedf7991483383f3a06734cb2cf4/uv-0.6.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c2/eb/c6db6e3001d58c6a9e67c74bb7b4206767caa3ccc28c6b9eaf4c23fb4e34/virtualenv-20.29.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fa/18/89ac62eac46b69948bf35fcd90d37103f38722968e2981f752d69081ec4d/zstandard-0.23.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: . + docs: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nodejs-22.12.0-hf235a45_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.0.1-pyh145f28c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.2-hf636f53_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - pypi: https://files.pythonhosted.org/packages/8d/3f/95338030883d8c8b91223b4e21744b04d11b161a3ef117295d8241f50ab4/accessible_pygments-0.0.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/46/eb/e7f063ad1fec6b3178a3cd82d1a3c4de82cccf283fc42746168188e1cdd5/anyio-4.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a4/6a/e8a041599e78b6b3752da48000b14c8d1e8a04ded09c88c714ba047f34f5/argon2_cffi-23.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fa/9f/3c3503693386c4b0f245eaf5ca6198e3b28879ca0a40bde6b0e319793453/async_lru-2.0.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fc/30/d4986a882011f9df997a55e6becd864812ccfcd821d64aac8570ee39f719/attrs-25.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/49/6abb616eb3cbab6a7cca303dc02fdf3836de2e0b834bf966a7f5271a34d8/beautifulsoup4-4.13.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/38/fc/bce832fd4fd99766c04d1ee0eead6b0ec6486fb100ae5e74c1d91292b982/certifi-2025.1.31-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/52/ed/b7f4f07de100bdb95c1756d3a4d17b90c1a3c53715c1a476f8738058e0fa/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/78/2b/999b2a1e1ba2206f2d3bca267d68f350beb2b048a41ea827e08ce7260098/cryptography-44.0.2-cp39-abi3-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ec/ed/db4b10ff3b5bb30fe41d9e86444a08bb6448e4d8265e7768450b8408dd36/debugpy-1.8.13-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/89/ec/00d68c4ddfedfe64159999e5f8a98fb8442729a63e2077eb9dcd89623d27/filelock-3.17.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/85/c6/ad910cdb79600af0100b7c4f7093eb4b95a2b44e589e66b6b938b09cc6f9/hatch-1.14.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/08/e7/ae38d7a6dfba0533684e0b2136817d667588ae3ec984c1a4e5df5eb88482/hatchling-1.27.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/87/f5/72347bc88306acb359581ac4d52f23c0ef445b57157adedb9aee0cd689d2/httpcore-1.0.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6e/aa/8caf6a0a3e62863cbb9dab27135660acba46903b703e224f14f447e57934/hyperlink-21.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/78/8c/4bfcab2d8286473b8d83ea742716f4b79290172e75f91142bc1534b05b9a/identify-2.6.8-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/28/39/fda74f8215ef94a812dd780073c61a826a88a01e51f627a3454f7ae6951d/ipython-9.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9f/4f/24b319316142c44283d7540e76c7b5a6dbd5db623abd86bb7b3491c21018/jaraco.functools-4.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b2/a3/e137168c9c44d18eff0376253da9f1e9234d0239e0ee230d2fee6cea8e55/jeepney-0.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/aa/42/797895b952b682c3dafe23b1834507ee7f02f4d6299b65aaa61425763278/json5-0.10.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1c/24/83349ac2189cc2435e84da3f69ba3c97314d3c0622628e55171c6798ed80/jsonschema_specifications-2023.7.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e2/a2/89eeaf0bb954a123a909859fa507fa86f96eb61b62dc30667b60dbd5fdaf/jupyter_server-2.15.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1a/81/d5b27d91a8fbb709b6623806037f6de6b7c2543d7f03543aa5a6de9812e6/jupyterlab-4.5.0rc0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e0/07/a000fe835f76b7e1143242ab1122e6362ef1c03f23f83a045c38859c2ae0/jupyterlab_server-2.28.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d3/32/da7f44bcb1105d3e88a0b74ebdca50c59121d2ddf71c9e34ba47df7f3a56/keyring-25.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/f7/7782a043553ee469c1ff49cfa1cdace2d6bf99a1f333cf38676b3ddf30da/mdit_py_plugins-0.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/12/92/30b4e54c4d7c48c06db61595cffbbf4f19588ea177896f9b78f0fbe021fd/mistune-3.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/23/62/0fe302c6d1be1c777cab0616e6302478251dfbf9055ad426f5d0def75c89/more_itertools-10.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5f/df/76d0321c3797b54b60fef9ec3bd6f4cfd124b9e422182156a1dd418722cf/myst_parser-4.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/49/2d/8c8e635bcc6757573d311bb3c5445426382f280da32b8cd6d82d501ef4a4/nbsphinx-0.9.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/43/b3/df14c580d82b9627d173ceea305ba898dca135feb360b6d84019d0803d3b/pre_commit-4.1.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/c2/ab7d37426c179ceb9aeb109a85cda8948bb269b7561a0be870cc656eefe4/prometheus_client-0.21.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e4/ea/d836f008d33151c7a1f62caf3d8dd782e4d15f6a43897f64480c2b8de2ad/prompt_toolkit-3.0.50-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e2/0d/8ba33fa83a7dcde13eb3c1c2a0c1cc29950a048bfed6d9b0d8b6bd710b4c/pydata_sphinx_theme-0.16.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/54/4c/a741dddab6ad96f257d90cb4d23067ffadac526c9cab3a99ca6ce3c05477/pyenchant-3.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c9/48/15d5f415504572dd4b92b52db5de7a5befc76bb75340ba9f36f71306a66d/pyzmq-26.2.1-cp313-cp313-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/be/8e/56d6f1e2d591f4d6cbcba446cac4a1b0dc4f584537e2071d9bcee8eeab6b/referencing-0.30.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f6/55/b3c18c04a460d951bf8e91f2abf46ce5b6426fb69784166a6a25827cb90a/rpds_py-0.23.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/38/7d7362e031bd6dc121e5081d8cb6aa6f6fedf2b67bf889962134c6da4705/setuptools-75.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/dc/c02e01294f7265e63a7315fe086dd1df7dacb9f840a804da846b96d01b96/snowballstemmer-2.2.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/c2/fe97d779f3ef3b15f05c94a2f1e3d21732574ed441687474db9d342a7315/soupsieve-2.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/26/60/1ddff83a56d33aaf6f10ec8ce84b4c007d9368b21008876fceda7e7381ef/sphinx-8.1.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/70/12/d9b6bf8093906108017f3cdbecae3e2b3b4963c5112b28f0cd482b433182/sphinxcontrib_github_alt-1.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/03/30/05efe7261eac789cf3ba28ef5dfb76d719df30baae6881cb54a6801c0e8f/sphinxcontrib_spelling-8.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c7/18/c86eb8e0202e32dd3df50d43d7ff9854f8e0603945ff398974c1d91ac1ef/tomli_w-1.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/b6/a447b5e4ec71e13871be01ba81f5dfc9d0af7e473da256ff46bc0e24026f/tomlkit-0.13.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/22/55/b78a464de78051a30599ceb6983b01d8f732e6f69bf37b4ed07f642ac0fc/tornado-6.4.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/bf/44195f3d9c3c4fe4cccf1c261c80d50781b9e8a0a6febf084c09c66740ff/trove_classifiers-2025.3.3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0f/b3/ca41df24db5eb99b00d97f89d7674a90cb6b3134c52fb8121b6d8d30f15c/types_python_dateutil-2.9.0.20241206-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/43/99/3ec6335ded5b88c2f7ed25c56ffd952546f7ed007ffb1e1539dc3b57015a/userpath-1.9.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/66/32/ad9944c9716360c82fb62516aca72bdeaedf7991483383f3a06734cb2cf4/uv-0.6.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c2/eb/c6db6e3001d58c6a9e67c74bb7b4206767caa3ccc28c6b9eaf4c23fb4e34/virtualenv-20.29.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fa/18/89ac62eac46b69948bf35fcd90d37103f38722968e2981f752d69081ec4d/zstandard-0.23.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: . + test: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nodejs-22.12.0-hf235a45_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.0.1-pyh145f28c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.2-hf636f53_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - pypi: https://files.pythonhosted.org/packages/8d/3f/95338030883d8c8b91223b4e21744b04d11b161a3ef117295d8241f50ab4/accessible_pygments-0.0.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/46/eb/e7f063ad1fec6b3178a3cd82d1a3c4de82cccf283fc42746168188e1cdd5/anyio-4.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a4/6a/e8a041599e78b6b3752da48000b14c8d1e8a04ded09c88c714ba047f34f5/argon2_cffi-23.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/39/e3/893e8757be2612e6c266d9bb58ad2e3651524b5b40cf56761e985a28b13e/asgiref-3.8.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fa/9f/3c3503693386c4b0f245eaf5ca6198e3b28879ca0a40bde6b0e319793453/async_lru-2.0.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fc/30/d4986a882011f9df997a55e6becd864812ccfcd821d64aac8570ee39f719/attrs-25.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/49/6abb616eb3cbab6a7cca303dc02fdf3836de2e0b834bf966a7f5271a34d8/beautifulsoup4-4.13.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/38/fc/bce832fd4fd99766c04d1ee0eead6b0ec6486fb100ae5e74c1d91292b982/certifi-2025.1.31-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/52/ed/b7f4f07de100bdb95c1756d3a4d17b90c1a3c53715c1a476f8738058e0fa/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0c/4b/373be2be7dd42f2bcd6964059fd8fa307d265a29d2b9bcf1d044bcc156ed/coverage-7.6.12-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/78/2b/999b2a1e1ba2206f2d3bca267d68f350beb2b048a41ea827e08ce7260098/cryptography-44.0.2-cp39-abi3-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ec/ed/db4b10ff3b5bb30fe41d9e86444a08bb6448e4d8265e7768450b8408dd36/debugpy-1.8.13-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/89/ec/00d68c4ddfedfe64159999e5f8a98fb8442729a63e2077eb9dcd89623d27/filelock-3.17.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7f/b8/b830fc43663246c3f3dd1ae7dca4847b96ed992537e85311e27fa41ac40e/flaky-3.8.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/85/c6/ad910cdb79600af0100b7c4f7093eb4b95a2b44e589e66b6b938b09cc6f9/hatch-1.14.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/08/e7/ae38d7a6dfba0533684e0b2136817d667588ae3ec984c1a4e5df5eb88482/hatchling-1.27.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/87/f5/72347bc88306acb359581ac4d52f23c0ef445b57157adedb9aee0cd689d2/httpcore-1.0.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6e/aa/8caf6a0a3e62863cbb9dab27135660acba46903b703e224f14f447e57934/hyperlink-21.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/78/8c/4bfcab2d8286473b8d83ea742716f4b79290172e75f91142bc1534b05b9a/identify-2.6.8-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/28/39/fda74f8215ef94a812dd780073c61a826a88a01e51f627a3454f7ae6951d/ipython-9.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9f/4f/24b319316142c44283d7540e76c7b5a6dbd5db623abd86bb7b3491c21018/jaraco.functools-4.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b2/a3/e137168c9c44d18eff0376253da9f1e9234d0239e0ee230d2fee6cea8e55/jeepney-0.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/aa/42/797895b952b682c3dafe23b1834507ee7f02f4d6299b65aaa61425763278/json5-0.10.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cb/58/3485da8cb93d2f393bce453adeef16896751f14ba3e2024bc21dc9597646/jsonschema_path-0.3.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d9/a2/7759a4268e1d6d74559de8fb5be6c77d621b822ae64d28ab4f7467c22f63/jsonschema_spec-0.2.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1c/24/83349ac2189cc2435e84da3f69ba3c97314d3c0622628e55171c6798ed80/jsonschema_specifications-2023.7.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e2/a2/89eeaf0bb954a123a909859fa507fa86f96eb61b62dc30667b60dbd5fdaf/jupyter_server-2.15.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1a/81/d5b27d91a8fbb709b6623806037f6de6b7c2543d7f03543aa5a6de9812e6/jupyterlab-4.5.0rc0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e0/07/a000fe835f76b7e1143242ab1122e6362ef1c03f23f83a045c38859c2ae0/jupyterlab_server-2.28.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d3/32/da7f44bcb1105d3e88a0b74ebdca50c59121d2ddf71c9e34ba47df7f3a56/keyring-25.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2c/f0/f02e2d150d581a294efded4020094a371bbab42423fe78625ac18854d89b/lazy-object-proxy-1.10.0.tar.gz + - pypi: https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/f7/7782a043553ee469c1ff49cfa1cdace2d6bf99a1f333cf38676b3ddf30da/mdit_py_plugins-0.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/12/92/30b4e54c4d7c48c06db61595cffbbf4f19588ea177896f9b78f0fbe021fd/mistune-3.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/23/62/0fe302c6d1be1c777cab0616e6302478251dfbf9055ad426f5d0def75c89/more_itertools-10.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5f/df/76d0321c3797b54b60fef9ec3bd6f4cfd124b9e422182156a1dd418722cf/myst_parser-4.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/49/2d/8c8e635bcc6757573d311bb3c5445426382f280da32b8cd6d82d501ef4a4/nbsphinx-0.9.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2c/5c/eb1e3ce54c4e94c7734b3831756c63f21badb3de91a98d77b9e23c0ca76a/nbval-0.11.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3c/b0/7e386f89c336d21577e01b77efbba60edfe1b5732124b746bc1d02efdd72/openapi_core-0.18.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/21/c6/ad0fba32775ae749016829dace42ed80f4407b171da41313d1a3a5f102e4/openapi_schema_validator-0.6.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2b/4d/e744fff95aaf3aeafc968d5ba7297c8cda0d1ecb8e3acd21b25adae4d835/openapi_spec_validator-0.7.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d0/31/ba45bf0b2aa7898d81cbbfac0e88c267befb59ad91a19e36e1bc5578ddb1/parse-1.20.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7d/eb/b6260b31b1a96386c0a880edebe26f89669098acea8e0318bff6adb378fd/pathable-0.4.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/43/b3/df14c580d82b9627d173ceea305ba898dca135feb360b6d84019d0803d3b/pre_commit-4.1.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/c2/ab7d37426c179ceb9aeb109a85cda8948bb269b7561a0be870cc656eefe4/prometheus_client-0.21.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e4/ea/d836f008d33151c7a1f62caf3d8dd782e4d15f6a43897f64480c2b8de2ad/prompt_toolkit-3.0.50-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e2/0d/8ba33fa83a7dcde13eb3c1c2a0c1cc29950a048bfed6d9b0d8b6bd710b4c/pydata_sphinx_theme-0.16.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/54/4c/a741dddab6ad96f257d90cb4d23067ffadac526c9cab3a99ca6ce3c05477/pyenchant-3.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/51/ff/f6e8b8f39e08547faece4bd80f89d5a8de68a38b2d179cc1c4490ffa3286/pytest-7.4.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/12/149a568c244b58912350c7fd3b997ed6b57889a22098564cc43c3e511b76/pytest_console_scripts-1.4.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/36/3b/48e79f2cd6a61dbbd4807b4ed46cb564b4fd50a76166b1c4ea5c1d9e2371/pytest_cov-6.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/87/95/0166c428ea0ab4770f66de7804f2341caa9d8826d0022ce3d986d253d9c6/pytest_jupyter-0.10.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/03/27/14af9ef8321f5edc7527e47def2a21d8118c6f329a9342cc61387a0c0599/pytest_timeout-2.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/50/b9/3615ebfc3120bb949c3725b50793f42c3230d0175d6cfd358ea8bb6928ff/pytest_tornasync-0.6.0.post2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c9/48/15d5f415504572dd4b92b52db5de7a5befc76bb75340ba9f36f71306a66d/pyzmq-26.2.1-cp313-cp313-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/be/8e/56d6f1e2d591f4d6cbcba446cac4a1b0dc4f584537e2071d9bcee8eeab6b/referencing-0.30.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/97/ec/889fbc557727da0c34a33850950310240f2040f3b1955175fdb2b36a8910/requests_mock-1.12.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f6/55/b3c18c04a460d951bf8e91f2abf46ce5b6426fb69784166a6a25827cb90a/rpds_py-0.23.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c2/36/dfc1ebc0081e6d39924a2cc53654497f967a084a436bb64402dfce4254d9/ruamel.yaml-0.18.10-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/38/7d7362e031bd6dc121e5081d8cb6aa6f6fedf2b67bf889962134c6da4705/setuptools-75.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/dc/c02e01294f7265e63a7315fe086dd1df7dacb9f840a804da846b96d01b96/snowballstemmer-2.2.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/c2/fe97d779f3ef3b15f05c94a2f1e3d21732574ed441687474db9d342a7315/soupsieve-2.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/26/60/1ddff83a56d33aaf6f10ec8ce84b4c007d9368b21008876fceda7e7381ef/sphinx-8.1.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/70/12/d9b6bf8093906108017f3cdbecae3e2b3b4963c5112b28f0cd482b433182/sphinxcontrib_github_alt-1.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/03/30/05efe7261eac789cf3ba28ef5dfb76d719df30baae6881cb54a6801c0e8f/sphinxcontrib_spelling-8.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/56/e4/879ef1dbd6ddea1c77c0078cd59b503368b0456bcca7d063a870ca2119d3/strict-rfc3339-0.7.tar.gz + - pypi: https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c7/18/c86eb8e0202e32dd3df50d43d7ff9854f8e0603945ff398974c1d91ac1ef/tomli_w-1.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/b6/a447b5e4ec71e13871be01ba81f5dfc9d0af7e473da256ff46bc0e24026f/tomlkit-0.13.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/22/55/b78a464de78051a30599ceb6983b01d8f732e6f69bf37b4ed07f642ac0fc/tornado-6.4.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/bf/44195f3d9c3c4fe4cccf1c261c80d50781b9e8a0a6febf084c09c66740ff/trove_classifiers-2025.3.3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0f/b3/ca41df24db5eb99b00d97f89d7674a90cb6b3134c52fb8121b6d8d30f15c/types_python_dateutil-2.9.0.20241206-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/43/99/3ec6335ded5b88c2f7ed25c56ffd952546f7ed007ffb1e1539dc3b57015a/userpath-1.9.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/66/32/ad9944c9716360c82fb62516aca72bdeaedf7991483383f3a06734cb2cf4/uv-0.6.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c2/eb/c6db6e3001d58c6a9e67c74bb7b4206767caa3ccc28c6b9eaf4c23fb4e34/virtualenv-20.29.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/52/24/ab44c871b0f07f491e5d2ad12c9bd7358e527510618cb1b803a88e986db1/werkzeug-3.1.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fa/18/89ac62eac46b69948bf35fcd90d37103f38722968e2981f752d69081ec4d/zstandard-0.23.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: . +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + license: None + purls: [] + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 23621 + timestamp: 1650670423406 +- pypi: https://files.pythonhosted.org/packages/8d/3f/95338030883d8c8b91223b4e21744b04d11b161a3ef117295d8241f50ab4/accessible_pygments-0.0.5-py3-none-any.whl + name: accessible-pygments + version: 0.0.5 + sha256: 88ae3211e68a1d0b011504b2ffc1691feafce124b845bd072ab6f9f66f34d4b7 + requires_dist: + - pygments>=1.5 + - pillow ; extra == 'dev' + - pkginfo>=1.10 ; extra == 'dev' + - playwright ; extra == 'dev' + - pre-commit ; extra == 'dev' + - setuptools ; extra == 'dev' + - twine>=5.0 ; extra == 'dev' + - hypothesis ; extra == 'tests' + - pytest ; extra == 'tests' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl + name: alabaster + version: 1.0.0 + sha256: fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/46/eb/e7f063ad1fec6b3178a3cd82d1a3c4de82cccf283fc42746168188e1cdd5/anyio-4.8.0-py3-none-any.whl + name: anyio + version: 4.8.0 + sha256: b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a + requires_dist: + - exceptiongroup>=1.0.2 ; python_full_version < '3.11' + - idna>=2.8 + - sniffio>=1.1 + - typing-extensions>=4.5 ; python_full_version < '3.13' + - trio>=0.26.1 ; extra == 'trio' + - anyio[trio] ; extra == 'test' + - coverage[toml]>=7 ; extra == 'test' + - exceptiongroup>=1.2.0 ; extra == 'test' + - hypothesis>=4.0 ; extra == 'test' + - psutil>=5.9 ; extra == 'test' + - pytest>=7.0 ; extra == 'test' + - trustme ; extra == 'test' + - truststore>=0.9.1 ; python_full_version >= '3.10' and extra == 'test' + - uvloop>=0.21 ; python_full_version < '3.14' and platform_python_implementation == 'CPython' and sys_platform != 'win32' and extra == 'test' + - packaging ; extra == 'doc' + - sphinx~=7.4 ; extra == 'doc' + - sphinx-rtd-theme ; extra == 'doc' + - sphinx-autodoc-typehints>=1.2.0 ; extra == 'doc' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/a4/6a/e8a041599e78b6b3752da48000b14c8d1e8a04ded09c88c714ba047f34f5/argon2_cffi-23.1.0-py3-none-any.whl + name: argon2-cffi + version: 23.1.0 + sha256: c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea + requires_dist: + - argon2-cffi-bindings + - typing-extensions ; python_full_version < '3.8' + - argon2-cffi[tests,typing] ; extra == 'dev' + - tox>4 ; extra == 'dev' + - furo ; extra == 'docs' + - myst-parser ; extra == 'docs' + - sphinx ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-notfound-page ; extra == 'docs' + - hypothesis ; extra == 'tests' + - pytest ; extra == 'tests' + - mypy ; extra == 'typing' + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: argon2-cffi-bindings + version: 21.2.0 + sha256: b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae + requires_dist: + - cffi>=1.0.1 + - pytest ; extra == 'dev' + - cogapp ; extra == 'dev' + - pre-commit ; extra == 'dev' + - wheel ; extra == 'dev' + - pytest ; extra == 'tests' + requires_python: '>=3.6' +- pypi: https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl + name: arrow + version: 1.3.0 + sha256: c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80 + requires_dist: + - python-dateutil>=2.7.0 + - types-python-dateutil>=2.8.10 + - doc8 ; extra == 'doc' + - sphinx>=7.0.0 ; extra == 'doc' + - sphinx-autobuild ; extra == 'doc' + - sphinx-autodoc-typehints ; extra == 'doc' + - sphinx-rtd-theme>=1.3.0 ; extra == 'doc' + - dateparser==1.* ; extra == 'test' + - pre-commit ; extra == 'test' + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-mock ; extra == 'test' + - pytz==2021.1 ; extra == 'test' + - simplejson==3.* ; extra == 'test' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/39/e3/893e8757be2612e6c266d9bb58ad2e3651524b5b40cf56761e985a28b13e/asgiref-3.8.1-py3-none-any.whl + name: asgiref + version: 3.8.1 + sha256: 3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47 + requires_dist: + - typing-extensions>=4 ; python_full_version < '3.11' + - pytest ; extra == 'tests' + - pytest-asyncio ; extra == 'tests' + - mypy>=0.800 ; extra == 'tests' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl + name: asttokens + version: 3.0.0 + sha256: e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2 + requires_dist: + - astroid>=2,<4 ; extra == 'astroid' + - astroid>=2,<4 ; extra == 'test' + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-xdist ; extra == 'test' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/fa/9f/3c3503693386c4b0f245eaf5ca6198e3b28879ca0a40bde6b0e319793453/async_lru-2.0.4-py3-none-any.whl + name: async-lru + version: 2.0.4 + sha256: ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224 + requires_dist: + - typing-extensions>=4.0.0 ; python_full_version < '3.11' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/fc/30/d4986a882011f9df997a55e6becd864812ccfcd821d64aac8570ee39f719/attrs-25.1.0-py3-none-any.whl + name: attrs + version: 25.1.0 + sha256: c75a69e28a550a7e93789579c22aa26b0f5b83b75dc4e08fe092980051e1090a + requires_dist: + - cloudpickle ; platform_python_implementation == 'CPython' and extra == 'benchmark' + - hypothesis ; extra == 'benchmark' + - mypy>=1.11.1 ; python_full_version >= '3.10' and platform_python_implementation == 'CPython' and extra == 'benchmark' + - pympler ; extra == 'benchmark' + - pytest-codspeed ; extra == 'benchmark' + - pytest-mypy-plugins ; python_full_version >= '3.10' and platform_python_implementation == 'CPython' and extra == 'benchmark' + - pytest-xdist[psutil] ; extra == 'benchmark' + - pytest>=4.3.0 ; extra == 'benchmark' + - cloudpickle ; platform_python_implementation == 'CPython' and extra == 'cov' + - coverage[toml]>=5.3 ; extra == 'cov' + - hypothesis ; extra == 'cov' + - mypy>=1.11.1 ; python_full_version >= '3.10' and platform_python_implementation == 'CPython' and extra == 'cov' + - pympler ; extra == 'cov' + - pytest-mypy-plugins ; python_full_version >= '3.10' and platform_python_implementation == 'CPython' and extra == 'cov' + - pytest-xdist[psutil] ; extra == 'cov' + - pytest>=4.3.0 ; extra == 'cov' + - cloudpickle ; platform_python_implementation == 'CPython' and extra == 'dev' + - hypothesis ; extra == 'dev' + - mypy>=1.11.1 ; python_full_version >= '3.10' and platform_python_implementation == 'CPython' and extra == 'dev' + - pre-commit-uv ; extra == 'dev' + - pympler ; extra == 'dev' + - pytest-mypy-plugins ; python_full_version >= '3.10' and platform_python_implementation == 'CPython' and extra == 'dev' + - pytest-xdist[psutil] ; extra == 'dev' + - pytest>=4.3.0 ; extra == 'dev' + - cogapp ; extra == 'docs' + - furo ; extra == 'docs' + - myst-parser ; extra == 'docs' + - sphinx ; extra == 'docs' + - sphinx-notfound-page ; extra == 'docs' + - sphinxcontrib-towncrier ; extra == 'docs' + - towncrier<24.7 ; extra == 'docs' + - cloudpickle ; platform_python_implementation == 'CPython' and extra == 'tests' + - hypothesis ; extra == 'tests' + - mypy>=1.11.1 ; python_full_version >= '3.10' and platform_python_implementation == 'CPython' and extra == 'tests' + - pympler ; extra == 'tests' + - pytest-mypy-plugins ; python_full_version >= '3.10' and platform_python_implementation == 'CPython' and extra == 'tests' + - pytest-xdist[psutil] ; extra == 'tests' + - pytest>=4.3.0 ; extra == 'tests' + - mypy>=1.11.1 ; python_full_version >= '3.10' and platform_python_implementation == 'CPython' and extra == 'tests-mypy' + - pytest-mypy-plugins ; python_full_version >= '3.10' and platform_python_implementation == 'CPython' and extra == 'tests-mypy' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl + name: babel + version: 2.17.0 + sha256: 4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2 + requires_dist: + - pytz>=2015.7 ; python_full_version < '3.9' + - tzdata ; sys_platform == 'win32' and extra == 'dev' + - backports-zoneinfo ; python_full_version < '3.9' and extra == 'dev' + - freezegun~=1.0 ; extra == 'dev' + - jinja2>=3.0 ; extra == 'dev' + - pytest-cov ; extra == 'dev' + - pytest>=6.0 ; extra == 'dev' + - pytz ; extra == 'dev' + - setuptools ; extra == 'dev' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/f9/49/6abb616eb3cbab6a7cca303dc02fdf3836de2e0b834bf966a7f5271a34d8/beautifulsoup4-4.13.3-py3-none-any.whl + name: beautifulsoup4 + version: 4.13.3 + sha256: 99045d7d3f08f91f0d656bc9b7efbae189426cd913d830294a15eefa0ea4df16 + requires_dist: + - soupsieve>1.2 + - typing-extensions>=4.0.0 + - cchardet ; extra == 'cchardet' + - chardet ; extra == 'chardet' + - charset-normalizer ; extra == 'charset-normalizer' + - html5lib ; extra == 'html5lib' + - lxml ; extra == 'lxml' + requires_python: '>=3.7.0' +- pypi: https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl + name: bleach + version: 6.2.0 + sha256: 117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e + requires_dist: + - webencodings + - tinycss2>=1.1.0,<1.5 ; extra == 'css' + requires_python: '>=3.9' +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + license: ISC + purls: [] + size: 158144 + timestamp: 1738298224464 +- pypi: https://files.pythonhosted.org/packages/38/fc/bce832fd4fd99766c04d1ee0eead6b0ec6486fb100ae5e74c1d91292b982/certifi-2025.1.31-py3-none-any.whl + name: certifi + version: 2025.1.31 + sha256: ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe + requires_python: '>=3.6' +- pypi: https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: cffi + version: 1.17.1 + sha256: dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd + requires_dist: + - pycparser + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl + name: cfgv + version: 3.4.0 + sha256: b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/52/ed/b7f4f07de100bdb95c1756d3a4d17b90c1a3c53715c1a476f8738058e0fa/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: charset-normalizer + version: 3.4.1 + sha256: 955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl + name: click + version: 8.1.8 + sha256: 63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2 + requires_dist: + - colorama ; sys_platform == 'win32' + - importlib-metadata ; python_full_version < '3.8' + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl + name: comm + version: 0.2.2 + sha256: e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3 + requires_dist: + - traitlets>=4 + - pytest ; extra == 'test' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/0c/4b/373be2be7dd42f2bcd6964059fd8fa307d265a29d2b9bcf1d044bcc156ed/coverage-7.6.12-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: coverage + version: 7.6.12 + sha256: 64cbb1a3027c79ca6310bf101014614f6e6e18c226474606cf725238cf5bc2d4 + requires_dist: + - tomli ; python_full_version <= '3.11' and extra == 'toml' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/78/2b/999b2a1e1ba2206f2d3bca267d68f350beb2b048a41ea827e08ce7260098/cryptography-44.0.2-cp39-abi3-manylinux_2_28_x86_64.whl + name: cryptography + version: 44.0.2 + sha256: b042d2a275c8cee83a4b7ae30c45a15e6a4baa65a179a0ec2d78ebb90e4f6699 + requires_dist: + - cffi>=1.12 ; platform_python_implementation != 'PyPy' + - bcrypt>=3.1.5 ; extra == 'ssh' + - nox>=2024.4.15 ; extra == 'nox' + - nox[uv]>=2024.3.2 ; python_full_version >= '3.8' and extra == 'nox' + - cryptography-vectors==44.0.2 ; extra == 'test' + - pytest>=7.4.0 ; extra == 'test' + - pytest-benchmark>=4.0 ; extra == 'test' + - pytest-cov>=2.10.1 ; extra == 'test' + - pytest-xdist>=3.5.0 ; extra == 'test' + - pretend>=0.7 ; extra == 'test' + - certifi>=2024 ; extra == 'test' + - pytest-randomly ; extra == 'test-randomorder' + - sphinx>=5.3.0 ; extra == 'docs' + - sphinx-rtd-theme>=3.0.0 ; python_full_version >= '3.8' and extra == 'docs' + - pyenchant>=3 ; extra == 'docstest' + - readme-renderer>=30.0 ; extra == 'docstest' + - sphinxcontrib-spelling>=7.3.1 ; extra == 'docstest' + - build>=1.0.0 ; extra == 'sdist' + - ruff>=0.3.6 ; extra == 'pep8test' + - mypy>=1.4 ; extra == 'pep8test' + - check-sdist ; python_full_version >= '3.8' and extra == 'pep8test' + - click>=8.0.1 ; extra == 'pep8test' + requires_python: '>=3.7,!=3.9.0,!=3.9.1' +- pypi: https://files.pythonhosted.org/packages/ec/ed/db4b10ff3b5bb30fe41d9e86444a08bb6448e4d8265e7768450b8408dd36/debugpy-1.8.13-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: debugpy + version: 1.8.13 + sha256: a0bd87557f97bced5513a74088af0b84982b6ccb2e254b9312e29e8a5c4270eb + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl + name: decorator + version: 5.2.1 + sha256: d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl + name: defusedxml + version: 0.7.1 + sha256: a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61 + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*' +- pypi: https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl + name: distlib + version: 0.3.9 + sha256: 47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87 +- pypi: https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl + name: docutils + version: 0.21.2 + sha256: dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl + name: executing + version: 2.2.0 + sha256: 11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa + requires_dist: + - asttokens>=2.1.0 ; extra == 'tests' + - ipython ; extra == 'tests' + - pytest ; extra == 'tests' + - coverage ; extra == 'tests' + - coverage-enable-subprocess ; extra == 'tests' + - littleutils ; extra == 'tests' + - rich ; python_full_version >= '3.11' and extra == 'tests' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl + name: fastjsonschema + version: 2.21.1 + sha256: c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667 + requires_dist: + - colorama ; extra == 'devel' + - jsonschema ; extra == 'devel' + - json-spec ; extra == 'devel' + - pylint ; extra == 'devel' + - pytest ; extra == 'devel' + - pytest-benchmark ; extra == 'devel' + - pytest-cache ; extra == 'devel' + - validictory ; extra == 'devel' +- pypi: https://files.pythonhosted.org/packages/89/ec/00d68c4ddfedfe64159999e5f8a98fb8442729a63e2077eb9dcd89623d27/filelock-3.17.0-py3-none-any.whl + name: filelock + version: 3.17.0 + sha256: 533dc2f7ba78dc2f0f531fc6c4940addf7b70a481e269a5a3b93be94ffbe8338 + requires_dist: + - furo>=2024.8.6 ; extra == 'docs' + - sphinx-autodoc-typehints>=3 ; extra == 'docs' + - sphinx>=8.1.3 ; extra == 'docs' + - covdefaults>=2.3 ; extra == 'testing' + - coverage>=7.6.10 ; extra == 'testing' + - diff-cover>=9.2.1 ; extra == 'testing' + - pytest-asyncio>=0.25.2 ; extra == 'testing' + - pytest-cov>=6 ; extra == 'testing' + - pytest-mock>=3.14 ; extra == 'testing' + - pytest-timeout>=2.3.1 ; extra == 'testing' + - pytest>=8.3.4 ; extra == 'testing' + - virtualenv>=20.28.1 ; extra == 'testing' + - typing-extensions>=4.12.2 ; python_full_version < '3.11' and extra == 'typing' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/7f/b8/b830fc43663246c3f3dd1ae7dca4847b96ed992537e85311e27fa41ac40e/flaky-3.8.1-py2.py3-none-any.whl + name: flaky + version: 3.8.1 + sha256: 194ccf4f0d3a22b2de7130f4b62e45e977ac1b5ccad74d4d48f3005dcc38815e + requires_python: '>=3.5' +- pypi: https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl + name: fqdn + version: 1.5.1 + sha256: 3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014 + requires_dist: + - cached-property>=1.3.0 ; python_full_version < '3.8' + requires_python: '>=2.7,!=3.0,!=3.1,!=3.2,!=3.3,!=3.4,<4' +- pypi: https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl + name: h11 + version: 0.14.0 + sha256: e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 + requires_dist: + - typing-extensions ; python_full_version < '3.8' + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/85/c6/ad910cdb79600af0100b7c4f7093eb4b95a2b44e589e66b6b938b09cc6f9/hatch-1.14.0-py3-none-any.whl + name: hatch + version: 1.14.0 + sha256: b12c7a2f4aaf6db7180e35c476e1a2ad4ec7197c20c4332964599424d4918ded + requires_dist: + - click>=8.0.6 + - hatchling>=1.26.3 + - httpx>=0.22.0 + - hyperlink>=21.0.0 + - keyring>=23.5.0 + - packaging>=23.2 + - pexpect~=4.8 + - platformdirs>=2.5.0 + - rich>=11.2.0 + - shellingham>=1.4.0 + - tomli-w>=1.0 + - tomlkit>=0.11.1 + - userpath~=1.7 + - uv>=0.1.35 + - virtualenv>=20.26.6 + - zstandard<1 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/08/e7/ae38d7a6dfba0533684e0b2136817d667588ae3ec984c1a4e5df5eb88482/hatchling-1.27.0-py3-none-any.whl + name: hatchling + version: 1.27.0 + sha256: d3a2f3567c4f926ea39849cdf924c7e99e6686c9c8e288ae1037c8fa2a5d937b + requires_dist: + - packaging>=24.2 + - pathspec>=0.10.1 + - pluggy>=1.0.0 + - tomli>=1.2.2 ; python_full_version < '3.11' + - trove-classifiers + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/87/f5/72347bc88306acb359581ac4d52f23c0ef445b57157adedb9aee0cd689d2/httpcore-1.0.7-py3-none-any.whl + name: httpcore + version: 1.0.7 + sha256: a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd + requires_dist: + - certifi + - h11>=0.13,<0.15 + - anyio>=4.0,<5.0 ; extra == 'asyncio' + - h2>=3,<5 ; extra == 'http2' + - socksio==1.* ; extra == 'socks' + - trio>=0.22.0,<1.0 ; extra == 'trio' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl + name: httpx + version: 0.28.1 + sha256: d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad + requires_dist: + - anyio + - certifi + - httpcore==1.* + - idna + - brotli ; platform_python_implementation == 'CPython' and extra == 'brotli' + - brotlicffi ; platform_python_implementation != 'CPython' and extra == 'brotli' + - click==8.* ; extra == 'cli' + - pygments==2.* ; extra == 'cli' + - rich>=10,<14 ; extra == 'cli' + - h2>=3,<5 ; extra == 'http2' + - socksio==1.* ; extra == 'socks' + - zstandard>=0.18.0 ; extra == 'zstd' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/6e/aa/8caf6a0a3e62863cbb9dab27135660acba46903b703e224f14f447e57934/hyperlink-21.0.0-py2.py3-none-any.whl + name: hyperlink + version: 21.0.0 + sha256: e6b14c37ecb73e89c77d78cdb4c2cc8f3fb59a885c5b3f819ff4ed80f25af1b4 + requires_dist: + - idna>=2.5 + - typing ; python_full_version < '3.5' + requires_python: '>=2.6,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*' +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 12129203 + timestamp: 1720853576813 +- pypi: https://files.pythonhosted.org/packages/78/8c/4bfcab2d8286473b8d83ea742716f4b79290172e75f91142bc1534b05b9a/identify-2.6.8-py2.py3-none-any.whl + name: identify + version: 2.6.8 + sha256: 83657f0f766a3c8d0eaea16d4ef42494b39b34629a4b3192a9d020d349b3e255 + requires_dist: + - ukkonen ; extra == 'license' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl + name: idna + version: '3.10' + sha256: 946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3 + requires_dist: + - ruff>=0.6.2 ; extra == 'all' + - mypy>=1.11.2 ; extra == 'all' + - pytest>=8.3.2 ; extra == 'all' + - flake8>=7.1.1 ; extra == 'all' + requires_python: '>=3.6' +- pypi: https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl + name: imagesize + version: 1.4.1 + sha256: 0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*' +- pypi: https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl + name: importlib-resources + version: 6.5.2 + sha256: 789cfdc3ed28c78b67a06acb8126751ced69a3d5f79c095a98298cd8a760ccec + requires_dist: + - zipp>=3.1.0 ; python_full_version < '3.10' + - pytest>=6,!=8.1.* ; extra == 'test' + - zipp>=3.17 ; extra == 'test' + - jaraco-test>=5.4 ; extra == 'test' + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pytest-checkdocs>=2.4 ; extra == 'check' + - pytest-ruff>=0.2.1 ; sys_platform != 'cygwin' and extra == 'check' + - pytest-cov ; extra == 'cover' + - pytest-enabler>=2.2 ; extra == 'enabler' + - pytest-mypy ; extra == 'type' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl + name: iniconfig + version: 2.0.0 + sha256: b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl + name: ipykernel + version: 6.29.5 + sha256: afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5 + requires_dist: + - appnope ; sys_platform == 'darwin' + - comm>=0.1.1 + - debugpy>=1.6.5 + - ipython>=7.23.1 + - jupyter-client>=6.1.12 + - jupyter-core>=4.12,!=5.0.* + - matplotlib-inline>=0.1 + - nest-asyncio + - packaging + - psutil + - pyzmq>=24 + - tornado>=6.1 + - traitlets>=5.4.0 + - coverage[toml] ; extra == 'cov' + - curio ; extra == 'cov' + - matplotlib ; extra == 'cov' + - pytest-cov ; extra == 'cov' + - trio ; extra == 'cov' + - myst-parser ; extra == 'docs' + - pydata-sphinx-theme ; extra == 'docs' + - sphinx ; extra == 'docs' + - sphinx-autodoc-typehints ; extra == 'docs' + - sphinxcontrib-github-alt ; extra == 'docs' + - sphinxcontrib-spelling ; extra == 'docs' + - trio ; extra == 'docs' + - pyqt5 ; extra == 'pyqt5' + - pyside6 ; extra == 'pyside6' + - flaky ; extra == 'test' + - ipyparallel ; extra == 'test' + - pre-commit ; extra == 'test' + - pytest-asyncio>=0.23.5 ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest>=7.0 ; extra == 'test' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/28/39/fda74f8215ef94a812dd780073c61a826a88a01e51f627a3454f7ae6951d/ipython-9.0.1-py3-none-any.whl + name: ipython + version: 9.0.1 + sha256: 3e878273824b52e0a2280ed84f8193aba8c4ba9a6f45a438348a3d5ef1a34bd0 + requires_dist: + - colorama ; sys_platform == 'win32' + - decorator + - ipython-pygments-lexers + - jedi>=0.16 + - matplotlib-inline + - pexpect>4.3 ; sys_platform != 'emscripten' and sys_platform != 'win32' + - prompt-toolkit>=3.0.41,<3.1.0 + - pygments>=2.4.0 + - stack-data + - traitlets>=5.13.0 + - typing-extensions>=4.6 ; python_full_version < '3.12' + - black ; extra == 'black' + - docrepr ; extra == 'doc' + - exceptiongroup ; extra == 'doc' + - intersphinx-registry ; extra == 'doc' + - ipykernel ; extra == 'doc' + - ipython[test] ; extra == 'doc' + - matplotlib ; extra == 'doc' + - setuptools>=18.5 ; extra == 'doc' + - sphinx-toml==0.0.4 ; extra == 'doc' + - sphinx-rtd-theme ; extra == 'doc' + - sphinx>=1.3 ; extra == 'doc' + - typing-extensions ; extra == 'doc' + - pytest ; extra == 'test' + - pytest-asyncio<0.22 ; extra == 'test' + - testpath ; extra == 'test' + - packaging ; extra == 'test' + - ipython[test] ; extra == 'test-extra' + - curio ; extra == 'test-extra' + - matplotlib!=3.2.0 ; extra == 'test-extra' + - nbformat ; extra == 'test-extra' + - numpy>=1.23 ; extra == 'test-extra' + - pandas ; extra == 'test-extra' + - trio ; extra == 'test-extra' + - matplotlib ; extra == 'matplotlib' + - ipython[doc,matplotlib,test,test-extra] ; extra == 'all' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl + name: ipython-pygments-lexers + version: 1.1.1 + sha256: a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c + requires_dist: + - pygments + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl + name: isodate + version: 0.7.2 + sha256: 28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl + name: isoduration + version: 20.11.0 + sha256: b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042 + requires_dist: + - arrow>=0.15.0 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl + name: jaraco-classes + version: 3.4.0 + sha256: f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790 + requires_dist: + - more-itertools + - sphinx>=3.5 ; extra == 'docs' + - jaraco-packaging>=9.3 ; extra == 'docs' + - rst-linker>=1.9 ; extra == 'docs' + - furo ; extra == 'docs' + - sphinx-lint ; extra == 'docs' + - jaraco-tidelift>=1.4 ; extra == 'docs' + - pytest>=6 ; extra == 'testing' + - pytest-checkdocs>=2.4 ; extra == 'testing' + - pytest-cov ; extra == 'testing' + - pytest-mypy ; extra == 'testing' + - pytest-enabler>=2.2 ; extra == 'testing' + - pytest-ruff>=0.2.1 ; extra == 'testing' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl + name: jaraco-context + version: 6.0.1 + sha256: f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4 + requires_dist: + - backports-tarfile ; python_full_version < '3.12' + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pytest>=6,!=8.1.* ; extra == 'test' + - pytest-checkdocs>=2.4 ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-mypy ; extra == 'test' + - pytest-enabler>=2.2 ; extra == 'test' + - portend ; extra == 'test' + - pytest-ruff>=0.2.1 ; sys_platform != 'cygwin' and extra == 'test' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/9f/4f/24b319316142c44283d7540e76c7b5a6dbd5db623abd86bb7b3491c21018/jaraco.functools-4.1.0-py3-none-any.whl + name: jaraco-functools + version: 4.1.0 + sha256: ad159f13428bc4acbf5541ad6dec511f91573b90fba04df61dafa2a1231cf649 + requires_dist: + - more-itertools + - pytest-checkdocs>=2.4 ; extra == 'check' + - pytest-ruff>=0.2.1 ; sys_platform != 'cygwin' and extra == 'check' + - pytest-cov ; extra == 'cover' + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pytest-enabler>=2.2 ; extra == 'enabler' + - pytest>=6,!=8.1.* ; extra == 'test' + - jaraco-classes ; extra == 'test' + - pytest-mypy ; extra == 'type' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl + name: jedi + version: 0.19.2 + sha256: a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9 + requires_dist: + - parso>=0.8.4,<0.9.0 + - jinja2==2.11.3 ; extra == 'docs' + - markupsafe==1.1.1 ; extra == 'docs' + - pygments==2.8.1 ; extra == 'docs' + - alabaster==0.7.12 ; extra == 'docs' + - babel==2.9.1 ; extra == 'docs' + - chardet==4.0.0 ; extra == 'docs' + - commonmark==0.8.1 ; extra == 'docs' + - docutils==0.17.1 ; extra == 'docs' + - future==0.18.2 ; extra == 'docs' + - idna==2.10 ; extra == 'docs' + - imagesize==1.2.0 ; extra == 'docs' + - mock==1.0.1 ; extra == 'docs' + - packaging==20.9 ; extra == 'docs' + - pyparsing==2.4.7 ; extra == 'docs' + - pytz==2021.1 ; extra == 'docs' + - readthedocs-sphinx-ext==2.1.4 ; extra == 'docs' + - recommonmark==0.5.0 ; extra == 'docs' + - requests==2.25.1 ; extra == 'docs' + - six==1.15.0 ; extra == 'docs' + - snowballstemmer==2.1.0 ; extra == 'docs' + - sphinx-rtd-theme==0.4.3 ; extra == 'docs' + - sphinx==1.8.5 ; extra == 'docs' + - sphinxcontrib-serializinghtml==1.1.4 ; extra == 'docs' + - sphinxcontrib-websupport==1.2.4 ; extra == 'docs' + - urllib3==1.26.4 ; extra == 'docs' + - flake8==5.0.4 ; extra == 'qa' + - mypy==0.971 ; extra == 'qa' + - types-setuptools==67.2.0.1 ; extra == 'qa' + - django ; extra == 'testing' + - attrs ; extra == 'testing' + - colorama ; extra == 'testing' + - docopt ; extra == 'testing' + - pytest<9.0.0 ; extra == 'testing' + requires_python: '>=3.6' +- pypi: https://files.pythonhosted.org/packages/b2/a3/e137168c9c44d18eff0376253da9f1e9234d0239e0ee230d2fee6cea8e55/jeepney-0.9.0-py3-none-any.whl + name: jeepney + version: 0.9.0 + sha256: 97e5714520c16fc0a45695e5365a2e11b81ea79bba796e26f9f1d178cb182683 + requires_dist: + - pytest ; extra == 'test' + - pytest-trio ; extra == 'test' + - pytest-asyncio>=0.17 ; extra == 'test' + - testpath ; extra == 'test' + - trio ; extra == 'test' + - async-timeout ; python_full_version < '3.11' and extra == 'test' + - trio ; extra == 'trio' + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl + name: jinja2 + version: 3.1.6 + sha256: 85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67 + requires_dist: + - markupsafe>=2.0 + - babel>=2.7 ; extra == 'i18n' + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/aa/42/797895b952b682c3dafe23b1834507ee7f02f4d6299b65aaa61425763278/json5-0.10.0-py3-none-any.whl + name: json5 + version: 0.10.0 + sha256: 19b23410220a7271e8377f81ba8aacba2fdd56947fbb137ee5977cbe1f5e8dfa + requires_dist: + - build==1.2.2.post1 ; extra == 'dev' + - coverage==7.5.3 ; extra == 'dev' + - mypy==1.13.0 ; extra == 'dev' + - pip==24.3.1 ; extra == 'dev' + - pylint==3.2.3 ; extra == 'dev' + - ruff==0.7.3 ; extra == 'dev' + - twine==5.1.1 ; extra == 'dev' + - uv==0.5.1 ; extra == 'dev' + requires_python: '>=3.8.0' +- pypi: https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl + name: jsonpointer + version: 3.0.0 + sha256: 13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl + name: jsonschema + version: 4.23.0 + sha256: fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566 + requires_dist: + - attrs>=22.2.0 + - importlib-resources>=1.4.0 ; python_full_version < '3.9' + - jsonschema-specifications>=2023.3.6 + - pkgutil-resolve-name>=1.3.10 ; python_full_version < '3.9' + - referencing>=0.28.4 + - rpds-py>=0.7.1 + - fqdn ; extra == 'format' + - idna ; extra == 'format' + - isoduration ; extra == 'format' + - jsonpointer>1.13 ; extra == 'format' + - rfc3339-validator ; extra == 'format' + - rfc3987 ; extra == 'format' + - uri-template ; extra == 'format' + - webcolors>=1.11 ; extra == 'format' + - fqdn ; extra == 'format-nongpl' + - idna ; extra == 'format-nongpl' + - isoduration ; extra == 'format-nongpl' + - jsonpointer>1.13 ; extra == 'format-nongpl' + - rfc3339-validator ; extra == 'format-nongpl' + - rfc3986-validator>0.1.0 ; extra == 'format-nongpl' + - uri-template ; extra == 'format-nongpl' + - webcolors>=24.6.0 ; extra == 'format-nongpl' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/cb/58/3485da8cb93d2f393bce453adeef16896751f14ba3e2024bc21dc9597646/jsonschema_path-0.3.4-py3-none-any.whl + name: jsonschema-path + version: 0.3.4 + sha256: f502191fdc2b22050f9a81c9237be9d27145b9001c55842bece5e94e382e52f8 + requires_dist: + - pyyaml>=5.1 + - pathable>=0.4.1,<0.5.0 + - referencing<0.37.0 + - requests>=2.31.0,<3.0.0 + requires_python: '>=3.8.0,<4.0.0' +- pypi: https://files.pythonhosted.org/packages/d9/a2/7759a4268e1d6d74559de8fb5be6c77d621b822ae64d28ab4f7467c22f63/jsonschema_spec-0.2.4-py3-none-any.whl + name: jsonschema-spec + version: 0.2.4 + sha256: e6dcf7056734ec6854f7888da6c08ce6c421f28aeeddce96bb90de0fb6d711ef + requires_dist: + - pyyaml>=5.1 + - pathable>=0.4.1,<0.5.0 + - referencing>=0.28.0,<0.31.0 + - requests>=2.31.0,<3.0.0 + requires_python: '>=3.8.0,<4.0.0' +- pypi: https://files.pythonhosted.org/packages/1c/24/83349ac2189cc2435e84da3f69ba3c97314d3c0622628e55171c6798ed80/jsonschema_specifications-2023.7.1-py3-none-any.whl + name: jsonschema-specifications + version: 2023.7.1 + sha256: 05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1 + requires_dist: + - importlib-resources>=1.4.0 ; python_full_version < '3.9' + - referencing>=0.28.0 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl + name: jupyter-client + version: 8.6.3 + sha256: e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f + requires_dist: + - importlib-metadata>=4.8.3 ; python_full_version < '3.10' + - jupyter-core>=4.12,!=5.0.* + - python-dateutil>=2.8.2 + - pyzmq>=23.0 + - tornado>=6.2 + - traitlets>=5.3 + - ipykernel ; extra == 'docs' + - myst-parser ; extra == 'docs' + - pydata-sphinx-theme ; extra == 'docs' + - sphinx-autodoc-typehints ; extra == 'docs' + - sphinx>=4 ; extra == 'docs' + - sphinxcontrib-github-alt ; extra == 'docs' + - sphinxcontrib-spelling ; extra == 'docs' + - coverage ; extra == 'test' + - ipykernel>=6.14 ; extra == 'test' + - mypy ; extra == 'test' + - paramiko ; sys_platform == 'win32' and extra == 'test' + - pre-commit ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-jupyter[client]>=0.4.1 ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest<8.2.0 ; extra == 'test' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl + name: jupyter-core + version: 5.7.2 + sha256: 4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409 + requires_dist: + - platformdirs>=2.5 + - pywin32>=300 ; platform_python_implementation != 'PyPy' and sys_platform == 'win32' + - traitlets>=5.3 + - myst-parser ; extra == 'docs' + - pydata-sphinx-theme ; extra == 'docs' + - sphinx-autodoc-typehints ; extra == 'docs' + - sphinxcontrib-github-alt ; extra == 'docs' + - sphinxcontrib-spelling ; extra == 'docs' + - traitlets ; extra == 'docs' + - ipykernel ; extra == 'test' + - pre-commit ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest<8 ; extra == 'test' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl + name: jupyter-events + version: 0.12.0 + sha256: 6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb + requires_dist: + - jsonschema[format-nongpl]>=4.18.0 + - packaging + - python-json-logger>=2.0.4 + - pyyaml>=5.3 + - referencing + - rfc3339-validator + - rfc3986-validator>=0.1.1 + - traitlets>=5.3 + - click ; extra == 'cli' + - rich ; extra == 'cli' + - jupyterlite-sphinx ; extra == 'docs' + - myst-parser ; extra == 'docs' + - pydata-sphinx-theme>=0.16 ; extra == 'docs' + - sphinx>=8 ; extra == 'docs' + - sphinxcontrib-spelling ; extra == 'docs' + - click ; extra == 'test' + - pre-commit ; extra == 'test' + - pytest-asyncio>=0.19.0 ; extra == 'test' + - pytest-console-scripts ; extra == 'test' + - pytest>=7.0 ; extra == 'test' + - rich ; extra == 'test' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl + name: jupyter-lsp + version: 2.2.5 + sha256: 45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da + requires_dist: + - jupyter-server>=1.1.2 + - importlib-metadata>=4.8.3 ; python_full_version < '3.10' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/e2/a2/89eeaf0bb954a123a909859fa507fa86f96eb61b62dc30667b60dbd5fdaf/jupyter_server-2.15.0-py3-none-any.whl + name: jupyter-server + version: 2.15.0 + sha256: 872d989becf83517012ee669f09604aa4a28097c0bd90b2f424310156c2cdae3 + requires_dist: + - anyio>=3.1.0 + - argon2-cffi>=21.1 + - jinja2>=3.0.3 + - jupyter-client>=7.4.4 + - jupyter-core>=4.12,!=5.0.* + - jupyter-events>=0.11.0 + - jupyter-server-terminals>=0.4.4 + - nbconvert>=6.4.4 + - nbformat>=5.3.0 + - overrides>=5.0 + - packaging>=22.0 + - prometheus-client>=0.9 + - pywinpty>=2.0.1 ; os_name == 'nt' + - pyzmq>=24 + - send2trash>=1.8.2 + - terminado>=0.8.3 + - tornado>=6.2.0 + - traitlets>=5.6.0 + - websocket-client>=1.7 + - ipykernel ; extra == 'docs' + - jinja2 ; extra == 'docs' + - jupyter-client ; extra == 'docs' + - myst-parser ; extra == 'docs' + - nbformat ; extra == 'docs' + - prometheus-client ; extra == 'docs' + - pydata-sphinx-theme ; extra == 'docs' + - send2trash ; extra == 'docs' + - sphinx-autodoc-typehints ; extra == 'docs' + - sphinxcontrib-github-alt ; extra == 'docs' + - sphinxcontrib-openapi>=0.8.0 ; extra == 'docs' + - sphinxcontrib-spelling ; extra == 'docs' + - sphinxemoji ; extra == 'docs' + - tornado ; extra == 'docs' + - typing-extensions ; extra == 'docs' + - flaky ; extra == 'test' + - ipykernel ; extra == 'test' + - pre-commit ; extra == 'test' + - pytest-console-scripts ; extra == 'test' + - pytest-jupyter[server]>=0.7 ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest>=7.0,<9 ; extra == 'test' + - requests ; extra == 'test' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl + name: jupyter-server-terminals + version: 0.5.3 + sha256: 41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa + requires_dist: + - pywinpty>=2.0.3 ; os_name == 'nt' + - terminado>=0.8.3 + - jinja2 ; extra == 'docs' + - jupyter-server ; extra == 'docs' + - mistune<4.0 ; extra == 'docs' + - myst-parser ; extra == 'docs' + - nbformat ; extra == 'docs' + - packaging ; extra == 'docs' + - pydata-sphinx-theme ; extra == 'docs' + - sphinxcontrib-github-alt ; extra == 'docs' + - sphinxcontrib-openapi ; extra == 'docs' + - sphinxcontrib-spelling ; extra == 'docs' + - sphinxemoji ; extra == 'docs' + - tornado ; extra == 'docs' + - jupyter-server>=2.0.0 ; extra == 'test' + - pytest-jupyter[server]>=0.5.3 ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest>=7.0 ; extra == 'test' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/1a/81/d5b27d91a8fbb709b6623806037f6de6b7c2543d7f03543aa5a6de9812e6/jupyterlab-4.5.0rc0-py3-none-any.whl + name: jupyterlab + version: 4.5.0rc0 + sha256: 89a22b0587499fb7524ea1c541fab4dd2f4030b9c05284f627b9b2176e2cff1e + requires_dist: + - async-lru>=1.0.0 + - httpx>=0.25.0,<1 + - importlib-metadata>=4.8.3 ; python_full_version < '3.10' + - ipykernel>=6.5.0,!=6.30.0 + - jinja2>=3.0.3 + - jupyter-core + - jupyter-lsp>=2.0.0 + - jupyter-server>=2.4.0,<3 + - jupyterlab-server>=2.28.0,<3 + - notebook-shim>=0.2 + - packaging + - setuptools>=41.1.0 + - tomli>=1.2.2 ; python_full_version < '3.11' + - tornado>=6.2.0 + - traitlets + - build ; extra == 'dev' + - bump2version ; extra == 'dev' + - coverage ; extra == 'dev' + - hatch ; extra == 'dev' + - pre-commit ; extra == 'dev' + - pytest-cov ; extra == 'dev' + - ruff==0.11.12 ; extra == 'dev' + - jsx-lexer ; extra == 'docs' + - myst-parser ; extra == 'docs' + - pydata-sphinx-theme>=0.13.0 ; extra == 'docs' + - pytest ; extra == 'docs' + - pytest-check-links ; extra == 'docs' + - pytest-jupyter ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx>=1.8,<8.2.0 ; extra == 'docs' + - altair==5.5.0 ; extra == 'docs-screenshots' + - ipython==8.16.1 ; extra == 'docs-screenshots' + - ipywidgets==8.1.5 ; extra == 'docs-screenshots' + - jupyterlab-geojson==3.4.0 ; extra == 'docs-screenshots' + - jupyterlab-language-pack-zh-cn==4.3.post1 ; extra == 'docs-screenshots' + - matplotlib==3.10.0 ; extra == 'docs-screenshots' + - nbconvert>=7.0.0 ; extra == 'docs-screenshots' + - pandas==2.2.3 ; extra == 'docs-screenshots' + - scipy==1.15.1 ; extra == 'docs-screenshots' + - vega-datasets==0.9.0 ; extra == 'docs-screenshots' + - coverage ; extra == 'test' + - pytest-check-links>=0.7 ; extra == 'test' + - pytest-console-scripts ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-jupyter>=0.5.3 ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-tornasync ; extra == 'test' + - pytest>=7.0 ; extra == 'test' + - requests ; extra == 'test' + - requests-cache ; extra == 'test' + - virtualenv ; extra == 'test' + - copier>=9,<10 ; extra == 'upgrade-extension' + - jinja2-time<0.3 ; extra == 'upgrade-extension' + - pydantic<3.0 ; extra == 'upgrade-extension' + - pyyaml-include<3.0 ; extra == 'upgrade-extension' + - tomli-w<2.0 ; extra == 'upgrade-extension' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl + name: jupyterlab-pygments + version: 0.3.0 + sha256: 841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/e0/07/a000fe835f76b7e1143242ab1122e6362ef1c03f23f83a045c38859c2ae0/jupyterlab_server-2.28.0-py3-none-any.whl + name: jupyterlab-server + version: 2.28.0 + sha256: e4355b148fdcf34d312bbbc80f22467d6d20460e8b8736bf235577dd18506968 + requires_dist: + - babel>=2.10 + - importlib-metadata>=4.8.3 ; python_full_version < '3.10' + - jinja2>=3.0.3 + - json5>=0.9.0 + - jsonschema>=4.18.0 + - jupyter-server>=1.21,<3 + - packaging>=21.3 + - requests>=2.31 + - autodoc-traits ; extra == 'docs' + - jinja2<3.2.0 ; extra == 'docs' + - mistune<4 ; extra == 'docs' + - myst-parser ; extra == 'docs' + - pydata-sphinx-theme ; extra == 'docs' + - sphinx ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinxcontrib-openapi>0.8 ; extra == 'docs' + - openapi-core~=0.18.0 ; extra == 'openapi' + - ruamel-yaml ; extra == 'openapi' + - hatch ; extra == 'test' + - ipykernel ; extra == 'test' + - openapi-core~=0.18.0 ; extra == 'test' + - openapi-spec-validator>=0.6.0,<0.8.0 ; extra == 'test' + - pytest-console-scripts ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-jupyter[server]>=0.6.2 ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest>=7.0,<8 ; extra == 'test' + - requests-mock ; extra == 'test' + - ruamel-yaml ; extra == 'test' + - sphinxcontrib-spelling ; extra == 'test' + - strict-rfc3339 ; extra == 'test' + - werkzeug ; extra == 'test' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/d3/32/da7f44bcb1105d3e88a0b74ebdca50c59121d2ddf71c9e34ba47df7f3a56/keyring-25.6.0-py3-none-any.whl + name: keyring + version: 25.6.0 + sha256: 552a3f7af126ece7ed5c89753650eec89c7eaae8617d0aa4d9ad2b75111266bd + requires_dist: + - pywin32-ctypes>=0.2.0 ; sys_platform == 'win32' + - secretstorage>=3.2 ; sys_platform == 'linux' + - jeepney>=0.4.2 ; sys_platform == 'linux' + - importlib-metadata>=4.11.4 ; python_full_version < '3.12' + - jaraco-classes + - importlib-resources ; python_full_version < '3.9' + - jaraco-functools + - jaraco-context + - pytest>=6,!=8.1.* ; extra == 'test' + - pyfakefs ; extra == 'test' + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pytest-checkdocs>=2.4 ; extra == 'check' + - pytest-ruff>=0.2.1 ; sys_platform != 'cygwin' and extra == 'check' + - pytest-cov ; extra == 'cover' + - pytest-enabler>=2.2 ; extra == 'enabler' + - pytest-mypy ; extra == 'type' + - pygobject-stubs ; extra == 'type' + - shtab ; extra == 'type' + - types-pywin32 ; extra == 'type' + - shtab>=1.1.0 ; extra == 'completion' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/2c/f0/f02e2d150d581a294efded4020094a371bbab42423fe78625ac18854d89b/lazy-object-proxy-1.10.0.tar.gz + name: lazy-object-proxy + version: 1.10.0 + sha256: 78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69 + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + license: MIT + license_family: MIT + purls: [] + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + purls: [] + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 + depends: + - __glibc >=2.17,<3.0.a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: 0BSD + purls: [] + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda + sha256: d02d1d3304ecaf5c728e515eb7416517a0b118200cd5eacbe829c432d1664070 + md5: aeb98fdeb2e8f25d43ef71fbacbeec80 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 89991 + timestamp: 1723817448345 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + purls: [] + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b + md5: 771ee65e13bc599b0b62af5359d80169 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + purls: [] + size: 891272 + timestamp: 1737016632446 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + purls: [] + size: 60963 + timestamp: 1727963148474 +- pypi: https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl + name: markdown-it-py + version: 3.0.0 + sha256: 355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 + requires_dist: + - mdurl~=0.1 + - psutil ; extra == 'benchmarking' + - pytest ; extra == 'benchmarking' + - pytest-benchmark ; extra == 'benchmarking' + - pre-commit~=3.0 ; extra == 'code-style' + - commonmark~=0.9 ; extra == 'compare' + - markdown~=3.4 ; extra == 'compare' + - mistletoe~=1.0 ; extra == 'compare' + - mistune~=2.0 ; extra == 'compare' + - panflute~=2.3 ; extra == 'compare' + - linkify-it-py>=1,<3 ; extra == 'linkify' + - mdit-py-plugins ; extra == 'plugins' + - gprof2dot ; extra == 'profiling' + - mdit-py-plugins ; extra == 'rtd' + - myst-parser ; extra == 'rtd' + - pyyaml ; extra == 'rtd' + - sphinx ; extra == 'rtd' + - sphinx-copybutton ; extra == 'rtd' + - sphinx-design ; extra == 'rtd' + - sphinx-book-theme ; extra == 'rtd' + - jupyter-sphinx ; extra == 'rtd' + - coverage ; extra == 'testing' + - pytest ; extra == 'testing' + - pytest-cov ; extra == 'testing' + - pytest-regressions ; extra == 'testing' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: markupsafe + version: 3.0.2 + sha256: 15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl + name: matplotlib-inline + version: 0.1.7 + sha256: df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca + requires_dist: + - traitlets + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/a7/f7/7782a043553ee469c1ff49cfa1cdace2d6bf99a1f333cf38676b3ddf30da/mdit_py_plugins-0.4.2-py3-none-any.whl + name: mdit-py-plugins + version: 0.4.2 + sha256: 0c673c3f889399a33b95e88d2f0d111b4447bdfea7f237dab2d488f459835636 + requires_dist: + - markdown-it-py>=1.0.0,<4.0.0 + - pre-commit ; extra == 'code-style' + - myst-parser ; extra == 'rtd' + - sphinx-book-theme ; extra == 'rtd' + - coverage ; extra == 'testing' + - pytest ; extra == 'testing' + - pytest-cov ; extra == 'testing' + - pytest-regressions ; extra == 'testing' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl + name: mdurl + version: 0.1.2 + sha256: 84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/12/92/30b4e54c4d7c48c06db61595cffbbf4f19588ea177896f9b78f0fbe021fd/mistune-3.1.2-py3-none-any.whl + name: mistune + version: 3.1.2 + sha256: 4b47731332315cdca99e0ded46fc0004001c1299ff773dfb48fbe1fd226de319 + requires_dist: + - typing-extensions ; python_full_version < '3.11' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/23/62/0fe302c6d1be1c777cab0616e6302478251dfbf9055ad426f5d0def75c89/more_itertools-10.6.0-py3-none-any.whl + name: more-itertools + version: 10.6.0 + sha256: 6eb054cb4b6db1473f6e15fcc676a08e4732548acd47c708f0e179c2c7c01e89 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/5f/df/76d0321c3797b54b60fef9ec3bd6f4cfd124b9e422182156a1dd418722cf/myst_parser-4.0.1-py3-none-any.whl + name: myst-parser + version: 4.0.1 + sha256: 9134e88959ec3b5780aedf8a99680ea242869d012e8821db3126d427edc9c95d + requires_dist: + - docutils>=0.19,<0.22 + - jinja2 + - markdown-it-py~=3.0 + - mdit-py-plugins~=0.4,>=0.4.1 + - pyyaml + - sphinx>=7,<9 + - pre-commit~=4.0 ; extra == 'code-style' + - linkify-it-py~=2.0 ; extra == 'linkify' + - sphinx>=7 ; extra == 'rtd' + - ipython ; extra == 'rtd' + - sphinx-book-theme~=1.1 ; extra == 'rtd' + - sphinx-design ; extra == 'rtd' + - sphinx-copybutton ; extra == 'rtd' + - sphinxext-rediraffe~=0.2.7 ; extra == 'rtd' + - sphinxext-opengraph~=0.9.0 ; extra == 'rtd' + - sphinx-pyscript ; extra == 'rtd' + - sphinx-tippy>=0.4.3 ; extra == 'rtd' + - sphinx-autodoc2~=0.5.0 ; extra == 'rtd' + - sphinx-togglebutton ; extra == 'rtd' + - beautifulsoup4 ; extra == 'testing' + - coverage[toml] ; extra == 'testing' + - defusedxml ; extra == 'testing' + - pytest>=8,<9 ; extra == 'testing' + - pytest-cov ; extra == 'testing' + - pytest-regressions ; extra == 'testing' + - pytest-param-files~=0.6.0 ; extra == 'testing' + - sphinx-pytest ; extra == 'testing' + - pygments<2.19 ; extra == 'testing' + - pygments ; extra == 'testing-docutils' + - pytest>=8,<9 ; extra == 'testing-docutils' + - pytest-param-files~=0.6.0 ; extra == 'testing-docutils' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl + name: nbclient + version: 0.10.2 + sha256: 4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d + requires_dist: + - jupyter-client>=6.1.12 + - jupyter-core>=4.12,!=5.0.* + - nbformat>=5.1 + - traitlets>=5.4 + - pre-commit ; extra == 'dev' + - autodoc-traits ; extra == 'docs' + - flaky ; extra == 'docs' + - ipykernel>=6.19.3 ; extra == 'docs' + - ipython ; extra == 'docs' + - ipywidgets ; extra == 'docs' + - mock ; extra == 'docs' + - moto ; extra == 'docs' + - myst-parser ; extra == 'docs' + - nbconvert>=7.1.0 ; extra == 'docs' + - pytest-asyncio ; extra == 'docs' + - pytest-cov>=4.0 ; extra == 'docs' + - pytest>=7.0,<8 ; extra == 'docs' + - sphinx-book-theme ; extra == 'docs' + - sphinx>=1.7 ; extra == 'docs' + - sphinxcontrib-spelling ; extra == 'docs' + - testpath ; extra == 'docs' + - xmltodict ; extra == 'docs' + - flaky ; extra == 'test' + - ipykernel>=6.19.3 ; extra == 'test' + - ipython ; extra == 'test' + - ipywidgets ; extra == 'test' + - nbconvert>=7.1.0 ; extra == 'test' + - pytest-asyncio ; extra == 'test' + - pytest-cov>=4.0 ; extra == 'test' + - pytest>=7.0,<8 ; extra == 'test' + - testpath ; extra == 'test' + - xmltodict ; extra == 'test' + requires_python: '>=3.9.0' +- pypi: https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl + name: nbconvert + version: 7.16.6 + sha256: 1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b + requires_dist: + - beautifulsoup4 + - bleach[css]!=5.0.0 + - defusedxml + - importlib-metadata>=3.6 ; python_full_version < '3.10' + - jinja2>=3.0 + - jupyter-core>=4.7 + - jupyterlab-pygments + - markupsafe>=2.0 + - mistune>=2.0.3,<4 + - nbclient>=0.5.0 + - nbformat>=5.7 + - packaging + - pandocfilters>=1.4.1 + - pygments>=2.4.1 + - traitlets>=5.1 + - flaky ; extra == 'all' + - ipykernel ; extra == 'all' + - ipython ; extra == 'all' + - ipywidgets>=7.5 ; extra == 'all' + - myst-parser ; extra == 'all' + - nbsphinx>=0.2.12 ; extra == 'all' + - playwright ; extra == 'all' + - pydata-sphinx-theme ; extra == 'all' + - pyqtwebengine>=5.15 ; extra == 'all' + - pytest>=7 ; extra == 'all' + - sphinx==5.0.2 ; extra == 'all' + - sphinxcontrib-spelling ; extra == 'all' + - tornado>=6.1 ; extra == 'all' + - ipykernel ; extra == 'docs' + - ipython ; extra == 'docs' + - myst-parser ; extra == 'docs' + - nbsphinx>=0.2.12 ; extra == 'docs' + - pydata-sphinx-theme ; extra == 'docs' + - sphinx==5.0.2 ; extra == 'docs' + - sphinxcontrib-spelling ; extra == 'docs' + - pyqtwebengine>=5.15 ; extra == 'qtpdf' + - pyqtwebengine>=5.15 ; extra == 'qtpng' + - tornado>=6.1 ; extra == 'serve' + - flaky ; extra == 'test' + - ipykernel ; extra == 'test' + - ipywidgets>=7.5 ; extra == 'test' + - pytest>=7 ; extra == 'test' + - playwright ; extra == 'webpdf' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl + name: nbformat + version: 5.10.4 + sha256: 3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b + requires_dist: + - fastjsonschema>=2.15 + - jsonschema>=2.6 + - jupyter-core>=4.12,!=5.0.* + - traitlets>=5.1 + - myst-parser ; extra == 'docs' + - pydata-sphinx-theme ; extra == 'docs' + - sphinx ; extra == 'docs' + - sphinxcontrib-github-alt ; extra == 'docs' + - sphinxcontrib-spelling ; extra == 'docs' + - pep440 ; extra == 'test' + - pre-commit ; extra == 'test' + - pytest ; extra == 'test' + - testpath ; extra == 'test' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/49/2d/8c8e635bcc6757573d311bb3c5445426382f280da32b8cd6d82d501ef4a4/nbsphinx-0.9.7-py3-none-any.whl + name: nbsphinx + version: 0.9.7 + sha256: 7292c3767fea29e405c60743eee5393682a83982ab202ff98f5eb2db02629da8 + requires_dist: + - docutils>=0.18.1 + - jinja2 + - nbconvert>=5.3,!=5.4 + - traitlets>=5 + - nbformat + - sphinx>=1.8,<8.2 + requires_python: '>=3.6' +- pypi: https://files.pythonhosted.org/packages/2c/5c/eb1e3ce54c4e94c7734b3831756c63f21badb3de91a98d77b9e23c0ca76a/nbval-0.11.0-py2.py3-none-any.whl + name: nbval + version: 0.11.0 + sha256: 307aecc866c9a1e8a13bb5bbb008a702bacfda2394dff6fe504a3108a58042a0 + requires_dist: + - pytest>=7 + - jupyter-client + - nbformat + - ipykernel + - coverage + requires_python: '>=3.7,<4' +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: X11 AND BSD-3-Clause + purls: [] + size: 891641 + timestamp: 1738195959188 +- pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl + name: nest-asyncio + version: 1.6.0 + sha256: 87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c + requires_python: '>=3.5' +- pypi: https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl + name: nodeenv + version: 1.9.1 + sha256: ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9 + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*' +- conda: https://conda.anaconda.org/conda-forge/linux-64/nodejs-22.12.0-hf235a45_0.conda + sha256: 1a519b80bc3d5afddeccb593711df2e60ac48ecf3e903f7bdc279f64f7210fc4 + md5: 30458a23bf5568d2bc0e1fed6a4e2b12 + depends: + - __glibc >=2.28,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libuv >=1.49.2,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - zlib + license: MIT + license_family: MIT + purls: [] + size: 21796933 + timestamp: 1734113054756 +- pypi: . + name: notebook + version: 7.5.0 + sha256: 7ef8c5626500483b32a57bf34d2e8a44fcaa531da6b150df0320b7755ab574ba + requires_dist: + - jupyter-server>=2.4.0,<3 + - jupyterlab-server>=2.28.0,<3 + - jupyterlab>=4.5.0rc0,<4.6 + - notebook-shim>=0.2,<0.3 + - tornado>=6.2.0 + - hatch ; extra == 'dev' + - pre-commit ; extra == 'dev' + - myst-parser ; extra == 'docs' + - nbsphinx ; extra == 'docs' + - pydata-sphinx-theme ; extra == 'docs' + - sphinx>=1.3.6 ; extra == 'docs' + - sphinxcontrib-github-alt ; extra == 'docs' + - sphinxcontrib-spelling ; extra == 'docs' + - importlib-resources>=5.0 ; python_full_version < '3.10' and extra == 'test' + - ipykernel ; extra == 'test' + - jupyter-server[test]>=2.4.0,<3 ; extra == 'test' + - jupyterlab-server[test]>=2.28.0,<3 ; extra == 'test' + - nbval ; extra == 'test' + - pytest-console-scripts ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-tornasync ; extra == 'test' + - pytest>=7.0 ; extra == 'test' + - requests ; extra == 'test' + requires_python: '>=3.9' + editable: true +- pypi: https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl + name: notebook-shim + version: 0.2.4 + sha256: 411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef + requires_dist: + - jupyter-server>=1.8,<3 + - pytest ; extra == 'test' + - pytest-console-scripts ; extra == 'test' + - pytest-jupyter ; extra == 'test' + - pytest-tornasync ; extra == 'test' + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/3c/b0/7e386f89c336d21577e01b77efbba60edfe1b5732124b746bc1d02efdd72/openapi_core-0.18.2-py3-none-any.whl + name: openapi-core + version: 0.18.2 + sha256: ec13d366766d564450de60374f59feb0b5ccb447aed642cdf0f1ecfcc6fbe80a + requires_dist: + - aiohttp>=3.0 ; extra == 'aiohttp' + - asgiref>=3.6.0,<4.0.0 + - django>=3.0 ; extra == 'django' + - falcon>=3.0 ; extra == 'falcon' + - flask ; extra == 'flask' + - isodate + - jsonschema>=4.18.0,<5.0.0 + - jsonschema-spec>=0.2.3,<0.3.0 + - more-itertools + - multidict>=6.0.4,<7.0.0 ; extra == 'aiohttp' + - openapi-schema-validator>=0.6.0,<0.7.0 + - openapi-spec-validator>=0.7.1,<0.8.0 + - parse + - requests ; extra == 'requests' + - starlette>=0.26.1,<0.32.0 ; extra == 'starlette' + - werkzeug + requires_python: '>=3.8.0,<4.0.0' +- pypi: https://files.pythonhosted.org/packages/21/c6/ad0fba32775ae749016829dace42ed80f4407b171da41313d1a3a5f102e4/openapi_schema_validator-0.6.3-py3-none-any.whl + name: openapi-schema-validator + version: 0.6.3 + sha256: f3b9870f4e556b5a62a1c39da72a6b4b16f3ad9c73dc80084b1b11e74ba148a3 + requires_dist: + - jsonschema>=4.19.1,<5.0.0 + - jsonschema-specifications>=2023.5.2 + - rfc3339-validator + requires_python: '>=3.8.0,<4.0.0' +- pypi: https://files.pythonhosted.org/packages/2b/4d/e744fff95aaf3aeafc968d5ba7297c8cda0d1ecb8e3acd21b25adae4d835/openapi_spec_validator-0.7.1-py3-none-any.whl + name: openapi-spec-validator + version: 0.7.1 + sha256: 3c81825043f24ccbcd2f4b149b11e8231abce5ba84f37065e14ec947d8f4e959 + requires_dist: + - importlib-resources>=5.8,<7.0 ; python_full_version < '3.9' + - jsonschema>=4.18.0,<5.0.0 + - jsonschema-path>=0.3.1,<0.4.0 + - lazy-object-proxy>=1.7.1,<2.0.0 + - openapi-schema-validator>=0.6.0,<0.7.0 + requires_python: '>=3.8.0,<4.0.0' +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2939306 + timestamp: 1739301879343 +- pypi: https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl + name: overrides + version: 7.7.0 + sha256: c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49 + requires_dist: + - typing ; python_full_version < '3.5' + requires_python: '>=3.6' +- pypi: https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl + name: packaging + version: '24.2' + sha256: 09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl + name: pandocfilters + version: 1.5.1 + sha256: 93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*' +- pypi: https://files.pythonhosted.org/packages/d0/31/ba45bf0b2aa7898d81cbbfac0e88c267befb59ad91a19e36e1bc5578ddb1/parse-1.20.2-py2.py3-none-any.whl + name: parse + version: 1.20.2 + sha256: 967095588cb802add9177d0c0b6133b5ba33b1ea9007ca800e526f42a85af558 +- pypi: https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl + name: parso + version: 0.8.4 + sha256: a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18 + requires_dist: + - flake8==5.0.4 ; extra == 'qa' + - mypy==0.971 ; extra == 'qa' + - types-setuptools==67.2.0.1 ; extra == 'qa' + - docopt ; extra == 'testing' + - pytest ; extra == 'testing' + requires_python: '>=3.6' +- pypi: https://files.pythonhosted.org/packages/7d/eb/b6260b31b1a96386c0a880edebe26f89669098acea8e0318bff6adb378fd/pathable-0.4.4-py3-none-any.whl + name: pathable + version: 0.4.4 + sha256: 5ae9e94793b6ef5a4cbe0a7ce9dbbefc1eec38df253763fd0aeeacf2762dbbc2 + requires_python: '>=3.7.0,<4.0.0' +- pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl + name: pathspec + version: 0.12.1 + sha256: a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl + name: pexpect + version: 4.9.0 + sha256: 7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523 + requires_dist: + - ptyprocess>=0.5 +- conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.0.1-pyh145f28c_0.conda + sha256: b1beb97b230321fc2ae692bd631cd65530c59686151af9d11aaa16df815f9ee8 + md5: 9ba21d75dc722c29827988a575a65707 + depends: + - python >=3.13.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pip?source=hash-mapping + size: 1256777 + timestamp: 1739142856473 +- pypi: https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl + name: platformdirs + version: 4.3.6 + sha256: 73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb + requires_dist: + - furo>=2024.8.6 ; extra == 'docs' + - proselint>=0.14 ; extra == 'docs' + - sphinx-autodoc-typehints>=2.4 ; extra == 'docs' + - sphinx>=8.0.2 ; extra == 'docs' + - appdirs==1.4.4 ; extra == 'test' + - covdefaults>=2.3 ; extra == 'test' + - pytest-cov>=5 ; extra == 'test' + - pytest-mock>=3.14 ; extra == 'test' + - pytest>=8.3.2 ; extra == 'test' + - mypy>=1.11.2 ; extra == 'type' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl + name: pluggy + version: 1.5.0 + sha256: 44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669 + requires_dist: + - pre-commit ; extra == 'dev' + - tox ; extra == 'dev' + - pytest ; extra == 'testing' + - pytest-benchmark ; extra == 'testing' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/43/b3/df14c580d82b9627d173ceea305ba898dca135feb360b6d84019d0803d3b/pre_commit-4.1.0-py2.py3-none-any.whl + name: pre-commit + version: 4.1.0 + sha256: d29e7cb346295bcc1cc75fc3e92e343495e3ea0196c9ec6ba53f49f10ab6ae7b + requires_dist: + - cfgv>=2.0.0 + - identify>=1.0.0 + - nodeenv>=0.11.1 + - pyyaml>=5.1 + - virtualenv>=20.10.0 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/ff/c2/ab7d37426c179ceb9aeb109a85cda8948bb269b7561a0be870cc656eefe4/prometheus_client-0.21.1-py3-none-any.whl + name: prometheus-client + version: 0.21.1 + sha256: 594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301 + requires_dist: + - twisted ; extra == 'twisted' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/e4/ea/d836f008d33151c7a1f62caf3d8dd782e4d15f6a43897f64480c2b8de2ad/prompt_toolkit-3.0.50-py3-none-any.whl + name: prompt-toolkit + version: 3.0.50 + sha256: 9b6427eb19e479d98acff65196a307c555eb567989e6d88ebbb1b509d9779198 + requires_dist: + - wcwidth + requires_python: '>=3.8.0' +- pypi: https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: psutil + version: 7.0.0 + sha256: 4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34 + requires_dist: + - pytest ; extra == 'dev' + - pytest-xdist ; extra == 'dev' + - setuptools ; extra == 'dev' + - abi3audit ; extra == 'dev' + - black==24.10.0 ; extra == 'dev' + - check-manifest ; extra == 'dev' + - coverage ; extra == 'dev' + - packaging ; extra == 'dev' + - pylint ; extra == 'dev' + - pyperf ; extra == 'dev' + - pypinfo ; extra == 'dev' + - pytest-cov ; extra == 'dev' + - requests ; extra == 'dev' + - rstcheck ; extra == 'dev' + - ruff ; extra == 'dev' + - sphinx ; extra == 'dev' + - sphinx-rtd-theme ; extra == 'dev' + - toml-sort ; extra == 'dev' + - twine ; extra == 'dev' + - virtualenv ; extra == 'dev' + - vulture ; extra == 'dev' + - wheel ; extra == 'dev' + - pytest ; extra == 'test' + - pytest-xdist ; extra == 'test' + - setuptools ; extra == 'test' + requires_python: '>=3.6' +- pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + name: ptyprocess + version: 0.7.0 + sha256: 4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35 +- pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl + name: pure-eval + version: 0.2.3 + sha256: 1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0 + requires_dist: + - pytest ; extra == 'tests' +- pypi: https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl + name: pycparser + version: '2.22' + sha256: c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/e2/0d/8ba33fa83a7dcde13eb3c1c2a0c1cc29950a048bfed6d9b0d8b6bd710b4c/pydata_sphinx_theme-0.16.1-py3-none-any.whl + name: pydata-sphinx-theme + version: 0.16.1 + sha256: 225331e8ac4b32682c18fcac5a57a6f717c4e632cea5dd0e247b55155faeccde + requires_dist: + - sphinx>=6.1 + - beautifulsoup4 + - docutils!=0.17.0 + - babel + - pygments>=2.7 + - accessible-pygments + - typing-extensions + - numpydoc ; extra == 'doc' + - linkify-it-py ; extra == 'doc' + - rich ; extra == 'doc' + - sphinxext-rediraffe ; extra == 'doc' + - sphinx-sitemap ; extra == 'doc' + - sphinx-autoapi>=3.0.0 ; extra == 'doc' + - myst-parser ; extra == 'doc' + - ablog>=0.11.8 ; extra == 'doc' + - jupyter-sphinx ; extra == 'doc' + - pandas ; extra == 'doc' + - plotly ; extra == 'doc' + - matplotlib ; extra == 'doc' + - numpy ; extra == 'doc' + - xarray ; extra == 'doc' + - sphinx-copybutton ; extra == 'doc' + - sphinx-design ; extra == 'doc' + - sphinx-togglebutton ; extra == 'doc' + - jupyterlite-sphinx ; extra == 'doc' + - sphinxcontrib-youtube>=1.4.1 ; extra == 'doc' + - sphinx-favicon>=1.0.1 ; extra == 'doc' + - ipykernel ; extra == 'doc' + - nbsphinx ; extra == 'doc' + - ipyleaflet ; extra == 'doc' + - colorama ; extra == 'doc' + - ipywidgets ; extra == 'doc' + - graphviz ; extra == 'doc' + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-regressions ; extra == 'test' + - sphinx[test] ; extra == 'test' + - pyyaml ; extra == 'dev' + - pre-commit ; extra == 'dev' + - pydata-sphinx-theme[doc,test] ; extra == 'dev' + - tox ; extra == 'dev' + - pandoc ; extra == 'dev' + - sphinx-theme-builder[cli] ; extra == 'dev' + - pytest-playwright ; extra == 'a11y' + - babel ; extra == 'i18n' + - jinja2 ; extra == 'i18n' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/54/4c/a741dddab6ad96f257d90cb4d23067ffadac526c9cab3a99ca6ce3c05477/pyenchant-3.2.2-py3-none-any.whl + name: pyenchant + version: 3.2.2 + sha256: 5facc821ece957208a81423af7d6ec7810dad29697cb0d77aae81e4e11c8e5a6 + requires_python: '>=3.5' +- pypi: https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl + name: pygments + version: 2.19.1 + sha256: 9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c + requires_dist: + - colorama>=0.4.6 ; extra == 'windows-terminal' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/51/ff/f6e8b8f39e08547faece4bd80f89d5a8de68a38b2d179cc1c4490ffa3286/pytest-7.4.4-py3-none-any.whl + name: pytest + version: 7.4.4 + sha256: b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8 + requires_dist: + - iniconfig + - packaging + - pluggy>=0.12,<2.0 + - exceptiongroup>=1.0.0rc8 ; python_full_version < '3.11' + - tomli>=1.0.0 ; python_full_version < '3.11' + - importlib-metadata>=0.12 ; python_full_version < '3.8' + - colorama ; sys_platform == 'win32' + - argcomplete ; extra == 'testing' + - attrs>=19.2.0 ; extra == 'testing' + - hypothesis>=3.56 ; extra == 'testing' + - mock ; extra == 'testing' + - nose ; extra == 'testing' + - pygments>=2.7.2 ; extra == 'testing' + - requests ; extra == 'testing' + - setuptools ; extra == 'testing' + - xmlschema ; extra == 'testing' + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/32/12/149a568c244b58912350c7fd3b997ed6b57889a22098564cc43c3e511b76/pytest_console_scripts-1.4.1-py3-none-any.whl + name: pytest-console-scripts + version: 1.4.1 + sha256: ad860a951a90eca4bd3bd1159b8f5428633ba4ea01abd5c9526b67a95f65437a + requires_dist: + - pytest>=4.0.0 + - importlib-metadata>=3.6 ; python_full_version < '3.10' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/36/3b/48e79f2cd6a61dbbd4807b4ed46cb564b4fd50a76166b1c4ea5c1d9e2371/pytest_cov-6.0.0-py3-none-any.whl + name: pytest-cov + version: 6.0.0 + sha256: eee6f1b9e61008bd34975a4d5bab25801eb31898b032dd55addc93e96fcaaa35 + requires_dist: + - pytest>=4.6 + - coverage[toml]>=7.5 + - fields ; extra == 'testing' + - hunter ; extra == 'testing' + - process-tests ; extra == 'testing' + - pytest-xdist ; extra == 'testing' + - virtualenv ; extra == 'testing' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/87/95/0166c428ea0ab4770f66de7804f2341caa9d8826d0022ce3d986d253d9c6/pytest_jupyter-0.10.1-py3-none-any.whl + name: pytest-jupyter + version: 0.10.1 + sha256: 644ae23821fe74344e1ff4dfcdbbcd1d6ffc191f654f435f67a19e6dce141684 + requires_dist: + - jupyter-core>=5.7 + - pytest>=7.0 + - ipykernel>=6.14 ; extra == 'client' + - jupyter-client>=7.4.0 ; extra == 'client' + - nbformat>=5.3 ; extra == 'client' + - myst-parser ; extra == 'docs' + - pydata-sphinx-theme ; extra == 'docs' + - sphinx ; extra == 'docs' + - sphinxcontrib-spelling ; extra == 'docs' + - ipykernel>=6.14 ; extra == 'server' + - jupyter-client>=7.4.0 ; extra == 'server' + - jupyter-server>=1.21 ; extra == 'server' + - nbformat>=5.3 ; extra == 'server' + - pytest-timeout ; extra == 'test' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/03/27/14af9ef8321f5edc7527e47def2a21d8118c6f329a9342cc61387a0c0599/pytest_timeout-2.3.1-py3-none-any.whl + name: pytest-timeout + version: 2.3.1 + sha256: 68188cb703edfc6a18fad98dc25a3c61e9f24d644b0b70f33af545219fc7813e + requires_dist: + - pytest>=7.0.0 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/50/b9/3615ebfc3120bb949c3725b50793f42c3230d0175d6cfd358ea8bb6928ff/pytest_tornasync-0.6.0.post2-py3-none-any.whl + name: pytest-tornasync + version: 0.6.0.post2 + sha256: 4b165b6ba76b5b228933598f456b71ba233f127991a52889788db0a950ad04ba + requires_dist: + - pytest>=3.0 + - tornado>=5.0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.2-hf636f53_101_cp313.conda + build_number: 101 + sha256: cc1984ee54261cee6a2db75c65fc7d2967bc8c6e912d332614df15244d7730ef + md5: a7902a3611fe773da3921cbbf7bc2c5c + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + license: Python-2.0 + purls: [] + size: 33233150 + timestamp: 1739803603242 + python_site_packages_path: lib/python3.13/site-packages +- pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl + name: python-dateutil + version: 2.9.0.post0 + sha256: a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 + requires_dist: + - six>=1.5 + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl + name: python-json-logger + version: 3.3.0 + sha256: dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7 + requires_dist: + - typing-extensions ; python_full_version < '3.10' + - orjson ; implementation_name != 'pypy' and extra == 'dev' + - msgspec ; implementation_name != 'pypy' and extra == 'dev' + - validate-pyproject[all] ; extra == 'dev' + - black ; extra == 'dev' + - pylint ; extra == 'dev' + - mypy ; extra == 'dev' + - pytest ; extra == 'dev' + - freezegun ; extra == 'dev' + - backports-zoneinfo ; python_full_version < '3.9' and extra == 'dev' + - tzdata ; extra == 'dev' + - build ; extra == 'dev' + - mkdocs ; extra == 'dev' + - mkdocs-material>=8.5 ; extra == 'dev' + - mkdocs-awesome-pages-plugin ; extra == 'dev' + - mdx-truly-sane-lists ; extra == 'dev' + - mkdocstrings[python] ; extra == 'dev' + - mkdocs-gen-files ; extra == 'dev' + - mkdocs-literate-nav ; extra == 'dev' + - mike ; extra == 'dev' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313.conda + build_number: 5 + sha256: 438225b241c5f9bddae6f0178a97f5870a89ecf927dfca54753e689907331442 + md5: 381bbd2a92c863f640a55b6ff3c35161 + constrains: + - python 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6217 + timestamp: 1723823393322 +- pypi: https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: pyyaml + version: 6.0.2 + sha256: 70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/c9/48/15d5f415504572dd4b92b52db5de7a5befc76bb75340ba9f36f71306a66d/pyzmq-26.2.1-cp313-cp313-manylinux_2_28_x86_64.whl + name: pyzmq + version: 26.2.1 + sha256: f1f31661a80cc46aba381bed475a9135b213ba23ca7ff6797251af31510920ce + requires_dist: + - cffi ; implementation_name == 'pypy' + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 282480 + timestamp: 1740379431762 +- pypi: https://files.pythonhosted.org/packages/be/8e/56d6f1e2d591f4d6cbcba446cac4a1b0dc4f584537e2071d9bcee8eeab6b/referencing-0.30.2-py3-none-any.whl + name: referencing + version: 0.30.2 + sha256: 449b6669b6121a9e96a7f9e410b245d471e8d48964c67113ce9afe50c8dd7bdf + requires_dist: + - attrs>=22.2.0 + - rpds-py>=0.7.0 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl + name: requests + version: 2.32.3 + sha256: 70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6 + requires_dist: + - charset-normalizer>=2,<4 + - idna>=2.5,<4 + - urllib3>=1.21.1,<3 + - certifi>=2017.4.17 + - pysocks>=1.5.6,!=1.5.7 ; extra == 'socks' + - chardet>=3.0.2,<6 ; extra == 'use-chardet-on-py3' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/97/ec/889fbc557727da0c34a33850950310240f2040f3b1955175fdb2b36a8910/requests_mock-1.12.1-py2.py3-none-any.whl + name: requests-mock + version: 1.12.1 + sha256: b1e37054004cdd5e56c84454cc7df12b25f90f382159087f4b6915aaeef39563 + requires_dist: + - requests>=2.22,<3 + - fixtures ; extra == 'fixture' + requires_python: '>=3.5' +- pypi: https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl + name: rfc3339-validator + version: 0.1.4 + sha256: 24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa + requires_dist: + - six + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*' +- pypi: https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl + name: rfc3986-validator + version: 0.1.1 + sha256: 2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9 + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*' +- pypi: https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl + name: rich + version: 13.9.4 + sha256: 6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90 + requires_dist: + - ipywidgets>=7.5.1,<9 ; extra == 'jupyter' + - markdown-it-py>=2.2.0 + - pygments>=2.13.0,<3.0.0 + - typing-extensions>=4.0.0,<5.0 ; python_full_version < '3.11' + requires_python: '>=3.8.0' +- pypi: https://files.pythonhosted.org/packages/f6/55/b3c18c04a460d951bf8e91f2abf46ce5b6426fb69784166a6a25827cb90a/rpds_py-0.23.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: rpds-py + version: 0.23.1 + sha256: f3a6cb95074777f1ecda2ca4fa7717caa9ee6e534f42b7575a8f0d4cb0c24013 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/c2/36/dfc1ebc0081e6d39924a2cc53654497f967a084a436bb64402dfce4254d9/ruamel.yaml-0.18.10-py3-none-any.whl + name: ruamel-yaml + version: 0.18.10 + sha256: 30f22513ab2301b3d2b577adc121c6471f28734d3d9728581245f1e76468b4f1 + requires_dist: + - ruamel-yaml-clib>=0.2.7 ; python_full_version < '3.13' and platform_python_implementation == 'CPython' + - ryd ; extra == 'docs' + - mercurial>5.7 ; extra == 'docs' + - ruamel-yaml-jinja2>=0.2 ; extra == 'jinja2' + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl + name: secretstorage + version: 3.3.3 + sha256: f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99 + requires_dist: + - cryptography>=2.0 + - jeepney>=0.6 + requires_python: '>=3.6' +- pypi: https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl + name: send2trash + version: 1.8.3 + sha256: 0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9 + requires_dist: + - pyobjc-framework-cocoa ; sys_platform == 'darwin' and extra == 'nativelib' + - pywin32 ; sys_platform == 'win32' and extra == 'nativelib' + - pyobjc-framework-cocoa ; sys_platform == 'darwin' and extra == 'objc' + - pywin32 ; sys_platform == 'win32' and extra == 'win32' + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*' +- pypi: https://files.pythonhosted.org/packages/a9/38/7d7362e031bd6dc121e5081d8cb6aa6f6fedf2b67bf889962134c6da4705/setuptools-75.8.2-py3-none-any.whl + name: setuptools + version: 75.8.2 + sha256: 558e47c15f1811c1fa7adbd0096669bf76c1d3f433f58324df69f3f5ecac4e8f + requires_dist: + - pytest>=6,!=8.1.* ; extra == 'test' + - virtualenv>=13.0.0 ; extra == 'test' + - wheel>=0.44.0 ; extra == 'test' + - pip>=19.1 ; extra == 'test' + - packaging>=24.2 ; extra == 'test' + - jaraco-envs>=2.2 ; extra == 'test' + - pytest-xdist>=3 ; extra == 'test' + - jaraco-path>=3.7.2 ; extra == 'test' + - build[virtualenv]>=1.0.3 ; extra == 'test' + - filelock>=3.4.0 ; extra == 'test' + - ini2toml[lite]>=0.14 ; extra == 'test' + - tomli-w>=1.0.0 ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-perf ; sys_platform != 'cygwin' and extra == 'test' + - jaraco-develop>=7.21 ; python_full_version >= '3.9' and sys_platform != 'cygwin' and extra == 'test' + - pytest-home>=0.5 ; extra == 'test' + - pytest-subprocess ; extra == 'test' + - pyproject-hooks!=1.1 ; extra == 'test' + - jaraco-test>=5.5 ; extra == 'test' + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pygments-github-lexers==0.0.5 ; extra == 'doc' + - sphinx-favicon ; extra == 'doc' + - sphinx-inline-tabs ; extra == 'doc' + - sphinx-reredirects ; extra == 'doc' + - sphinxcontrib-towncrier ; extra == 'doc' + - sphinx-notfound-page>=1,<2 ; extra == 'doc' + - pyproject-hooks!=1.1 ; extra == 'doc' + - towncrier<24.7 ; extra == 'doc' + - packaging>=24.2 ; extra == 'core' + - more-itertools>=8.8 ; extra == 'core' + - jaraco-text>=3.7 ; extra == 'core' + - importlib-metadata>=6 ; python_full_version < '3.10' and extra == 'core' + - tomli>=2.0.1 ; python_full_version < '3.11' and extra == 'core' + - wheel>=0.43.0 ; extra == 'core' + - platformdirs>=4.2.2 ; extra == 'core' + - jaraco-collections ; extra == 'core' + - jaraco-functools>=4 ; extra == 'core' + - packaging ; extra == 'core' + - more-itertools ; extra == 'core' + - pytest-checkdocs>=2.4 ; extra == 'check' + - pytest-ruff>=0.2.1 ; sys_platform != 'cygwin' and extra == 'check' + - ruff>=0.8.0 ; sys_platform != 'cygwin' and extra == 'check' + - pytest-cov ; extra == 'cover' + - pytest-enabler>=2.2 ; extra == 'enabler' + - pytest-mypy ; extra == 'type' + - mypy==1.14.* ; extra == 'type' + - importlib-metadata>=7.0.2 ; python_full_version < '3.10' and extra == 'type' + - jaraco-develop>=7.21 ; sys_platform != 'cygwin' and extra == 'type' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl + name: shellingham + version: 1.5.4 + sha256: 7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl + name: six + version: 1.17.0 + sha256: 4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl + name: sniffio + version: 1.3.1 + sha256: 2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/ed/dc/c02e01294f7265e63a7315fe086dd1df7dacb9f840a804da846b96d01b96/snowballstemmer-2.2.0-py2.py3-none-any.whl + name: snowballstemmer + version: 2.2.0 + sha256: c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a +- pypi: https://files.pythonhosted.org/packages/d1/c2/fe97d779f3ef3b15f05c94a2f1e3d21732574ed441687474db9d342a7315/soupsieve-2.6-py3-none-any.whl + name: soupsieve + version: '2.6' + sha256: e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/26/60/1ddff83a56d33aaf6f10ec8ce84b4c007d9368b21008876fceda7e7381ef/sphinx-8.1.3-py3-none-any.whl + name: sphinx + version: 8.1.3 + sha256: 09719015511837b76bf6e03e42eb7595ac8c2e41eeb9c29c5b755c6b677992a2 + requires_dist: + - sphinxcontrib-applehelp>=1.0.7 + - sphinxcontrib-devhelp>=1.0.6 + - sphinxcontrib-htmlhelp>=2.0.6 + - sphinxcontrib-jsmath>=1.0.1 + - sphinxcontrib-qthelp>=1.0.6 + - sphinxcontrib-serializinghtml>=1.1.9 + - jinja2>=3.1 + - pygments>=2.17 + - docutils>=0.20,<0.22 + - snowballstemmer>=2.2 + - babel>=2.13 + - alabaster>=0.7.14 + - imagesize>=1.3 + - requests>=2.30.0 + - packaging>=23.0 + - tomli>=2 ; python_full_version < '3.11' + - colorama>=0.4.6 ; sys_platform == 'win32' + - sphinxcontrib-websupport ; extra == 'docs' + - flake8>=6.0 ; extra == 'lint' + - ruff==0.6.9 ; extra == 'lint' + - mypy==1.11.1 ; extra == 'lint' + - sphinx-lint>=0.9 ; extra == 'lint' + - types-colorama==0.4.15.20240311 ; extra == 'lint' + - types-defusedxml==0.7.0.20240218 ; extra == 'lint' + - types-docutils==0.21.0.20241005 ; extra == 'lint' + - types-pillow==10.2.0.20240822 ; extra == 'lint' + - types-pygments==2.18.0.20240506 ; extra == 'lint' + - types-requests==2.32.0.20240914 ; extra == 'lint' + - types-urllib3==1.26.25.14 ; extra == 'lint' + - tomli>=2 ; extra == 'lint' + - pyright==1.1.384 ; extra == 'lint' + - pytest>=6.0 ; extra == 'lint' + - pytest>=8.0 ; extra == 'test' + - defusedxml>=0.7.1 ; extra == 'test' + - cython>=3.0 ; extra == 'test' + - setuptools>=70.0 ; extra == 'test' + - typing-extensions>=4.9 ; extra == 'test' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl + name: sphinxcontrib-applehelp + version: 2.0.0 + sha256: 4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5 + requires_dist: + - ruff==0.5.5 ; extra == 'lint' + - mypy ; extra == 'lint' + - types-docutils ; extra == 'lint' + - sphinx>=5 ; extra == 'standalone' + - pytest ; extra == 'test' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl + name: sphinxcontrib-devhelp + version: 2.0.0 + sha256: aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2 + requires_dist: + - ruff==0.5.5 ; extra == 'lint' + - mypy ; extra == 'lint' + - types-docutils ; extra == 'lint' + - sphinx>=5 ; extra == 'standalone' + - pytest ; extra == 'test' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/70/12/d9b6bf8093906108017f3cdbecae3e2b3b4963c5112b28f0cd482b433182/sphinxcontrib_github_alt-1.2-py2.py3-none-any.whl + name: sphinxcontrib-github-alt + version: '1.2' + sha256: cdd1f61090e9ca1f317283dc85b311d788864d7e41baa479882c9fc914b43641 + requires_dist: + - docutils + - sphinx +- pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl + name: sphinxcontrib-htmlhelp + version: 2.1.0 + sha256: 166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8 + requires_dist: + - ruff==0.5.5 ; extra == 'lint' + - mypy ; extra == 'lint' + - types-docutils ; extra == 'lint' + - sphinx>=5 ; extra == 'standalone' + - pytest ; extra == 'test' + - html5lib ; extra == 'test' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl + name: sphinxcontrib-jsmath + version: 1.0.1 + sha256: 2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178 + requires_dist: + - pytest ; extra == 'test' + - flake8 ; extra == 'test' + - mypy ; extra == 'test' + requires_python: '>=3.5' +- pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl + name: sphinxcontrib-qthelp + version: 2.0.0 + sha256: b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb + requires_dist: + - ruff==0.5.5 ; extra == 'lint' + - mypy ; extra == 'lint' + - types-docutils ; extra == 'lint' + - sphinx>=5 ; extra == 'standalone' + - pytest ; extra == 'test' + - defusedxml>=0.7.1 ; extra == 'test' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl + name: sphinxcontrib-serializinghtml + version: 2.0.0 + sha256: 6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331 + requires_dist: + - ruff==0.5.5 ; extra == 'lint' + - mypy ; extra == 'lint' + - types-docutils ; extra == 'lint' + - sphinx>=5 ; extra == 'standalone' + - pytest ; extra == 'test' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/03/30/05efe7261eac789cf3ba28ef5dfb76d719df30baae6881cb54a6801c0e8f/sphinxcontrib_spelling-8.0.1-py3-none-any.whl + name: sphinxcontrib-spelling + version: 8.0.1 + sha256: 21704857c1b5e26e06bb07d15927df41c9d7ecfc1843169ecd22cb59f24069ac + requires_dist: + - pyenchant>=3.1.1 + - sphinx>=3.0.0 + - requests>=2.32.3 + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - coverage>=4.0,!=4.4 ; extra == 'test' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl + name: stack-data + version: 0.6.3 + sha256: d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695 + requires_dist: + - executing>=1.2.0 + - asttokens>=2.1.0 + - pure-eval + - pytest ; extra == 'tests' + - typeguard ; extra == 'tests' + - pygments ; extra == 'tests' + - littleutils ; extra == 'tests' + - cython ; extra == 'tests' +- pypi: https://files.pythonhosted.org/packages/56/e4/879ef1dbd6ddea1c77c0078cd59b503368b0456bcca7d063a870ca2119d3/strict-rfc3339-0.7.tar.gz + name: strict-rfc3339 + version: '0.7' + sha256: 5cad17bedfc3af57b399db0fed32771f18fc54bbd917e85546088607ac5e1277 +- pypi: https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl + name: terminado + version: 0.18.1 + sha256: a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0 + requires_dist: + - ptyprocess ; os_name != 'nt' + - pywinpty>=1.1.0 ; os_name == 'nt' + - tornado>=6.1.0 + - myst-parser ; extra == 'docs' + - pydata-sphinx-theme ; extra == 'docs' + - sphinx ; extra == 'docs' + - pre-commit ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest>=7.0 ; extra == 'test' + - mypy~=1.6 ; extra == 'typing' + - traitlets>=5.11.1 ; extra == 'typing' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl + name: tinycss2 + version: 1.4.0 + sha256: 3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289 + requires_dist: + - webencodings>=0.4 + - sphinx ; extra == 'doc' + - sphinx-rtd-theme ; extra == 'doc' + - pytest ; extra == 'test' + - ruff ; extra == 'test' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- pypi: https://files.pythonhosted.org/packages/c7/18/c86eb8e0202e32dd3df50d43d7ff9854f8e0603945ff398974c1d91ac1ef/tomli_w-1.2.0-py3-none-any.whl + name: tomli-w + version: 1.2.0 + sha256: 188306098d013b691fcadc011abd66727d3c414c571bb01b1a174ba8c983cf90 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/f9/b6/a447b5e4ec71e13871be01ba81f5dfc9d0af7e473da256ff46bc0e24026f/tomlkit-0.13.2-py3-none-any.whl + name: tomlkit + version: 0.13.2 + sha256: 7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/22/55/b78a464de78051a30599ceb6983b01d8f732e6f69bf37b4ed07f642ac0fc/tornado-6.4.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: tornado + version: 6.4.2 + sha256: bca9eb02196e789c9cb5c3c7c0f04fb447dc2adffd95265b2c7223a8a615ccbf + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl + name: traitlets + version: 5.14.3 + sha256: b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f + requires_dist: + - myst-parser ; extra == 'docs' + - pydata-sphinx-theme ; extra == 'docs' + - sphinx ; extra == 'docs' + - argcomplete>=3.0.3 ; extra == 'test' + - mypy>=1.7.0 ; extra == 'test' + - pre-commit ; extra == 'test' + - pytest-mock ; extra == 'test' + - pytest-mypy-testing ; extra == 'test' + - pytest>=7.0,<8.2 ; extra == 'test' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/ef/bf/44195f3d9c3c4fe4cccf1c261c80d50781b9e8a0a6febf084c09c66740ff/trove_classifiers-2025.3.3.18-py3-none-any.whl + name: trove-classifiers + version: 2025.3.3.18 + sha256: 215630da61cf8757c373f81b602fc1283ec5a691cf12c5f9f96f11d6ad5fc7f2 +- pypi: https://files.pythonhosted.org/packages/0f/b3/ca41df24db5eb99b00d97f89d7674a90cb6b3134c52fb8121b6d8d30f15c/types_python_dateutil-2.9.0.20241206-py3-none-any.whl + name: types-python-dateutil + version: 2.9.0.20241206 + sha256: e248a4bc70a486d3e3ec84d0dc30eec3a5f979d6e7ee4123ae043eedbb987f53 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl + name: typing-extensions + version: 4.12.2 + sha256: 04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + purls: [] + size: 122921 + timestamp: 1737119101255 +- pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl + name: uri-template + version: 1.3.0 + sha256: a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363 + requires_dist: + - types-pyyaml ; extra == 'dev' + - mypy ; extra == 'dev' + - flake8 ; extra == 'dev' + - flake8-annotations ; extra == 'dev' + - flake8-bandit ; extra == 'dev' + - flake8-bugbear ; extra == 'dev' + - flake8-commas ; extra == 'dev' + - flake8-comprehensions ; extra == 'dev' + - flake8-continuation ; extra == 'dev' + - flake8-datetimez ; extra == 'dev' + - flake8-docstrings ; extra == 'dev' + - flake8-import-order ; extra == 'dev' + - flake8-literal ; extra == 'dev' + - flake8-modern-annotations ; extra == 'dev' + - flake8-noqa ; extra == 'dev' + - flake8-pyproject ; extra == 'dev' + - flake8-requirements ; extra == 'dev' + - flake8-typechecking-import ; extra == 'dev' + - flake8-use-fstring ; extra == 'dev' + - pep8-naming ; extra == 'dev' + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl + name: urllib3 + version: 2.3.0 + sha256: 1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df + requires_dist: + - brotli>=1.0.9 ; platform_python_implementation == 'CPython' and extra == 'brotli' + - brotlicffi>=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'brotli' + - h2>=4,<5 ; extra == 'h2' + - pysocks>=1.5.6,!=1.5.7,<2.0 ; extra == 'socks' + - zstandard>=0.18.0 ; extra == 'zstd' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/43/99/3ec6335ded5b88c2f7ed25c56ffd952546f7ed007ffb1e1539dc3b57015a/userpath-1.9.2-py3-none-any.whl + name: userpath + version: 1.9.2 + sha256: 2cbf01a23d655a1ff8fc166dfb78da1b641d1ceabf0fe5f970767d380b14e89d + requires_dist: + - click + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/66/32/ad9944c9716360c82fb62516aca72bdeaedf7991483383f3a06734cb2cf4/uv-0.6.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: uv + version: 0.6.5 + sha256: 15dae245979add192c4845947da1a9141f95c19403d1c0d75019182e6882e7d4 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/c2/eb/c6db6e3001d58c6a9e67c74bb7b4206767caa3ccc28c6b9eaf4c23fb4e34/virtualenv-20.29.3-py3-none-any.whl + name: virtualenv + version: 20.29.3 + sha256: 3e3d00f5807e83b234dfb6122bf37cfadf4be216c53a49ac059d02414f819170 + requires_dist: + - distlib>=0.3.7,<1 + - filelock>=3.12.2,<4 + - importlib-metadata>=6.6 ; python_full_version < '3.8' + - platformdirs>=3.9.1,<5 + - furo>=2023.7.26 ; extra == 'docs' + - proselint>=0.13 ; extra == 'docs' + - sphinx>=7.1.2,!=7.3 ; extra == 'docs' + - sphinx-argparse>=0.4 ; extra == 'docs' + - sphinxcontrib-towncrier>=0.2.1a0 ; extra == 'docs' + - towncrier>=23.6 ; extra == 'docs' + - covdefaults>=2.3 ; extra == 'test' + - coverage-enable-subprocess>=1 ; extra == 'test' + - coverage>=7.2.7 ; extra == 'test' + - flaky>=3.7 ; extra == 'test' + - packaging>=23.1 ; extra == 'test' + - pytest-env>=0.8.2 ; extra == 'test' + - pytest-freezer>=0.4.8 ; (python_full_version >= '3.13' and platform_python_implementation == 'CPython' and sys_platform == 'win32' and extra == 'test') or (platform_python_implementation == 'PyPy' and extra == 'test') + - pytest-mock>=3.11.1 ; extra == 'test' + - pytest-randomly>=3.12 ; extra == 'test' + - pytest-timeout>=2.1 ; extra == 'test' + - pytest>=7.4 ; extra == 'test' + - setuptools>=68 ; extra == 'test' + - time-machine>=2.10 ; platform_python_implementation == 'CPython' and extra == 'test' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl + name: wcwidth + version: 0.2.13 + sha256: 3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859 + requires_dist: + - backports-functools-lru-cache>=1.2.1 ; python_full_version < '3.2' +- pypi: https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl + name: webcolors + version: 24.11.1 + sha256: 515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl + name: webencodings + version: 0.5.1 + sha256: a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 +- pypi: https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl + name: websocket-client + version: 1.8.0 + sha256: 17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526 + requires_dist: + - sphinx>=6.0 ; extra == 'docs' + - sphinx-rtd-theme>=1.1.0 ; extra == 'docs' + - myst-parser>=2.0.0 ; extra == 'docs' + - python-socks ; extra == 'optional' + - wsaccel ; extra == 'optional' + - websockets ; extra == 'test' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/52/24/ab44c871b0f07f491e5d2ad12c9bd7358e527510618cb1b803a88e986db1/werkzeug-3.1.3-py3-none-any.whl + name: werkzeug + version: 3.1.3 + sha256: 54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e + requires_dist: + - markupsafe>=2.1.1 + - watchdog>=2.3 ; extra == 'watchdog' + requires_python: '>=3.9' +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + license: Zlib + license_family: Other + purls: [] + size: 92286 + timestamp: 1727963153079 +- pypi: https://files.pythonhosted.org/packages/fa/18/89ac62eac46b69948bf35fcd90d37103f38722968e2981f752d69081ec4d/zstandard-0.23.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: zstandard + version: 0.23.0 + sha256: 6f77fa49079891a4aab203d0b1744acc85577ed16d767b52fc089d83faf8d8ed + requires_dist: + - cffi>=1.17 ; platform_python_implementation == 'PyPy' + - cffi>=1.17 ; extra == 'cffi' + requires_python: '>=3.8' diff --git a/src/pyproject.toml b/src/pyproject.toml new file mode 100644 index 000000000..1fe6f082a --- /dev/null +++ b/src/pyproject.toml @@ -0,0 +1,321 @@ +[build-system] +requires = [ + "hatchling>=1.11", + "hatch-jupyter-builder>=0.5", + "jupyterlab>=4.6.0a0,<4.7", +] +build-backend = "hatchling.build" + +[project] +name = "notebook" +description = "Jupyter Notebook - A web-based notebook environment for interactive computing" +readme = "README.md" +license = { file = "LICENSE" } +requires-python = ">=3.9" +authors = [ + { name = "Jupyter Development Team", email = "jupyter@googlegroups.com" }, +] +keywords = [ + "Jupyter", + "JupyterLab", + "Notebook", +] +classifiers = [ + "Framework :: Jupyter", + "Intended Audience :: Developers", + "Intended Audience :: Science/Research", + "Intended Audience :: System Administrators", + "License :: OSI Approved :: BSD License", + "Programming Language :: Python", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Typing :: Typed", +] +dependencies = [ + "jupyter_server>=2.4.0,<3", + "jupyterlab>=4.6.0a0,<4.7", + "jupyterlab_server>=2.28.0,<3", + "notebook_shim>=0.2,<0.3", + "tornado>=6.2.0", +] +dynamic = ["version"] + +[project.scripts] +jupyter-notebook = "notebook.app:main" + +[project.urls] +Documentation = "https://jupyter-notebook.readthedocs.io/" +Homepage = "https://github.com/jupyter/notebook" +Source = "https://github.com/jupyter/notebook" +Tracker = "https://github.com/jupyter/notebook/issues" + +[project.optional-dependencies] +test = [ + "nbval", + "pytest>=7.0", + "requests", + "pytest-tornasync", + "pytest-timeout", + "pytest-console-scripts", + "ipykernel", + "jupyter_server[test]>=2.4.0,<3", + "jupyterlab_server[test]>=2.28.0,<3", + "importlib-resources>=5.0;python_version<\"3.10\"", +] +docs = [ + "myst_parser", + "nbsphinx", + "pydata-sphinx-theme", + "sphinx>=1.3.6", + "sphinxcontrib_github_alt", + "sphinxcontrib_spelling" +] +dev = [ + "pre-commit", + "hatch" +] + +[tool.hatch.version] +path = "notebook/_version.py" +validate-bump = false + +[tool.hatch.build.targets.wheel.shared-data] +"notebook/labextension" = "share/jupyter/labextensions/@jupyter-notebook/lab-extension" +"notebook/schemas/@jupyter-notebook" = "share/jupyter/lab/schemas/@jupyter-notebook" +"jupyter-config/jupyter_server_config.d" = "etc/jupyter/jupyter_server_config.d" +"notebook.svg" = "share/icons/hicolor/scalable/apps/notebook.svg" +"jupyter-notebook.desktop" = "share/applications/jupyter-notebook.desktop" + +[tool.hatch.build.targets.sdist] +artifacts = [ + "notebook/labextension", + "notebook/static", + "notebook/schemas/@jupyter-notebook", + "notebook/templates", + "notebook.svg", + "jupyter-notebook.desktop", +] +include = [ + "/jupyter-config", + "/notebook", + "/tests", + "/package.json", + "/install.json", + "/ts*.json", + "/*.md" +] + +[tool.hatch.build.targets.wheel] +artifacts = [ + "notebook/static", + "notebook/templates", +] +include = ["/notebook"] +exclude = [ + "notebook/labextension", + "notebook/schemas/@jupyter-notebook", +] + +[tool.hatch.envs.docs] +features = ["docs"] +[tool.hatch.envs.docs.scripts] +build = "make -C docs html SPHINXOPTS='-W'" +serve = "cd docs/build/html && python -m http.server" + +[tool.hatch.envs.default.scripts] +npm_pack = "jlpm lerna exec -- npm pack" +js_test = "jlpm run build:test && jlpm run test" + +[tool.hatch.envs.test] +features = ["test"] +[tool.hatch.envs.test.scripts] +test = "python -m pytest -vv {args}" +nowarn = "test -W default {args}" + +[tool.hatch.envs.cov] +features = ["test"] +dependencies = ["coverage[toml]", "pytest-cov"] +[tool.hatch.envs.cov.scripts] +test = "python -m pytest -vv --cov notebook --cov-branch --cov-report term-missing:skip-covered {args}" +nowarn = "test -W default {args}" + +[tool.hatch.envs.lint] +detached = true +dependencies = ["pre-commit"] +[tool.hatch.envs.lint.scripts] +build = [ + "pre-commit run --all-files ruff", + "pre-commit run --all-files ruff-format" +] + +[tool.hatch.envs.typing] +dependencies = [ "pre-commit"] +detached = true +[tool.hatch.envs.typing.scripts] +test = "pre-commit run --all-files --hook-stage manual mypy" + +[tool.hatch.build.hooks.jupyter-builder] +dependencies = ["hatch-jupyter-builder>=0.5"] +build-function = "hatch_jupyter_builder.npm_builder" +ensured-targets = [ + "notebook/labextension/static/style.js", +] +install-pre-commit-hook = true + +[tool.hatch.build.hooks.jupyter-builder.build-kwargs] +build_cmd = "build:prod" +source_dir = "packages" +build_dir = "notebook/static" +npm = ["jlpm"] + +[tool.hatch.build.hooks.jupyter-builder.editable-build-kwargs] +build_cmd = "build" +source_dir = "packages" +build_dir = "notebook/static" +npm = ["jlpm"] + +[tool.jupyter-releaser.options] +version-cmd = "jlpm run release:bump --force --skip-commit" + +[tool.jupyter-releaser.hooks] +before-bump-version = [ + "python -m pip install -U \"jupyterlab>=4.6.0a0,<4.7\"", + "jlpm", + "jlpm run build:utils", + "python -m pip install hatch" +] +before-build-npm = [ + "jlpm clean", + "jlpm build:prod" +] +before-build-python = [ + "jlpm clean" +] + +[tool.pytest.ini_options] +minversion = "6.0" +xfail_strict = true +log_cli_level = "info" +addopts = [ + "-ra", "--durations=10", "--color=yes", "--doctest-modules", + "--showlocals", "--strict-markers", "--strict-config" +] +testpaths = [ + "tests/", +] +timeout = 300 +filterwarnings = [ + "error", + "ignore:There is no current event loop:DeprecationWarning", + "ignore:make_current is deprecated; start the event loop first", + "ignore:clear_current is deprecated", + "ignore:datetime.utc.* is deprecated", + "ignore:datetime.datetime.* is deprecated", +] + +[tool.coverage.report] +exclude_lines = [ + "pragma: no cover", + "def __repr__", + "if self.debug:", + "if settings.DEBUG", + "raise AssertionError", + "raise NotImplementedError", + "if 0:", + "if __name__ == .__main__.:", + "class .*\bProtocol\\):", +"@(abc\\.)?abstractmethod", +] + +[tool.coverage.run] +relative_files = true +source = ["notebook"] + +[tool.mypy] +files = "notebook" +python_version = "3.9" +strict = true +enable_error_code = ["ignore-without-code", "redundant-expr", "truthy-bool"] +warn_unreachable = true + +[tool.ruff] +line-length = 100 + +[tool.ruff.format] +docstring-code-format = true + +[tool.ruff.lint] +extend-select = [ + "B", # flake8-bugbear + "I", # isort + "ARG", # flake8-unused-arguments + "C4", # flake8-comprehensions + "EM", # flake8-errmsg + "ICN", # flake8-import-conventions + "G", # flake8-logging-format + "PGH", # pygrep-hooks + "PIE", # flake8-pie + "PL", # pylint + "PTH", # flake8-use-pathlib + "PT", # flake8-pytest-style + "RET", # flake8-return + "RUF", # Ruff-specific + "SIM", # flake8-simplify + "T20", # flake8-print + "UP", # pyupgrade + "YTT", # flake8-2020 + "EXE", # flake8-executable + "PYI", # flake8-pyi + "S", # flake8-bandit +] +ignore = [ + "PLR", # Design related pylint codes + "C408", "C416", # Unnecessary `dict` call (rewrite as a literal) + "RUF012", # Mutable class attributes should be annotated with `typing.ClassVar` +] + +[tool.ruff.lint.per-file-ignores] +# S101 Use of `assert` detected +# F841 Local variable `foo` is assigned to but never used +"tests/*" = ["S101", "F841", "ARG", "PTH"] +"docs/source/conf.py" = ["PTH"] +"ui-tests/test/jupyter_server_config.py" = ["F821"] +"*.ipynb" = ["E402", "B018", "E501", "T201", "RET"] + +[tool.interrogate] +ignore-init-module=true +ignore-private=true +ignore-semiprivate=true +ignore-property-decorators=true +ignore-nested-functions=true +ignore-nested-classes=true +fail-under=100 +exclude = ["tests", "ui-tests", "docs", "node_modules", "setup.py"] + +[tool.repo-review] +ignore = ["GH102", "PC180", "PC111"] + +[tool.pixi.project] +channels = ["conda-forge"] +platforms = ["linux-64"] + +[tool.pixi.pypi-dependencies] +notebook = { path = ".", editable = true, extras = ["dev", "docs"] } + +[tool.pixi.environments] +default = { solve-group = "default" } +dev = { features = ["dev"], solve-group = "default" } +docs = { features = ["docs"], solve-group = "default" } +test = { features = ["test"], solve-group = "default" } + +[tool.pixi.tasks] +develop = "jlpm develop" +start = "jupyter notebook --no-browser --ServerApp.token='' --ServerApp.allow_remote_access=True" + +[tool.pixi.dependencies] +pip = ">=25.0.1,<26" +nodejs = "22.*" +python = ">=3.12.0,<3.14" diff --git a/src/setup.py b/src/setup.py new file mode 100644 index 000000000..d3101865a --- /dev/null +++ b/src/setup.py @@ -0,0 +1,3 @@ +# setup.py shim for use with versions of JupyterLab that require +# it for extensions. +__import__("setuptools").setup() diff --git a/src/tsconfig.eslint.json b/src/tsconfig.eslint.json new file mode 100644 index 000000000..7a9677f89 --- /dev/null +++ b/src/tsconfig.eslint.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfigbase", + "include": [ + "packages/**/*", + "app/**/*", + "buildutils/**/*", + "ui-tests/**/*", + "docs/**/*", + ".eslintrc.js" + ], + "compilerOptions": { + "types": ["jest"] + } +} diff --git a/src/tsconfigbase.json b/src/tsconfigbase.json new file mode 100644 index 000000000..b2b930479 --- /dev/null +++ b/src/tsconfigbase.json @@ -0,0 +1,22 @@ +{ + "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, + "strict": true, + "strictNullChecks": true, + "target": "ES2018", + "types": [], + "lib": ["DOM", "DOM.Iterable", "ES2018", "ES2020.Intl"] + } +} diff --git a/src/tsconfigbase.test.json b/src/tsconfigbase.test.json new file mode 100644 index 000000000..d2be746e6 --- /dev/null +++ b/src/tsconfigbase.test.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "declaration": true, + "noEmitOnError": true, + "noImplicitAny": true, + "noUnusedLocals": true, + "module": "commonjs", + "moduleResolution": "node", + "target": "ES2018", + "lib": ["DOM", "DOM.iterable"], + "types": ["jest", "node"], + "jsx": "react", + "resolveJsonModule": true, + "esModuleInterop": true, + "strictNullChecks": true + } +} diff --git a/src/yarn.lock b/src/yarn.lock new file mode 100644 index 000000000..5d1a39c57 --- /dev/null +++ b/src/yarn.lock @@ -0,0 +1,20721 @@ +# 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 + +"@antfu/install-pkg@npm:^1.1.0": + version: 1.1.0 + resolution: "@antfu/install-pkg@npm:1.1.0" + dependencies: + package-manager-detector: ^1.3.0 + tinyexec: ^1.0.1 + checksum: e20b7cd1c37eff832cc878cddd794f8c3779175681cf6d75c4cc1ae1475526126a4c1f71fa027161aa1ee35a8850782be9ca0ec01b621893defebe97ba9dc70e + languageName: node + linkType: hard + +"@antfu/utils@npm:^9.2.0": + version: 9.2.1 + resolution: "@antfu/utils@npm:9.2.1" + checksum: 7b5decf2f0bdb4c8170d5d4c59e406ab480e4e247f981768f8349f0a72da5d5fe5236f63018f2ee71ab67d93c96e6ec1931f09ba132d5a15d0306c88a544297c + languageName: node + linkType: hard + +"@arcanis/slice-ansi@npm:^1.1.1": + version: 1.1.1 + resolution: "@arcanis/slice-ansi@npm:1.1.1" + dependencies: + grapheme-splitter: ^1.0.4 + checksum: 14ed60cb45750d386c64229ac7bab20e10eedc193503fa4decff764162d329d6d3363ed2cd3debec833186ee54affe4f824f6e8eff531295117fd1ebda200270 + 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, @babel/code-frame@npm:^7.23.5, @babel/code-frame@npm:^7.26.2": + version: 7.26.2 + resolution: "@babel/code-frame@npm:7.26.2" + dependencies: + "@babel/helper-validator-identifier": ^7.25.9 + js-tokens: ^4.0.0 + picocolors: ^1.0.0 + checksum: db13f5c42d54b76c1480916485e6900748bbcb0014a8aca87f50a091f70ff4e0d0a6db63cade75eb41fcc3d2b6ba0a7f89e343def4f96f00269b41b8ab8dd7b8 + languageName: node + linkType: hard + +"@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.23.0 + resolution: "@babel/core@npm:7.23.0" + dependencies: + "@ampproject/remapping": ^2.2.0 + "@babel/code-frame": ^7.22.13 + "@babel/generator": ^7.23.0 + "@babel/helper-compilation-targets": ^7.22.15 + "@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.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: cebd9b48dbc970a7548522f207f245c69567e5ea17ebb1a4e4de563823cf20a01177fe8d2fe19b6e1461361f92fa169fd0b29f8ee9d44eeec84842be1feee5f2 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.23.0, @babel/generator@npm:^7.23.6, @babel/generator@npm:^7.7.2": + version: 7.23.6 + resolution: "@babel/generator@npm:7.23.6" + dependencies: + "@babel/types": ^7.23.6 + "@jridgewell/gen-mapping": ^0.3.2 + "@jridgewell/trace-mapping": ^0.3.17 + jsesc: ^2.5.1 + checksum: 1a1a1c4eac210f174cd108d479464d053930a812798e09fee069377de39a893422df5b5b146199ead7239ae6d3a04697b45fc9ac6e38e0f6b76374390f91fc6c + 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.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, @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.15 + "@babel/types": ^7.23.0 + checksum: e44542257b2d4634a1f979244eb2a4ad8e6d75eb6761b4cfceb56b562f7db150d134bc538c8e6adca3783e3bc31be949071527aa8e3aab7867d1ad2d84a26e10 + 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": + version: 7.23.0 + resolution: "@babel/helper-member-expression-to-functions@npm:7.23.0" + dependencies: + "@babel/types": ^7.23.0 + checksum: 494659361370c979ada711ca685e2efe9460683c36db1b283b446122596602c901e291e09f2f980ecedfe6e0f2bd5386cb59768285446530df10c14df1024e75 + 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.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.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.20 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 6e2afffb058cf3f8ce92f5116f710dda4341c81cfcd872f9a0197ea594f7ce0ab3cb940b0590af2fe99e60d2e5448bfba6bca8156ed70a2ed4be2adc8586c891 + 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.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.20 + "@babel/helper-wrap-function": ^7.22.20 + peerDependencies: + "@babel/core": ^7.0.0 + 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.20 + resolution: "@babel/helper-replace-supers@npm:7.22.20" + dependencies: + "@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: a0008332e24daedea2e9498733e3c39b389d6d4512637e000f96f62b797e702ee24a407ccbcd7a236a551590a38f31282829a8ef35c50a3c0457d88218cae639 + 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.25.9": + version: 7.25.9 + resolution: "@babel/helper-string-parser@npm:7.25.9" + checksum: 6435ee0849e101681c1849868278b5aee82686ba2c1e27280e5e8aca6233af6810d39f8e4e693d2f2a44a3728a6ccfd66f72d71826a94105b86b731697cdfa99 + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.22.20, @babel/helper-validator-identifier@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-identifier@npm:7.25.9" + checksum: 5b85918cb1a92a7f3f508ea02699e8d2422fe17ea8e82acd445006c0ef7520fbf48e3dbcdaf7b0a1d571fc3a2715a29719e5226636cb6042e15fe6ed2a590944 + 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.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.19 + checksum: 221ed9b5572612aeb571e4ce6a256f2dee85b3c9536f1dd5e611b0255e5f59a3d0ec392d8d46d4152149156a8109f92f20379b1d6d36abb613176e0e33f05fca + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.23.0": + version: 7.26.10 + resolution: "@babel/helpers@npm:7.26.10" + dependencies: + "@babel/template": ^7.26.9 + "@babel/types": ^7.26.10 + checksum: daa3689024a4fc5e024fea382915c6fb0fde15cf1b2f6093435725c79edccbef7646d4a656b199c046ff5c61846d1b3876d6096b7bf0635823de6aaff2a1e1a4 + 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.23.0, @babel/parser@npm:^7.23.6, @babel/parser@npm:^7.26.9": + version: 7.26.10 + resolution: "@babel/parser@npm:7.26.10" + dependencies: + "@babel/types": ^7.26.10 + bin: + parser: ./bin/babel-parser.js + checksum: 81f9af962aea55a2973d213dffc6191939df7eba0511ba585d23f0d838931f5fca2efb83ae382e4b9bb486f20ae1b2607cb1b8be49af89e9f011fb4355727f47 + 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.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: 0cfe925cc3b5a3ad407e2253fab3ceeaa117a4b291c9cb245578880872999bca91bd83ffa0128ae9ca356330702e1ef1dcb26804f28d2cef678239caf629f73e + 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.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: cd6dd454ccc2766be551e4f8a04b1acc2aa539fa19e5c7501c56cc2f8cc921dd41a7ffb78455b4c4b2f954fcab8ca4561ba7c9c7bd5af9f19465243603d18cc3 + 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.23.0 + resolution: "@babel/plugin-transform-modules-amd@npm:7.23.0" + dependencies: + "@babel/helper-module-transforms": ^7.23.0 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 5d92875170a37b8282d4bcd805f55829b8fab0f9c8d08b53d32a7a0bfdc62b868e489b52d329ae768ecafc0c993eed0ad7a387baa673ac33211390a9f833ab5d + languageName: node + linkType: hard + +"@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.23.0 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-simple-access": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7fb25997194053e167c4207c319ff05362392da841bd9f42ddb3caf9c8798a5d203bd926d23ddf5830fdf05eddc82c2810f40d1287e3a4f80b07eff13d1024b5 + languageName: node + linkType: hard + +"@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.23.0 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.20 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2d481458b22605046badea2317d5cc5c94ac3031c2293e34c96f02063f5b02af0979c4da6a8fbc67cc249541575dc9c6d710db6b919ede70b7337a22d9fd57a7 + 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.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: f702634f2b97e5260dbec0d4bde05ccb6f4d96d7bfa946481aeacfa205ca846cb6e096a38312f9d51fdbdac1f258f211138c5f7075952e46a5bf8574de6a1329 + 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, @babel/preset-env@npm:^7.12.1": + version: 7.22.20 + resolution: "@babel/preset-env@npm:7.22.20" + dependencies: + "@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 + "@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.19 + 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: 99357a5cb30f53bacdc0d1cd6dff0f052ea6c2d1ba874d969bba69897ef716e87283e84a59dc52fb49aa31fd1b6f55ed756c64c04f5678380700239f6030b881 + 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.16.7, @babel/runtime@npm:^7.20.6, @babel/runtime@npm:^7.8.4": + version: 7.26.10 + resolution: "@babel/runtime@npm:7.26.10" + dependencies: + regenerator-runtime: ^0.14.0 + checksum: 22d2e0abb86e90de489ab16bb578db6fe2b63a88696db431198b24963749820c723f1982298cdbbea187f7b2b80fb4d98a514faf114ddb2fdc14a4b96277b955 + languageName: node + linkType: hard + +"@babel/template@npm:^7.22.15, @babel/template@npm:^7.22.5, @babel/template@npm:^7.26.9, @babel/template@npm:^7.3.3": + version: 7.26.9 + resolution: "@babel/template@npm:7.26.9" + dependencies: + "@babel/code-frame": ^7.26.2 + "@babel/parser": ^7.26.9 + "@babel/types": ^7.26.9 + checksum: 32259298c775e543ab994daff0c758b3d6a184349b146d6497aa46cec5907bc47a6bc09e7295a81a5eccfbd023d4811a9777cb5d698d582d09a87cabf5b576e7 + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.23.0": + version: 7.23.6 + resolution: "@babel/traverse@npm:7.23.6" + dependencies: + "@babel/code-frame": ^7.23.5 + "@babel/generator": ^7.23.6 + "@babel/helper-environment-visitor": ^7.22.20 + "@babel/helper-function-name": ^7.23.0 + "@babel/helper-hoist-variables": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/parser": ^7.23.6 + "@babel/types": ^7.23.6 + debug: ^4.3.1 + globals: ^11.1.0 + checksum: 48f2eac0e86b6cb60dab13a5ea6a26ba45c450262fccdffc334c01089e75935f7546be195e260e97f6e43cea419862eda095018531a2718fef8189153d479f88 + 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.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.6, @babel/types@npm:^7.26.10, @babel/types@npm:^7.26.9, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": + version: 7.26.10 + resolution: "@babel/types@npm:7.26.10" + dependencies: + "@babel/helper-string-parser": ^7.25.9 + "@babel/helper-validator-identifier": ^7.25.9 + checksum: 07340068ea3824dcaccf702dfc9628175c9926912ad6efba182d8b07e20953297d0a514f6fb103a61b9d5c555c8b87fc2237ddb06efebe14794eefc921dfa114 + 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 + +"@braintree/sanitize-url@npm:^7.1.1": + version: 7.1.1 + resolution: "@braintree/sanitize-url@npm:7.1.1" + checksum: bdfb6add95e97c5a611597197cd8385c6592d340a688bfbb176a1799bde64b9ffa1e723a7bac908d61fdecfccf4301332cdebaa4a1650c2616b5269084d9c8e4 + languageName: node + linkType: hard + +"@chevrotain/cst-dts-gen@npm:11.0.3": + version: 11.0.3 + resolution: "@chevrotain/cst-dts-gen@npm:11.0.3" + dependencies: + "@chevrotain/gast": 11.0.3 + "@chevrotain/types": 11.0.3 + lodash-es: 4.17.21 + checksum: 414229a827e06b4564e271ca3a02ed6f475d400a184dc5ae05308bbc6e966959b84a40a063dacf7debd8f9a1dba5bf8785a891e7b588eafd9f821b43ec16b109 + languageName: node + linkType: hard + +"@chevrotain/gast@npm:11.0.3": + version: 11.0.3 + resolution: "@chevrotain/gast@npm:11.0.3" + dependencies: + "@chevrotain/types": 11.0.3 + lodash-es: 4.17.21 + checksum: 5190ba3a3f03f6f58331dbd108c36172b90314f60675b88dfefca25f704549164577796a1127fa407dd546aefa9f221d6c043e5b95298a0852ffd060b4fff117 + languageName: node + linkType: hard + +"@chevrotain/regexp-to-ast@npm:11.0.3": + version: 11.0.3 + resolution: "@chevrotain/regexp-to-ast@npm:11.0.3" + checksum: 5d665b3340493e302f245c9bbcd73de9b973ca79d0e59c4fbed6cc733b665998b41a2b8a5963bc2e90c763c8b4ba30f6e53736325c40f3fccef0ad3de2095ff2 + languageName: node + linkType: hard + +"@chevrotain/types@npm:11.0.3": + version: 11.0.3 + resolution: "@chevrotain/types@npm:11.0.3" + checksum: 4496bf1955f1db2b08c188f508db23d9f1cbecdf0bfa7f23f8d8dcd3f9ca450529b71acc83a941c59c0f8188b54c0f5687f6e203dcd7dca622ac4ea6291df316 + languageName: node + linkType: hard + +"@chevrotain/utils@npm:11.0.3": + version: 11.0.3 + resolution: "@chevrotain/utils@npm:11.0.3" + checksum: 099f0aa65ff82a7d49ffefd7a90182efcc1518b89b88d516d2125ca730eaa38d61e36ee40fad6c21f7896b6e8393b1e6810b6a69122fabff283f0522ee49eaa5 + languageName: node + linkType: hard + +"@codemirror/autocomplete@npm:^6.0.0, @codemirror/autocomplete@npm:^6.18.6, @codemirror/autocomplete@npm:^6.3.2, @codemirror/autocomplete@npm:^6.7.1": + version: 6.18.6 + resolution: "@codemirror/autocomplete@npm:6.18.6" + dependencies: + "@codemirror/language": ^6.0.0 + "@codemirror/state": ^6.0.0 + "@codemirror/view": ^6.17.0 + "@lezer/common": ^1.0.0 + checksum: 1d3657d5fbd2bbf983edf7fb14568b1f813a15f03848bef3833835dd3a30985d881e093842f7b3def23789b542db4eb81ec07bfa313d1ee1d54cb1b273027dea + languageName: node + linkType: hard + +"@codemirror/commands@npm:^6.8.1": + version: 6.8.1 + resolution: "@codemirror/commands@npm:6.8.1" + dependencies: + "@codemirror/language": ^6.0.0 + "@codemirror/state": ^6.4.0 + "@codemirror/view": ^6.27.0 + "@lezer/common": ^1.1.0 + checksum: 838365af4f12e985c35f4bc59e38eb809e951fd3e35d5ad43548e61c26deda050276346dd031b9c6ed7fe13a777d59c37b9b1e46609d1d79e622d908340a468e + 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.3.1": + version: 6.3.1 + resolution: "@codemirror/lang-css@npm:6.3.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.1.7 + checksum: ed175d75d75bc0a059d1e60b3dcd8464d570da14fc97388439943c9c43e1e9146e37b83fe2ccaad9cd387420b7b411ea1d24ede78ecd1f2045a38acbb4dd36bc + languageName: node + linkType: hard + +"@codemirror/lang-html@npm:^6.0.0, @codemirror/lang-html@npm:^6.4.9": + version: 6.4.9 + resolution: "@codemirror/lang-html@npm:6.4.9" + 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: ac8c3ceb0396f2e032752c5079bd950124dca708bc64e96fc147dc5fe7133e5cee0814fe951abdb953ec1d11fa540e4b30a712b5149d9a36016a197a28de45d7 + 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.2.3": + version: 6.2.3 + resolution: "@codemirror/lang-javascript@npm:6.2.3" + 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: c56407ddedc80e417dd105a39f11f837fad6fd4d91fe7934c61e48c54227350e4e8f940f81d26030a6c4ff9da16f734361cd1eaed63ba22aadf71fcf6172cbd5 + 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.3.2": + version: 6.3.2 + resolution: "@codemirror/lang-markdown@npm:6.3.2" + 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.2.1 + "@lezer/markdown": ^1.0.0 + checksum: f136d50156f13619d7ceb4fae28fc2342064be371a6cb057ba304658d885cf029d2d0d69b03b3c591c86a2c9b46bb2b3820549d5ff936a9b6aabaf692923c84a + 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.2.0": + version: 6.2.0 + resolution: "@codemirror/lang-python@npm:6.2.0" + dependencies: + "@codemirror/autocomplete": ^6.3.2 + "@codemirror/language": ^6.8.0 + "@codemirror/state": ^6.0.0 + "@lezer/common": ^1.2.1 + "@lezer/python": ^1.1.4 + checksum: 2326932a59af8c56dc4e8a621f542a59944b93d4e5f50b23dab65d15486cc7a59a6f5fe11595ac478974270084db4770942621dbd834021247f34f2d34063757 + 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.8.0": + version: 6.8.0 + resolution: "@codemirror/lang-sql@npm:6.8.0" + dependencies: + "@codemirror/autocomplete": ^6.0.0 + "@codemirror/language": ^6.0.0 + "@codemirror/state": ^6.0.0 + "@lezer/common": ^1.2.0 + "@lezer/highlight": ^1.0.0 + "@lezer/lr": ^1.0.0 + checksum: 1b5a3c8129b09f24039d8c0906fc4cb8d0f706a424a1d56721057bd1e647797c2b1240bb53eed9bf2bac5806a4e0363e555a3963f04c478efa05829890c537f7 + languageName: node + linkType: hard + +"@codemirror/lang-wast@npm:^6.0.2": + version: 6.0.2 + resolution: "@codemirror/lang-wast@npm:6.0.2" + dependencies: + "@codemirror/language": ^6.0.0 + "@lezer/common": ^1.2.0 + "@lezer/highlight": ^1.0.0 + "@lezer/lr": ^1.0.0 + checksum: 72119d4a7d726c54167aa227c982ae9fa785c8ad97a158d8350ae95eecfbd8028a803eef939f7e6c5c6e626fcecda1dc37e9dffc6d5d6ec105f686aeda6b2c24 + languageName: node + linkType: hard + +"@codemirror/lang-xml@npm:^6.1.0": + version: 6.1.0 + resolution: "@codemirror/lang-xml@npm:6.1.0" + dependencies: + "@codemirror/autocomplete": ^6.0.0 + "@codemirror/language": ^6.4.0 + "@codemirror/state": ^6.0.0 + "@codemirror/view": ^6.0.0 + "@lezer/common": ^1.0.0 + "@lezer/xml": ^1.0.0 + checksum: 3a1b7af07b29ad7e53b77bf584245580b613bc92256059f175f2b1d7c28c4e39b75654fe169b9a8a330a60164b53ff5254bdb5b8ee8c6e6766427ee115c4e229 + languageName: node + linkType: hard + +"@codemirror/language@npm:^6.0.0, @codemirror/language@npm:^6.11.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.11.0 + resolution: "@codemirror/language@npm:6.11.0" + dependencies: + "@codemirror/state": ^6.0.0 + "@codemirror/view": ^6.23.0 + "@lezer/common": ^1.1.0 + "@lezer/highlight": ^1.0.0 + "@lezer/lr": ^1.0.0 + style-mod: ^4.0.0 + checksum: 5556dc163d5bd1d771a4f64e2750d3d1dc1f39030bc6e4b9a4704e4de7501e8d3511002e0f8f96cd8deef782730e0b49b576e30f0ea820e1c632995bd75caddd + languageName: node + linkType: hard + +"@codemirror/legacy-modes@npm:^6.5.1": + version: 6.5.1 + resolution: "@codemirror/legacy-modes@npm:6.5.1" + dependencies: + "@codemirror/language": ^6.0.0 + checksum: ad92399fdd5f7342d2b8d1ef450ac01cee96f2266938ca09de5047998bf6ac7a085dfe9941feb9ef6a924fda80aa7a1dc0ddc5dd6ce9c3ceaa36bcc14c5b2264 + languageName: node + linkType: hard + +"@codemirror/lint@npm:^6.0.0": + 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: 5e699960c1b28dbaa584fe091a3201978907bf4b9e52810fb15d3ceaf310e38053435e0b594da0985266ae812039a5cd6c36023284a6f8568664bdca04db137f + languageName: node + linkType: hard + +"@codemirror/search@npm:^6.5.10": + version: 6.5.10 + resolution: "@codemirror/search@npm:6.5.10" + dependencies: + "@codemirror/state": ^6.0.0 + "@codemirror/view": ^6.0.0 + crelt: ^1.0.5 + checksum: a30048004ce7cc1ee77a7618485ab5399939eab72b64329d57be98245ea39cb68ba54ad944ee679cc2aeac5bf9f202b2073ad0916f0788497fb64a07073399e8 + languageName: node + linkType: hard + +"@codemirror/state@npm:^6.0.0, @codemirror/state@npm:^6.4.0, @codemirror/state@npm:^6.5.0, @codemirror/state@npm:^6.5.2": + version: 6.5.2 + resolution: "@codemirror/state@npm:6.5.2" + dependencies: + "@marijn/find-cluster-break": ^1.0.0 + checksum: 4473a79475070d73f2e72f2eaaee5b69d2833b5020faa9714609d95dd03f0e5ad02cad8031a541dcd748436842a300332a2925317b39ffa09e3b4831145d98bc + languageName: node + linkType: hard + +"@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.17.0, @codemirror/view@npm:^6.23.0, @codemirror/view@npm:^6.27.0, @codemirror/view@npm:^6.38.1": + version: 6.38.1 + resolution: "@codemirror/view@npm:6.38.1" + dependencies: + "@codemirror/state": ^6.5.0 + crelt: ^1.0.6 + style-mod: ^4.1.0 + w3c-keyname: ^2.2.4 + checksum: a6432f1cf4a9a400eb66619d33b2841d986024677fc95c564b283f7e896fe43b17d7665ca7816b9f6b01a44522d76b928aac8f8778ddd9dfb313b125e2c31643 + languageName: node + linkType: hard + +"@cypress/request@npm:3.0.6": + version: 3.0.6 + resolution: "@cypress/request@npm:3.0.6" + dependencies: + aws-sign2: ~0.7.0 + aws4: ^1.8.0 + caseless: ~0.12.0 + combined-stream: ~1.0.6 + extend: ~3.0.2 + forever-agent: ~0.6.1 + form-data: ~4.0.0 + http-signature: ~1.4.0 + is-typedarray: ~1.0.0 + isstream: ~0.1.2 + json-stringify-safe: ~5.0.1 + mime-types: ~2.1.19 + performance-now: ^2.1.0 + qs: 6.13.0 + safe-buffer: ^5.1.2 + tough-cookie: ^5.0.0 + tunnel-agent: ^0.6.0 + uuid: ^8.3.2 + checksum: 017e1898123eca7af4b95b89fa5a03ed6cb5e841b8ed926cb709b5ad88b5f55b713436e74bce6f13752f80d0399c01cd5b0b3212aaa972e064967f5c78237ebb + languageName: node + linkType: hard + +"@discoveryjs/json-ext@npm:0.5.7, @discoveryjs/json-ext@npm:^0.5.7": + version: 0.5.7 + resolution: "@discoveryjs/json-ext@npm:0.5.7" + checksum: 2176d301cc258ea5c2324402997cf8134ebb212469c0d397591636cea8d3c02f2b3cf9fd58dcb748c7a0dade77ebdc1b10284fa63e608c033a1db52fddc69918 + languageName: node + linkType: hard + +"@emnapi/core@npm:^1.5.0": + version: 1.7.1 + resolution: "@emnapi/core@npm:1.7.1" + dependencies: + "@emnapi/wasi-threads": 1.1.0 + tslib: ^2.4.0 + checksum: 45274d4916c29ca39bb1833269524b8ccccc4295902193e640843df37ae4c35cf65a9d557d34d2eff770745116542af75feeb60d73088086fee791192cbee292 + languageName: node + linkType: hard + +"@emnapi/runtime@npm:^1.5.0": + version: 1.7.1 + resolution: "@emnapi/runtime@npm:1.7.1" + dependencies: + tslib: ^2.4.0 + checksum: a7429af887703bae05c360bc089d1ffbb99a8b5fd2645d8e1034737523f0323e9d29510c3569c3b8f5a516e86975aa9fcdb3601d1907c216f972e1b8d3ce82e1 + languageName: node + linkType: hard + +"@emnapi/wasi-threads@npm:1.1.0": + version: 1.1.0 + resolution: "@emnapi/wasi-threads@npm:1.1.0" + dependencies: + tslib: ^2.4.0 + checksum: 6cffe35f3e407ae26236092991786db5968b4265e6e55f4664bf6f2ce0508e2a02a44ce6ebb16f2acd2f6589efb293f4f9d09cc9fbf80c00fc1a203accc94196 + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.2.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.4.0, @eslint-community/regexpp@npm:^4.6.1": + version: 4.9.1 + resolution: "@eslint-community/regexpp@npm:4.9.1" + checksum: 06fb839e9c756f6375cc545c2f2e05a0a64576bd6370e8e3c07983fd29a3d6e164ef4aa48a361f7d27e6713ab79c83053ff6a2ccb78748bc955e344279c4a3b6 + 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.51.0": + version: 8.51.0 + resolution: "@eslint/js@npm:8.51.0" + checksum: 0228bf1e1e0414843e56d9ff362a2a72d579c078f93174666f29315690e9e30a8633ad72c923297f7fd7182381b5a476805ff04dac8debe638953eb1ded3ac73 + 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 + +"@hutson/parse-repository-url@npm:^3.0.0": + version: 3.0.2 + resolution: "@hutson/parse-repository-url@npm:3.0.2" + checksum: 39992c5f183c5ca3d761d6ed9dfabcb79b5f3750bf1b7f3532e1dc439ca370138bbd426ee250fdaba460bc948e6761fbefd484b8f4f36885d71ded96138340d1 + languageName: node + linkType: hard + +"@iconify/types@npm:^2.0.0": + version: 2.0.0 + resolution: "@iconify/types@npm:2.0.0" + checksum: 029f58542c160e9d4a746869cf2e475b603424d3adf3994c5cc8d0406c47e6e04a3b898b2707840c1c5b9bd5563a1660a34b110d89fce43923baca5222f4e597 + languageName: node + linkType: hard + +"@iconify/utils@npm:^3.0.1": + version: 3.0.2 + resolution: "@iconify/utils@npm:3.0.2" + dependencies: + "@antfu/install-pkg": ^1.1.0 + "@antfu/utils": ^9.2.0 + "@iconify/types": ^2.0.0 + debug: ^4.4.1 + globals: ^15.15.0 + kolorist: ^1.8.0 + local-pkg: ^1.1.1 + mlly: ^1.7.4 + checksum: a71af73cdc198a4aafedb784d2283af2792c1c929f79ae115700b4b4fab74a545b817eff7ae701c90dcc2e4b14ea3c2300d84173149e74a544b0bb5a238cd7b8 + 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 + +"@jsonjoy.com/base64@npm:^1.1.2": + version: 1.1.2 + resolution: "@jsonjoy.com/base64@npm:1.1.2" + peerDependencies: + tslib: 2 + checksum: 00dbf9cbc6ecb3af0e58288a305cc4ee3dfca9efa24443d98061756e8f6de4d6d2d3764bdfde07f2b03e6ce56db27c8a59b490bd134bf3d8122b4c6b394c7010 + languageName: node + linkType: hard + +"@jsonjoy.com/buffers@npm:^1.0.0, @jsonjoy.com/buffers@npm:^1.2.0": + version: 1.2.1 + resolution: "@jsonjoy.com/buffers@npm:1.2.1" + peerDependencies: + tslib: 2 + checksum: 5de11264a7ffe62e5ee3e4f9328bb01cb18dd9d4b977ce1a98e134860c630ae801cf535b78f7a618c33955061d49f0b09699eb77b10e0e45b942f7bb48a19791 + languageName: node + linkType: hard + +"@jsonjoy.com/codegen@npm:^1.0.0": + version: 1.0.0 + resolution: "@jsonjoy.com/codegen@npm:1.0.0" + peerDependencies: + tslib: 2 + checksum: 77383ed703dacc0ee35783589f3289e464d9fd047675f2f628b4d8a567c2b9c87f0121f4445203d51645b5777d24c3b50ed7e12525f4064a0614caae81b1dc2e + languageName: node + linkType: hard + +"@jsonjoy.com/json-pack@npm:^1.11.0": + version: 1.21.0 + resolution: "@jsonjoy.com/json-pack@npm:1.21.0" + dependencies: + "@jsonjoy.com/base64": ^1.1.2 + "@jsonjoy.com/buffers": ^1.2.0 + "@jsonjoy.com/codegen": ^1.0.0 + "@jsonjoy.com/json-pointer": ^1.0.2 + "@jsonjoy.com/util": ^1.9.0 + hyperdyperid: ^1.2.0 + thingies: ^2.5.0 + tree-dump: ^1.1.0 + peerDependencies: + tslib: 2 + checksum: 653b02514bd4ca5e57f72d1fe1b57181767001a4b2615f35135085309cc91fd47f7421c17a465becc76d986871831d4a1cb68506720547e7e7fc0822d6bc5092 + languageName: node + linkType: hard + +"@jsonjoy.com/json-pointer@npm:^1.0.2": + version: 1.0.2 + resolution: "@jsonjoy.com/json-pointer@npm:1.0.2" + dependencies: + "@jsonjoy.com/codegen": ^1.0.0 + "@jsonjoy.com/util": ^1.9.0 + peerDependencies: + tslib: 2 + checksum: 93b45eb2e5ea3864778dab45c9fd2313cd9fb0fc9fa9a6401c8dea0365e44551fa8debbf3d0efb8b5131c0fde689f4509248b3e2ba12852a8c75739028ec3c1b + languageName: node + linkType: hard + +"@jsonjoy.com/util@npm:^1.9.0": + version: 1.9.0 + resolution: "@jsonjoy.com/util@npm:1.9.0" + dependencies: + "@jsonjoy.com/buffers": ^1.0.0 + "@jsonjoy.com/codegen": ^1.0.0 + peerDependencies: + tslib: 2 + checksum: a22c49af0736cede94c24ad8da7230f42697eb5c4a6016450d5bf1cbcb51cd5b45a08989e7ec4cad1cc47718cb5b26e0ba583189f238d095eae4b15cbbe8c9e7 + languageName: node + linkType: hard + +"@jupyter-notebook/app@workspace:app": + version: 0.0.0-use.local + resolution: "@jupyter-notebook/app@workspace:app" + dependencies: + "@jupyter-notebook/application": ^7.6.0-alpha.0 + "@jupyter-notebook/application-extension": ^7.6.0-alpha.0 + "@jupyter-notebook/console-extension": ^7.6.0-alpha.0 + "@jupyter-notebook/docmanager-extension": ^7.6.0-alpha.0 + "@jupyter-notebook/documentsearch-extension": ^7.6.0-alpha.0 + "@jupyter-notebook/help-extension": ^7.6.0-alpha.0 + "@jupyter-notebook/notebook-extension": ^7.6.0-alpha.0 + "@jupyter-notebook/terminal-extension": ^7.6.0-alpha.0 + "@jupyter-notebook/tree": ^7.6.0-alpha.0 + "@jupyter-notebook/tree-extension": ^7.6.0-alpha.0 + "@jupyter-notebook/ui-components": ^7.6.0-alpha.0 + "@jupyterlab/application-extension": ~4.6.0-alpha.0 + "@jupyterlab/apputils-extension": ~4.6.0-alpha.0 + "@jupyterlab/attachments": ~4.6.0-alpha.0 + "@jupyterlab/audio-extension": ~4.6.0-alpha.0 + "@jupyterlab/builder": ~4.6.0-alpha.0 + "@jupyterlab/buildutils": ~4.6.0-alpha.0 + "@jupyterlab/cell-toolbar-extension": ~4.6.0-alpha.0 + "@jupyterlab/celltags-extension": ~4.6.0-alpha.0 + "@jupyterlab/codemirror": ~4.6.0-alpha.0 + "@jupyterlab/codemirror-extension": ~4.6.0-alpha.0 + "@jupyterlab/completer-extension": ~4.6.0-alpha.0 + "@jupyterlab/console-extension": ~4.6.0-alpha.0 + "@jupyterlab/coreutils": ~6.6.0-alpha.0 + "@jupyterlab/csvviewer-extension": ~4.6.0-alpha.0 + "@jupyterlab/debugger-extension": ~4.6.0-alpha.0 + "@jupyterlab/docmanager-extension": ~4.6.0-alpha.0 + "@jupyterlab/documentsearch-extension": ~4.6.0-alpha.0 + "@jupyterlab/extensionmanager-extension": ~4.6.0-alpha.0 + "@jupyterlab/filebrowser-extension": ~4.6.0-alpha.0 + "@jupyterlab/fileeditor-extension": ~4.6.0-alpha.0 + "@jupyterlab/help-extension": ~4.6.0-alpha.0 + "@jupyterlab/htmlviewer-extension": ~4.6.0-alpha.0 + "@jupyterlab/hub-extension": ~4.6.0-alpha.0 + "@jupyterlab/imageviewer-extension": ~4.6.0-alpha.0 + "@jupyterlab/javascript-extension": ~4.6.0-alpha.0 + "@jupyterlab/json-extension": ~4.6.0-alpha.0 + "@jupyterlab/logconsole-extension": ~4.6.0-alpha.0 + "@jupyterlab/lsp": ~4.6.0-alpha.0 + "@jupyterlab/lsp-extension": ~4.6.0-alpha.0 + "@jupyterlab/mainmenu-extension": ~4.6.0-alpha.0 + "@jupyterlab/markdownviewer-extension": ~4.6.0-alpha.0 + "@jupyterlab/markedparser-extension": ~4.6.0-alpha.0 + "@jupyterlab/mathjax-extension": ~4.6.0-alpha.0 + "@jupyterlab/mermaid-extension": ~4.6.0-alpha.0 + "@jupyterlab/metadataform-extension": ~4.6.0-alpha.0 + "@jupyterlab/notebook-extension": ~4.6.0-alpha.0 + "@jupyterlab/pdf-extension": ~4.6.0-alpha.0 + "@jupyterlab/pluginmanager-extension": ~4.6.0-alpha.0 + "@jupyterlab/running-extension": ~4.6.0-alpha.0 + "@jupyterlab/services-extension": ~4.6.0-alpha.0 + "@jupyterlab/settingeditor": ~4.6.0-alpha.0 + "@jupyterlab/settingeditor-extension": ~4.6.0-alpha.0 + "@jupyterlab/shortcuts-extension": ~5.4.0-alpha.0 + "@jupyterlab/terminal-extension": ~4.6.0-alpha.0 + "@jupyterlab/theme-dark-extension": ~4.6.0-alpha.0 + "@jupyterlab/theme-dark-high-contrast-extension": ~4.6.0-alpha.0 + "@jupyterlab/theme-light-extension": ~4.6.0-alpha.0 + "@jupyterlab/toc-extension": ~6.6.0-alpha.0 + "@jupyterlab/tooltip-extension": ~4.6.0-alpha.0 + "@jupyterlab/translation-extension": ~4.6.0-alpha.0 + "@jupyterlab/ui-components-extension": ~4.6.0-alpha.0 + "@jupyterlab/vega5-extension": ~4.6.0-alpha.0 + "@jupyterlab/video-extension": ~4.6.0-alpha.0 + "@lumino/coreutils": ~2.2.2 + "@rspack/cli": ^1.1.8 + "@rspack/core": ^1.1.8 + "@types/rimraf": ^3.0.2 + fs-extra: ^8.1.0 + glob: ~7.1.6 + handlebars: ^4.7.7 + react: ^18.2.0 + react-dom: ^18.2.0 + rimraf: ^3.0.2 + webpack-bundle-analyzer: ^4.8.0 + webpack-merge: ^5.8.0 + whatwg-fetch: ^3.0.0 + yjs: ^13.5.40 + languageName: unknown + linkType: soft + +"@jupyter-notebook/application-extension@^7.6.0-alpha.0, @jupyter-notebook/application-extension@workspace:packages/application-extension": + version: 0.0.0-use.local + resolution: "@jupyter-notebook/application-extension@workspace:packages/application-extension" + dependencies: + "@jupyter-notebook/application": ^7.6.0-alpha.0 + "@jupyter-notebook/ui-components": ^7.6.0-alpha.0 + "@jupyterlab/application": ~4.6.0-alpha.0 + "@jupyterlab/apputils": ~4.7.0-alpha.0 + "@jupyterlab/codeeditor": ~4.6.0-alpha.0 + "@jupyterlab/console": ~4.6.0-alpha.0 + "@jupyterlab/coreutils": ~6.6.0-alpha.0 + "@jupyterlab/docmanager": ~4.6.0-alpha.0 + "@jupyterlab/docregistry": ~4.6.0-alpha.0 + "@jupyterlab/mainmenu": ~4.6.0-alpha.0 + "@jupyterlab/rendermime": ~4.6.0-alpha.0 + "@jupyterlab/settingregistry": ~4.6.0-alpha.0 + "@jupyterlab/translation": ~4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/widgets": ^2.7.2 + rimraf: ^3.0.2 + typescript: ~5.5.4 + languageName: unknown + linkType: soft + +"@jupyter-notebook/application@^7.6.0-alpha.0, @jupyter-notebook/application@workspace:packages/application": + version: 0.0.0-use.local + resolution: "@jupyter-notebook/application@workspace:packages/application" + dependencies: + "@babel/core": ^7.11.6 + "@babel/preset-env": ^7.12.1 + "@jupyterlab/application": ~4.6.0-alpha.0 + "@jupyterlab/coreutils": ~6.6.0-alpha.0 + "@jupyterlab/docregistry": ~4.6.0-alpha.0 + "@jupyterlab/rendermime-interfaces": ~3.14.0-alpha.0 + "@jupyterlab/testutils": ~4.6.0-alpha.0 + "@jupyterlab/ui-components": ~4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/coreutils": ^2.2.2 + "@lumino/messaging": ^2.0.4 + "@lumino/polling": ^2.1.5 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + "@types/jest": ^29.2.5 + jest: ^29.3.1 + rimraf: ^3.0.2 + ts-jest: ^29.0.3 + typescript: ~5.5.4 + languageName: unknown + linkType: soft + +"@jupyter-notebook/buildutils@workspace:buildutils": + version: 0.0.0-use.local + resolution: "@jupyter-notebook/buildutils@workspace:buildutils" + dependencies: + "@jupyterlab/buildutils": ~4.6.0-alpha.0 + "@types/fs-extra": ^9.0.10 + "@types/node": ^22.13.4 + "@types/semver": ^7.5.8 + commander: ^6.2.0 + fs-extra: ^9.1.0 + rimraf: ^3.0.2 + semver: ^7.6.3 + typescript: ~5.5.4 + languageName: unknown + linkType: soft + +"@jupyter-notebook/console-extension@^7.6.0-alpha.0, @jupyter-notebook/console-extension@workspace:packages/console-extension": + version: 0.0.0-use.local + resolution: "@jupyter-notebook/console-extension@workspace:packages/console-extension" + dependencies: + "@jupyter-notebook/application": ^7.6.0-alpha.0 + "@jupyterlab/application": ~4.6.0-alpha.0 + "@jupyterlab/console": ~4.6.0-alpha.0 + "@jupyterlab/coreutils": ~6.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + rimraf: ^3.0.2 + typescript: ~5.5.4 + languageName: unknown + linkType: soft + +"@jupyter-notebook/docmanager-extension@^7.6.0-alpha.0, @jupyter-notebook/docmanager-extension@workspace:packages/docmanager-extension": + version: 0.0.0-use.local + resolution: "@jupyter-notebook/docmanager-extension@workspace:packages/docmanager-extension" + dependencies: + "@jupyter-notebook/application": ^7.6.0-alpha.0 + "@jupyterlab/application": ~4.6.0-alpha.0 + "@jupyterlab/coreutils": ~6.6.0-alpha.0 + "@jupyterlab/docmanager": ~4.6.0-alpha.0 + "@jupyterlab/docregistry": ~4.6.0-alpha.0 + "@jupyterlab/services": ~7.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/signaling": ^2.1.5 + rimraf: ^3.0.2 + typescript: ~5.5.4 + languageName: unknown + linkType: soft + +"@jupyter-notebook/documentsearch-extension@^7.6.0-alpha.0, @jupyter-notebook/documentsearch-extension@workspace:packages/documentsearch-extension": + version: 0.0.0-use.local + resolution: "@jupyter-notebook/documentsearch-extension@workspace:packages/documentsearch-extension" + dependencies: + "@jupyter-notebook/application": ^7.6.0-alpha.0 + "@jupyterlab/application": ~4.6.0-alpha.0 + "@jupyterlab/documentsearch": ~4.6.0-alpha.0 + "@lumino/widgets": ^2.7.2 + rimraf: ^3.0.2 + typescript: ~5.5.4 + languageName: unknown + linkType: soft + +"@jupyter-notebook/help-extension@^7.6.0-alpha.0, @jupyter-notebook/help-extension@workspace:packages/help-extension": + version: 0.0.0-use.local + resolution: "@jupyter-notebook/help-extension@workspace:packages/help-extension" + dependencies: + "@jupyter-notebook/ui-components": ^7.6.0-alpha.0 + "@jupyterlab/application": ~4.6.0-alpha.0 + "@jupyterlab/apputils": ~4.7.0-alpha.0 + "@jupyterlab/mainmenu": ~4.6.0-alpha.0 + "@jupyterlab/translation": ~4.6.0-alpha.0 + react: ^18.2.0 + react-dom: ^18.2.0 + rimraf: ^3.0.2 + typescript: ~5.5.4 + languageName: unknown + linkType: soft + +"@jupyter-notebook/lab-extension@^7.6.0-alpha.0, @jupyter-notebook/lab-extension@workspace:packages/lab-extension": + version: 0.0.0-use.local + resolution: "@jupyter-notebook/lab-extension@workspace:packages/lab-extension" + dependencies: + "@jupyter-notebook/application": ^7.6.0-alpha.0 + "@jupyterlab/application": ~4.6.0-alpha.0 + "@jupyterlab/apputils": ~4.7.0-alpha.0 + "@jupyterlab/builder": ~4.6.0-alpha.0 + "@jupyterlab/coreutils": ~6.6.0-alpha.0 + "@jupyterlab/docregistry": ~4.6.0-alpha.0 + "@jupyterlab/notebook": ~4.6.0-alpha.0 + "@jupyterlab/translation": ~4.6.0-alpha.0 + "@jupyterlab/ui-components": ~4.6.0-alpha.0 + "@lumino/commands": ^2.3.3 + "@lumino/disposable": ^2.1.5 + rimraf: ^3.0.2 + typescript: ~5.5.4 + languageName: unknown + linkType: soft + +"@jupyter-notebook/metapackage@workspace:packages/_metapackage": + version: 0.0.0-use.local + resolution: "@jupyter-notebook/metapackage@workspace:packages/_metapackage" + dependencies: + "@jupyter-notebook/application": ^7.6.0-alpha.0 + "@jupyter-notebook/application-extension": ^7.6.0-alpha.0 + "@jupyter-notebook/console-extension": ^7.6.0-alpha.0 + "@jupyter-notebook/docmanager-extension": ^7.6.0-alpha.0 + "@jupyter-notebook/documentsearch-extension": ^7.6.0-alpha.0 + "@jupyter-notebook/help-extension": ^7.6.0-alpha.0 + "@jupyter-notebook/lab-extension": ^7.6.0-alpha.0 + "@jupyter-notebook/notebook-extension": ^7.6.0-alpha.0 + "@jupyter-notebook/terminal-extension": ^7.6.0-alpha.0 + "@jupyter-notebook/tree": ^7.6.0-alpha.0 + "@jupyter-notebook/tree-extension": ^7.6.0-alpha.0 + "@jupyter-notebook/ui-components": ^7.6.0-alpha.0 + typescript: ~5.5.4 + languageName: unknown + linkType: soft + +"@jupyter-notebook/notebook-extension@^7.6.0-alpha.0, @jupyter-notebook/notebook-extension@workspace:packages/notebook-extension": + version: 0.0.0-use.local + resolution: "@jupyter-notebook/notebook-extension@workspace:packages/notebook-extension" + dependencies: + "@jupyter-notebook/application": ^7.6.0-alpha.0 + "@jupyterlab/application": ~4.6.0-alpha.0 + "@jupyterlab/apputils": ~4.7.0-alpha.0 + "@jupyterlab/cells": ~4.6.0-alpha.0 + "@jupyterlab/docmanager": ~4.6.0-alpha.0 + "@jupyterlab/notebook": ~4.6.0-alpha.0 + "@jupyterlab/settingregistry": ~4.6.0-alpha.0 + "@jupyterlab/translation": ~4.6.0-alpha.0 + "@lumino/polling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + react-dom: ^18.2.0 + rimraf: ^3.0.2 + typescript: ~5.5.4 + languageName: unknown + linkType: soft + +"@jupyter-notebook/root@workspace:.": + version: 0.0.0-use.local + resolution: "@jupyter-notebook/root@workspace:." + dependencies: + "@jupyterlab/buildutils": ~4.6.0-alpha.0 + "@typescript-eslint/eslint-plugin": ^5.55.0 + "@typescript-eslint/parser": ^5.55.0 + eslint: ^8.36.0 + eslint-config-prettier: ^8.7.0 + eslint-plugin-jest: ^27.2.1 + eslint-plugin-prettier: ^4.2.1 + eslint-plugin-react: ^7.32.2 + html-webpack-plugin: ^5.6.3 + lerna: ^7.1.4 + npm-run-all: ^4.1.5 + prettier: ^2.8.5 + rimraf: ^3.0.2 + typescript: ~5.5.4 + languageName: unknown + linkType: soft + +"@jupyter-notebook/terminal-extension@^7.6.0-alpha.0, @jupyter-notebook/terminal-extension@workspace:packages/terminal-extension": + version: 0.0.0-use.local + resolution: "@jupyter-notebook/terminal-extension@workspace:packages/terminal-extension" + dependencies: + "@jupyter-notebook/application": ^7.6.0-alpha.0 + "@jupyterlab/application": ~4.6.0-alpha.0 + "@jupyterlab/coreutils": ~6.6.0-alpha.0 + "@jupyterlab/terminal": ~4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + rimraf: ^3.0.2 + typescript: ~5.5.4 + languageName: unknown + linkType: soft + +"@jupyter-notebook/tree-extension@^7.6.0-alpha.0, @jupyter-notebook/tree-extension@workspace:packages/tree-extension": + version: 0.0.0-use.local + resolution: "@jupyter-notebook/tree-extension@workspace:packages/tree-extension" + dependencies: + "@jupyter-notebook/application": ^7.6.0-alpha.0 + "@jupyter-notebook/tree": ^7.6.0-alpha.0 + "@jupyterlab/application": ~4.6.0-alpha.0 + "@jupyterlab/apputils": ~4.7.0-alpha.0 + "@jupyterlab/coreutils": ~6.6.0-alpha.0 + "@jupyterlab/docmanager": ~4.6.0-alpha.0 + "@jupyterlab/filebrowser": ~4.6.0-alpha.0 + "@jupyterlab/mainmenu": ~4.6.0-alpha.0 + "@jupyterlab/services": ~7.6.0-alpha.0 + "@jupyterlab/settingeditor": ~4.6.0-alpha.0 + "@jupyterlab/settingregistry": ~4.6.0-alpha.0 + "@jupyterlab/statedb": ~4.6.0-alpha.0 + "@jupyterlab/translation": ~4.6.0-alpha.0 + "@jupyterlab/ui-components": ~4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/commands": ^2.3.3 + "@lumino/widgets": ^2.7.2 + rimraf: ^3.0.2 + typescript: ~5.5.4 + languageName: unknown + linkType: soft + +"@jupyter-notebook/tree@^7.6.0-alpha.0, @jupyter-notebook/tree@workspace:packages/tree": + version: 0.0.0-use.local + resolution: "@jupyter-notebook/tree@workspace:packages/tree" + dependencies: + "@jupyter-notebook/application": ^7.6.0-alpha.0 + "@jupyterlab/application": ~4.6.0-alpha.0 + "@jupyterlab/apputils": ~4.7.0-alpha.0 + "@jupyterlab/coreutils": ~6.6.0-alpha.0 + "@jupyterlab/docmanager": ~4.6.0-alpha.0 + "@jupyterlab/filebrowser": ~4.6.0-alpha.0 + "@jupyterlab/mainmenu": ~4.6.0-alpha.0 + "@jupyterlab/services": ~7.6.0-alpha.0 + "@jupyterlab/settingregistry": ~4.6.0-alpha.0 + "@jupyterlab/statedb": ~4.6.0-alpha.0 + "@jupyterlab/translation": ~4.6.0-alpha.0 + "@jupyterlab/ui-components": ~4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/commands": ^2.3.3 + "@lumino/coreutils": ^2.2.2 + "@lumino/widgets": ^2.7.2 + rimraf: ^3.0.2 + typescript: ~5.5.4 + languageName: unknown + linkType: soft + +"@jupyter-notebook/ui-components@^7.6.0-alpha.0, @jupyter-notebook/ui-components@workspace:packages/ui-components": + version: 0.0.0-use.local + resolution: "@jupyter-notebook/ui-components@workspace:packages/ui-components" + dependencies: + "@babel/core": ^7.10.2 + "@babel/preset-env": ^7.10.2 + "@jupyterlab/testutils": ~4.6.0-alpha.0 + "@jupyterlab/ui-components": ~4.6.0-alpha.0 + "@types/jest": ^29.2.5 + babel-loader: ^8.0.6 + jest: ^29.3.1 + react: ^18.2.0 + react-dom: ^18.2.0 + rimraf: ^3.0.2 + ts-jest: ^29.0.3 + typescript: ~5.5.4 + languageName: unknown + linkType: soft + +"@jupyter/react-components@npm:^0.16.6": + version: 0.16.7 + resolution: "@jupyter/react-components@npm:0.16.7" + dependencies: + "@jupyter/web-components": ^0.16.7 + react: ">=17.0.0 <19.0.0" + checksum: 37894347e63ebb528725e8b8b4038d138019823f5c9e28e3f6abb93b46d771b2ee3cc004d5ff7d9a06a93f2d90e41000bd2abae14364be34ba99c5e05864810e + languageName: node + linkType: hard + +"@jupyter/web-components@npm:^0.16.6, @jupyter/web-components@npm:^0.16.7": + version: 0.16.7 + resolution: "@jupyter/web-components@npm:0.16.7" + dependencies: + "@microsoft/fast-colors": ^5.3.1 + "@microsoft/fast-element": ^1.12.0 + "@microsoft/fast-foundation": ^2.49.4 + "@microsoft/fast-web-utilities": ^5.4.1 + checksum: ec3336247bbabb2e2587c2cf8b9d0e80786b454916dd600b3d6791bf08c3d1e45a7ec1becf366a5491ab56b0be020baa8c50a5b6067961faf5ec904de31243aa + languageName: node + linkType: hard + +"@jupyter/ydoc@npm:^3.1.0": + version: 3.1.0 + resolution: "@jupyter/ydoc@npm:3.1.0" + 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: 7f2423752395ec590ed46754c10c87db4f5b804aa9608ef2869f52872e9a29cb5f9e32908325efb221d9ce4fad642a1f7e0dbb8f2ee40c352b8380e46ccba93d + languageName: node + linkType: hard + +"@jupyterlab/application-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/application-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/property-inspector": ^4.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/statedb": ^4.6.0-alpha.0 + "@jupyterlab/statusbar": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/commands": ^2.3.3 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + checksum: 6083e53707bc948aa3ba5651c80bda1ce3b2877269e581abb23b2e4371b3e5330579a3b0387761bea8974b116abb88252003647b39dc4a86a45fdff3b6f2f262 + languageName: node + linkType: hard + +"@jupyterlab/application@npm:^4.6.0-alpha.0, @jupyterlab/application@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/application@npm:4.6.0-alpha.0" + dependencies: + "@fortawesome/fontawesome-free": ^5.12.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/rendermime-interfaces": ^3.14.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/statedb": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/application": ^2.4.5 + "@lumino/commands": ^2.3.3 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/messaging": ^2.0.4 + "@lumino/polling": ^2.1.5 + "@lumino/properties": ^2.0.4 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + checksum: 3eee43cf35c0653ebc2c8c9a149f613d1403a3c0dc8ba996e411c4e46197dbf64bfdab18313627637220ba2690e2e2224cc866352e32645f8873d57382c355c8 + languageName: node + linkType: hard + +"@jupyterlab/apputils-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/apputils-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/mainmenu": ^4.6.0-alpha.0 + "@jupyterlab/rendermime-interfaces": ^3.14.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/statedb": ^4.6.0-alpha.0 + "@jupyterlab/statusbar": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@jupyterlab/workspaces": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/commands": ^2.3.3 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/domutils": ^2.0.4 + "@lumino/polling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + react-dom: ^18.2.0 + react-toastify: ^9.0.8 + checksum: bab57f1b519810314a8a8e333fbe4267c563a1bfc25e6e8a67c63d173c7fa270ee892b79363703c0a5dd84e7f6010328ce64bc72d00471b00eb50534ab162d34 + languageName: node + linkType: hard + +"@jupyterlab/apputils@npm:^4.7.0-alpha.0, @jupyterlab/apputils@npm:~4.7.0-alpha.0": + version: 4.7.0-alpha.0 + resolution: "@jupyterlab/apputils@npm:4.7.0-alpha.0" + dependencies: + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/observables": ^5.6.0-alpha.0 + "@jupyterlab/rendermime-interfaces": ^3.14.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/statedb": ^4.6.0-alpha.0 + "@jupyterlab/statusbar": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/commands": ^2.3.3 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/domutils": ^2.0.4 + "@lumino/messaging": ^2.0.4 + "@lumino/signaling": ^2.1.5 + "@lumino/virtualdom": ^2.0.4 + "@lumino/widgets": ^2.7.2 + "@types/react": ^18.0.26 + react: ^18.2.0 + sanitize-html: ~2.12.1 + checksum: eb4d845a52cb07eaa803c1461fdab1120ba0cd632dd5d8b3d7ca791445473f75830ba7eebeae0a31c89625d63b2b13763c282e7522348d94234a3c94f8c331fe + languageName: node + linkType: hard + +"@jupyterlab/attachments@npm:^4.6.0-alpha.0, @jupyterlab/attachments@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/attachments@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/nbformat": ^4.6.0-alpha.0 + "@jupyterlab/observables": ^5.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/rendermime-interfaces": ^3.14.0-alpha.0 + "@lumino/disposable": ^2.1.5 + "@lumino/signaling": ^2.1.5 + checksum: 175775a31fee18bbc5d9557de9004b0e5cf05ab10486b5d6ca96e23209a0929637bda7c970e845aa2fd0557967104860cf0cb5297cb6169fcb82de93448e7c84 + languageName: node + linkType: hard + +"@jupyterlab/audio-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/audio-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@lumino/widgets": ^2.7.2 + checksum: e8b351676af37ec5257d84b8599b60fcab20c7006bad2867c291dce1d4c48a93f8446e621af8a3fbe307422b85a863e51d4c19e61008117c8e541ace2fd96d86 + languageName: node + linkType: hard + +"@jupyterlab/builder@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/builder@npm:4.6.0-alpha.0" + dependencies: + "@lumino/algorithm": ^2.0.4 + "@lumino/application": ^2.4.5 + "@lumino/commands": ^2.3.3 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/domutils": ^2.0.4 + "@lumino/dragdrop": ^2.1.7 + "@lumino/messaging": ^2.0.4 + "@lumino/properties": ^2.0.4 + "@lumino/signaling": ^2.1.5 + "@lumino/virtualdom": ^2.0.4 + "@lumino/widgets": ^2.7.2 + "@rspack/core": ^1.6.4 + 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: ^4.0.2 + 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 + webpack-merge: ^5.8.0 + worker-loader: ^3.0.2 + bin: + build-labextension: lib/build-labextension.js + checksum: cbcb8c13dc0b9ee92741acf6659db0a672594e4e28e0c9fb8787ab9ac5a3fd372fdda8caa7c26220bc127e14999026283a6965ddd1afd940200ba52f2f309d0c + languageName: node + linkType: hard + +"@jupyterlab/buildutils@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/buildutils@npm:4.6.0-alpha.0" + dependencies: + "@yarnpkg/core": ^4.0.3 + "@yarnpkg/parsers": ^3.0.0 + commander: ^9.4.1 + crypto: ~1.0.1 + dependency-graph: ^0.11.0 + fs-extra: ^10.1.0 + glob: ~7.1.6 + inquirer: ^9.1.4 + micromatch: ^4.0.2 + minimatch: ~3.0.4 + os: ~0.1.1 + package-json: ^7.0.0 + prettier: ~2.6.0 + process: ^0.11.10 + semver: ^7.5.2 + sort-package-json: ~1.53.1 + typescript: ~5.5.4 + verdaccio: ^5.33.0 + bin: + get-dependency: lib/get-dependency.js + local-repository: lib/local-repository.js + remove-dependency: lib/remove-dependency.js + update-dependency: lib/update-dependency.js + update-dist-tag: lib/update-dist-tag.js + update-staging-lock: lib/update-staging-lock.js + checksum: 70249ba4ca9b7c46b0f43a1ddd95e7a2f199b5456b1a5235896d7956ea5eada5b319eb341464c84c7a8a46dddd6cf743b7e6e8b882cba2d8a5125ef123a2ddfd + languageName: node + linkType: hard + +"@jupyterlab/cell-toolbar-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/cell-toolbar-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/cell-toolbar": ^4.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + checksum: 9c2312abf66d1d2d3076f6b7b488f2b413462168834a95948e68cfd2676f4fbd8771cdafbb9c4ac9c03eb984607b359ceb6a9ab9322120952930dfd287c91279 + languageName: node + linkType: hard + +"@jupyterlab/cell-toolbar@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/cell-toolbar@npm:4.6.0-alpha.0" + dependencies: + "@jupyter/ydoc": ^3.1.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/cells": ^4.6.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/notebook": ^4.6.0-alpha.0 + "@jupyterlab/observables": ^5.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/commands": ^2.3.3 + "@lumino/disposable": ^2.1.5 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + checksum: ea025f0740c7593deb0d7b876d9e6285df16b407c5f603e4561fed4a68066e495516c09c379812e733186a9f7b1da17eb890fa827c386d04fe497384f9409d0d + languageName: node + linkType: hard + +"@jupyterlab/cells@npm:^4.6.0-alpha.0, @jupyterlab/cells@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/cells@npm:4.6.0-alpha.0" + dependencies: + "@codemirror/state": ^6.5.2 + "@codemirror/view": ^6.38.1 + "@jupyter/ydoc": ^3.1.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/attachments": ^4.6.0-alpha.0 + "@jupyterlab/codeeditor": ^4.6.0-alpha.0 + "@jupyterlab/codemirror": ^4.6.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/documentsearch": ^4.6.0-alpha.0 + "@jupyterlab/filebrowser": ^4.6.0-alpha.0 + "@jupyterlab/nbformat": ^4.6.0-alpha.0 + "@jupyterlab/observables": ^5.6.0-alpha.0 + "@jupyterlab/outputarea": ^4.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/toc": ^6.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/coreutils": ^2.2.2 + "@lumino/domutils": ^2.0.4 + "@lumino/dragdrop": ^2.1.7 + "@lumino/messaging": ^2.0.4 + "@lumino/polling": ^2.1.5 + "@lumino/signaling": ^2.1.5 + "@lumino/virtualdom": ^2.0.4 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + checksum: 2e8da5bb7f1be528753026e753c8b9a0fb1fa28e1178e8a9d5dd4a3e14ea97cc1ebd1bc2ee038662fb0f68d4a5a9f52323e854da5bda4d18061b77dd6633171f + languageName: node + linkType: hard + +"@jupyterlab/celltags-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/celltags-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/notebook": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@rjsf/utils": ^5.13.4 + react: ^18.2.0 + checksum: e76aaddf027977976ed08b6135a55ca74202342b86e2410b448a18a2a93dbc9ff3f9898ea7cbb88147643bb5d45bf7aca8935ca58132e0be69779d5e393eec6f + languageName: node + linkType: hard + +"@jupyterlab/codeeditor@npm:^4.6.0-alpha.0, @jupyterlab/codeeditor@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/codeeditor@npm:4.6.0-alpha.0" + dependencies: + "@codemirror/state": ^6.5.2 + "@jupyter/ydoc": ^3.1.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/nbformat": ^4.6.0-alpha.0 + "@jupyterlab/observables": ^5.6.0-alpha.0 + "@jupyterlab/statusbar": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/dragdrop": ^2.1.7 + "@lumino/messaging": ^2.0.4 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + checksum: 963b2cf99ada20f1979bb7b1ca5200c2f35fad5f6dc7bc0787c466d542367780c75503207998b3c9eda0411b525c000e073ed6da3c7b7b028ef967fcbddded1e + languageName: node + linkType: hard + +"@jupyterlab/codemirror-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/codemirror-extension@npm:4.6.0-alpha.0" + dependencies: + "@codemirror/commands": ^6.8.1 + "@codemirror/lang-markdown": ^6.3.2 + "@codemirror/language": ^6.11.0 + "@codemirror/legacy-modes": ^6.5.1 + "@codemirror/search": ^6.5.10 + "@codemirror/view": ^6.38.1 + "@jupyter/ydoc": ^3.1.0 + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/codeeditor": ^4.6.0-alpha.0 + "@jupyterlab/codemirror": ^4.6.0-alpha.0 + "@jupyterlab/notebook": ^4.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/statusbar": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/widgets": ^2.7.2 + "@rjsf/utils": ^5.13.4 + "@rjsf/validator-ajv8": ^5.13.4 + react: ^18.2.0 + checksum: 501f1e8a3bc5ae055797fd79b3e7698b27691e145933347d859fcf2ae6913c67ec7508cd26a5d977b2647656a923f123e1ee2ba04f542c5f092e055390de9fc7 + languageName: node + linkType: hard + +"@jupyterlab/codemirror@npm:^4.6.0-alpha.0, @jupyterlab/codemirror@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/codemirror@npm:4.6.0-alpha.0" + dependencies: + "@codemirror/autocomplete": ^6.18.6 + "@codemirror/commands": ^6.8.1 + "@codemirror/lang-cpp": ^6.0.2 + "@codemirror/lang-css": ^6.3.1 + "@codemirror/lang-html": ^6.4.9 + "@codemirror/lang-java": ^6.0.1 + "@codemirror/lang-javascript": ^6.2.3 + "@codemirror/lang-json": ^6.0.1 + "@codemirror/lang-markdown": ^6.3.2 + "@codemirror/lang-php": ^6.0.1 + "@codemirror/lang-python": ^6.2.0 + "@codemirror/lang-rust": ^6.0.1 + "@codemirror/lang-sql": ^6.8.0 + "@codemirror/lang-wast": ^6.0.2 + "@codemirror/lang-xml": ^6.1.0 + "@codemirror/language": ^6.11.0 + "@codemirror/legacy-modes": ^6.5.1 + "@codemirror/search": ^6.5.10 + "@codemirror/state": ^6.5.2 + "@codemirror/view": ^6.38.1 + "@jupyter/ydoc": ^3.1.0 + "@jupyterlab/codeeditor": ^4.6.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/documentsearch": ^4.6.0-alpha.0 + "@jupyterlab/nbformat": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@lezer/common": ^1.2.1 + "@lezer/generator": ^1.7.0 + "@lezer/highlight": ^1.2.0 + "@lezer/markdown": ^1.3.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/signaling": ^2.1.5 + yjs: ^13.5.40 + checksum: e9ab86d924945ec0d1d460b032731847d34000db162cae2385f5627898cdbd449d78d5af0fbf67228990ddc6b2783b56efbc5c1ad19da24f4ac3d1261cc1c9d3 + languageName: node + linkType: hard + +"@jupyterlab/completer-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/completer-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/codeeditor": ^4.6.0-alpha.0 + "@jupyterlab/completer": ^4.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/commands": ^2.3.3 + "@lumino/coreutils": ^2.2.2 + "@rjsf/utils": ^5.13.4 + react: ^18.2.0 + checksum: 1972e9d26326c36d591967b2af6c852db21f864876b6a1b363f3c229feeb8c4c6018853ccc85060e52e31a0d6ed7599fd993d463fbc862a079b77964762277c1 + languageName: node + linkType: hard + +"@jupyterlab/completer@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/completer@npm:4.6.0-alpha.0" + dependencies: + "@codemirror/language": ^6.11.0 + "@codemirror/state": ^6.5.2 + "@codemirror/view": ^6.38.1 + "@jupyter/ydoc": ^3.1.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/codeeditor": ^4.6.0-alpha.0 + "@jupyterlab/codemirror": ^4.6.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/statedb": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/domutils": ^2.0.4 + "@lumino/messaging": ^2.0.4 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + checksum: f9adae8daffd557cd0a5cac39e833f2c79dfb3bd25620fde0560e1ba75fe909ef5d018c7ed5d2de43f8a18d96ffd6d92fd5231925ff6af400fc257d4671cba7b + languageName: node + linkType: hard + +"@jupyterlab/console-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/console-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/codeeditor": ^4.6.0-alpha.0 + "@jupyterlab/completer": ^4.6.0-alpha.0 + "@jupyterlab/console": ^4.6.0-alpha.0 + "@jupyterlab/filebrowser": ^4.6.0-alpha.0 + "@jupyterlab/launcher": ^4.6.0-alpha.0 + "@jupyterlab/mainmenu": ^4.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/properties": ^2.0.4 + "@lumino/widgets": ^2.7.2 + checksum: bf418d81921b2edd9fc17cc77b5c2df90d8d39447cc66097d8e2d6eb0cc10df05e4a53c05f8f6876a2d6eecb5de23588bd05252370c795547041468e7757e951 + languageName: node + linkType: hard + +"@jupyterlab/console@npm:^4.6.0-alpha.0, @jupyterlab/console@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/console@npm:4.6.0-alpha.0" + dependencies: + "@jupyter/ydoc": ^3.1.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/cells": ^4.6.0-alpha.0 + "@jupyterlab/codeeditor": ^4.6.0-alpha.0 + "@jupyterlab/codemirror": ^4.6.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/nbformat": ^4.6.0-alpha.0 + "@jupyterlab/observables": ^5.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/dragdrop": ^2.1.7 + "@lumino/messaging": ^2.0.4 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + checksum: 8a344a106608688c9af0eadf99fcb99efb4a7f6dcc1d78f3e1927431858adeae3d742a9fa3d8fd3872d82bd27de28a3eb3f0fb5abbf0c921dbf7db1fbbbeebd1 + languageName: node + linkType: hard + +"@jupyterlab/coreutils@npm:^6.6.0-alpha.0, @jupyterlab/coreutils@npm:~6.6.0-alpha.0": + version: 6.6.0-alpha.0 + resolution: "@jupyterlab/coreutils@npm:6.6.0-alpha.0" + dependencies: + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/signaling": ^2.1.5 + minimist: ~1.2.0 + path-browserify: ^1.0.0 + url-parse: ~1.5.4 + checksum: cfc7ba33d5498aca4c4f2f684126456ea7648a4c1388c17438d5b1b771610b7f073f99af86daf1bac4e9230e0dcf048aa30c237d5ada0f9267023f8a2f166983 + languageName: node + linkType: hard + +"@jupyterlab/csvviewer-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/csvviewer-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/csvviewer": ^4.6.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/documentsearch": ^4.6.0-alpha.0 + "@jupyterlab/mainmenu": ^4.6.0-alpha.0 + "@jupyterlab/observables": ^5.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@lumino/datagrid": ^2.5.3 + "@lumino/widgets": ^2.7.2 + checksum: 6a657280e62a2d1d5bc09f43b283bd101bffc36dfe8f85f23f9187aef0ff8a9d4e3e7f82a465d0aa8a602e358e0462107dc1744a4d9242274168a354171ce58a + languageName: node + linkType: hard + +"@jupyterlab/csvviewer@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/csvviewer@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/datagrid": ^2.5.3 + "@lumino/disposable": ^2.1.5 + "@lumino/messaging": ^2.0.4 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + checksum: 6c56c32e04cfb58ae1a3937ade693e1127a364e425ee67f0391201c38f7edd7e26fcaefb8ab444f41818b356f4fdb2a0e1d9776ad394555e34860c15b00de0c1 + languageName: node + linkType: hard + +"@jupyterlab/debugger-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/debugger-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/cells": ^4.6.0-alpha.0 + "@jupyterlab/codeeditor": ^4.6.0-alpha.0 + "@jupyterlab/completer": ^4.6.0-alpha.0 + "@jupyterlab/console": ^4.6.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/debugger": ^4.6.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/fileeditor": ^4.6.0-alpha.0 + "@jupyterlab/nbformat": ^4.6.0-alpha.0 + "@jupyterlab/notebook": ^4.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@lumino/commands": ^2.3.3 + checksum: 8d5b7303367e0ce05a8cce248180ef7687912cb04bec49cb31496d4893fc663ef2074a7f864d1f4094acd832cb8062a4a6d142e75ef08e7d20c7485cf3a2748f + languageName: node + linkType: hard + +"@jupyterlab/debugger@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/debugger@npm:4.6.0-alpha.0" + dependencies: + "@codemirror/state": ^6.5.2 + "@codemirror/view": ^6.38.1 + "@jupyter/react-components": ^0.16.6 + "@jupyter/ydoc": ^3.1.0 + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/cells": ^4.6.0-alpha.0 + "@jupyterlab/codeeditor": ^4.6.0-alpha.0 + "@jupyterlab/codemirror": ^4.6.0-alpha.0 + "@jupyterlab/console": ^4.6.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/fileeditor": ^4.6.0-alpha.0 + "@jupyterlab/notebook": ^4.6.0-alpha.0 + "@jupyterlab/observables": ^5.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/commands": ^2.3.3 + "@lumino/coreutils": ^2.2.2 + "@lumino/datagrid": ^2.5.3 + "@lumino/disposable": ^2.1.5 + "@lumino/messaging": ^2.0.4 + "@lumino/polling": ^2.1.5 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + "@vscode/debugprotocol": ^1.51.0 + react: ^18.2.0 + checksum: 575229d17fe4b5775d6c8937869ff22402234a8fbe648beef87bc23606f435e1f668895bf381907d083fd3caf344bcea0e2f7182fec96cc5d15c8e58049d119e + languageName: node + linkType: hard + +"@jupyterlab/docmanager-extension@npm:^4.6.0-alpha.0, @jupyterlab/docmanager-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/docmanager-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/docmanager": ^4.6.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/statedb": ^4.6.0-alpha.0 + "@jupyterlab/statusbar": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/commands": ^2.3.3 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + checksum: bc5e8d036e34c7df2ecd9fb8576d24b6e2b449d0a01a98ee9b551293542829dd5514fc594341489fc0fe0c94d8cc2553a482f9be5e1382af63037153282df075 + languageName: node + linkType: hard + +"@jupyterlab/docmanager@npm:^4.6.0-alpha.0, @jupyterlab/docmanager@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/docmanager@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/statedb": ^4.6.0-alpha.0 + "@jupyterlab/statusbar": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/messaging": ^2.0.4 + "@lumino/polling": ^2.1.5 + "@lumino/properties": ^2.0.4 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + checksum: 2d25aadbbcf7b9bddb80471c5b00818bdc9e7bdd2020d6cf1916e19e9200479e9d1d635c73f8b857cdb292c943e6eb157b52e2be5ab8bab000c7882ac69ebf4e + languageName: node + linkType: hard + +"@jupyterlab/docregistry@npm:^4.6.0-alpha.0, @jupyterlab/docregistry@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/docregistry@npm:4.6.0-alpha.0" + dependencies: + "@jupyter/ydoc": ^3.1.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/codeeditor": ^4.6.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/observables": ^5.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/rendermime-interfaces": ^3.14.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/messaging": ^2.0.4 + "@lumino/properties": ^2.0.4 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + checksum: aa4ec1b0d20640f284f7229f0b1d0c69879c88299086cd47f138aba24ad84c81cf084748f7cc60d8807003103b7af87603a9ccfc8afc4d089ad4279fc7b227f7 + languageName: node + linkType: hard + +"@jupyterlab/documentsearch-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/documentsearch-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/documentsearch": ^4.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@lumino/commands": ^2.3.3 + "@lumino/widgets": ^2.7.2 + checksum: 9f644bce51b19fe57eb1db1b58010b6edc4b51463f2c3e66ac384ec9c2d4895d8cfe3d0cea07a4f46d8dfae9ec5fbc7619aa6bced6646f72f78219a58ec0b56d + languageName: node + linkType: hard + +"@jupyterlab/documentsearch@npm:^4.6.0-alpha.0, @jupyterlab/documentsearch@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/documentsearch@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/commands": ^2.3.3 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/messaging": ^2.0.4 + "@lumino/polling": ^2.1.5 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + checksum: 457e7ff4f6659fcecd2862423348f29f8efb0e76342027996bd40d1fb61b04ad3c8957a6dcad43b1a08241ef2b7cc381d975d94ddab4cf948af3ae02bf27a357 + languageName: node + linkType: hard + +"@jupyterlab/extensionmanager-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/extensionmanager-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/extensionmanager": ^4.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + checksum: 7666d4c7ba81b58fc0249d0a57a4a27e3dbf6597c295d269d6a97835eb4c83d4480778efa0e04084b040d437a2f844cdc73879c8290f6573b0480518800327d5 + languageName: node + linkType: hard + +"@jupyterlab/extensionmanager@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/extensionmanager@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/messaging": ^2.0.4 + "@lumino/polling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + react-paginate: ^6.3.2 + semver: ^7.5.2 + checksum: e1653709a35ce80d2d3f5f2b1db0b564efef63da6c43c58fc00b3fa021389fecb78fc72d8cac74e75063a17ab1f63741e86815f85355434b9ab6a900c16253c9 + languageName: node + linkType: hard + +"@jupyterlab/filebrowser-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/filebrowser-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/docmanager": ^4.6.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/filebrowser": ^4.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/statedb": ^4.6.0-alpha.0 + "@jupyterlab/statusbar": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/commands": ^2.3.3 + "@lumino/disposable": ^2.1.5 + "@lumino/widgets": ^2.7.2 + checksum: db1d7684fe82e3b5845c641faed433f7caebe94b86b233dd24dd2ee0232d4d69aefc9269ce9de2a5ffd954a63d276e1f584b52752ff4304c55004a2f538333c9 + languageName: node + linkType: hard + +"@jupyterlab/filebrowser@npm:^4.6.0-alpha.0, @jupyterlab/filebrowser@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/filebrowser@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/docmanager": ^4.6.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/statedb": ^4.6.0-alpha.0 + "@jupyterlab/statusbar": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/domutils": ^2.0.4 + "@lumino/dragdrop": ^2.1.7 + "@lumino/messaging": ^2.0.4 + "@lumino/polling": ^2.1.5 + "@lumino/signaling": ^2.1.5 + "@lumino/virtualdom": ^2.0.4 + "@lumino/widgets": ^2.7.2 + jest-environment-jsdom: ^29.3.0 + react: ^18.2.0 + checksum: 5f179a6f9a31b2e2c36d5e3b5a6193da99ee5e4a2e621d279133bb5973e915b4e7efc3be2280a7a1fb4d73a7937d050ce31ffca6ab1ac9a21e2414d7d3afc6eb + languageName: node + linkType: hard + +"@jupyterlab/fileeditor-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/fileeditor-extension@npm:4.6.0-alpha.0" + dependencies: + "@codemirror/commands": ^6.8.1 + "@codemirror/search": ^6.5.10 + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/codeeditor": ^4.6.0-alpha.0 + "@jupyterlab/codemirror": ^4.6.0-alpha.0 + "@jupyterlab/completer": ^4.6.0-alpha.0 + "@jupyterlab/console": ^4.6.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/documentsearch": ^4.6.0-alpha.0 + "@jupyterlab/filebrowser": ^4.6.0-alpha.0 + "@jupyterlab/fileeditor": ^4.6.0-alpha.0 + "@jupyterlab/launcher": ^4.6.0-alpha.0 + "@jupyterlab/lsp": ^4.6.0-alpha.0 + "@jupyterlab/mainmenu": ^4.6.0-alpha.0 + "@jupyterlab/observables": ^5.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/rendermime-interfaces": ^3.14.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/statusbar": ^4.6.0-alpha.0 + "@jupyterlab/toc": ^6.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/commands": ^2.3.3 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/widgets": ^2.7.2 + checksum: 079ae3209461935a3753e2486b3c67d55f814ff8c426a119bee35b615c3a0a059b1d3f9bb8a8679b62946ce36d95d6752701792ae2e44ac36670b1b98befa232 + languageName: node + linkType: hard + +"@jupyterlab/fileeditor@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/fileeditor@npm:4.6.0-alpha.0" + dependencies: + "@jupyter/ydoc": ^3.1.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/codeeditor": ^4.6.0-alpha.0 + "@jupyterlab/codemirror": ^4.6.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/documentsearch": ^4.6.0-alpha.0 + "@jupyterlab/lsp": ^4.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/statusbar": ^4.6.0-alpha.0 + "@jupyterlab/toc": ^6.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/commands": ^2.3.3 + "@lumino/coreutils": ^2.2.2 + "@lumino/messaging": ^2.0.4 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + regexp-match-indices: ^1.0.2 + checksum: 3fd17807769874d1a9e88e30f1fc70b3ae6f3c9b9c387d5940312a5c3a7d29b9bdcaa446290148ead8a24057b2873abe11467a226e7629a650e20bb8895a5243 + languageName: node + linkType: hard + +"@jupyterlab/help-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/help-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/mainmenu": ^4.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + checksum: 29efb807b24d7ce7437ae1ee4cf2253d525d5ad258278555e030ee657fb9ecf9296d255735edf589d80eafd46bf796db885e6a108cb26f642e16ef28ff0d3a65 + languageName: node + linkType: hard + +"@jupyterlab/htmlviewer-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/htmlviewer-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/htmlviewer": ^4.6.0-alpha.0 + "@jupyterlab/observables": ^5.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + checksum: 19c7a4af299b2195d7063fae11fa435d078f4a547d2bba179ab2ad3ff8cacc6d11ac41dc69a14c20a7f4883338b7c24bfcf24a81d5fd34e0e92ec5772dd80f36 + languageName: node + linkType: hard + +"@jupyterlab/htmlviewer@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/htmlviewer@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + checksum: 80a6e21bca6b544680fe159dc2c805065d2fc318c762347c4a8b565e3b343185a159a23f273b21188487c098d686fb1ca3e93bb32b884949af76a058284b6239 + languageName: node + linkType: hard + +"@jupyterlab/hub-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/hub-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + checksum: 3f26da1483f120d68fe9ee4ccfa9879ee83b627f5758d5706fd807291bfb6a9c421b5064149325c3c808cee76e65cb699caab0a8a1b098d6a075405153713fa6 + languageName: node + linkType: hard + +"@jupyterlab/imageviewer-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/imageviewer-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/imageviewer": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + checksum: 20a7f82e076fe012b88e842089bfd3597e8c157eb72bc20d3c10d9fd8c22047dd5b8776abf64e47ab112dee45e6710c3ceb2d76cb5e58ff728dbb866b0ce662f + languageName: node + linkType: hard + +"@jupyterlab/imageviewer@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/imageviewer@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/messaging": ^2.0.4 + "@lumino/widgets": ^2.7.2 + checksum: cc2587f2ced4177bf80c70acc4488d930465be78272543c7abdf803ab6545be129608840caf7812650818379d15e351c4b3b081ff4f31b234bc7bbb057552849 + languageName: node + linkType: hard + +"@jupyterlab/inspector@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/inspector@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/codeeditor": ^4.6.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/statedb": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/polling": ^2.1.5 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + checksum: 9184ba74798484b12050c5c8e17f76f0c3a36cc8e48880f813191e5d10b22564acbc46f0c5108412682d28d3f2f21227eb2525e187b7d27293ca7782030aaa47 + languageName: node + linkType: hard + +"@jupyterlab/javascript-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/javascript-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/rendermime-interfaces": ^3.14.0-alpha.0 + checksum: 94439b3d59da4752a98abcb33f1359ffe4d19c37355b55847fa2c7383c05b7671d075a2224cc9dddc9b790c8e68110f4fc3e7f5fa41c3f30b6bca57ec7b49f36 + languageName: node + linkType: hard + +"@jupyterlab/json-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/json-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/codemirror": ^4.6.0-alpha.0 + "@jupyterlab/rendermime-interfaces": ^3.14.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lezer/highlight": ^1.2.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/messaging": ^2.0.4 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + react-dom: ^18.2.0 + react-highlight-words: ^0.20.0 + react-json-tree: ^0.18.0 + style-mod: ^4.0.0 + checksum: 36d1a57fed737704be89fee7815f70bd06f7df03497a85b87e10190a8331a503d0418d14a2bdc8f60db837f1df0488afb14332daf6baeffdac27518da46483dc + languageName: node + linkType: hard + +"@jupyterlab/launcher@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/launcher@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/commands": ^2.3.3 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/properties": ^2.0.4 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + checksum: e422f88f84a2d66e7bbf3722546823f49ec4ccf3f457313c8c82e15ae2ac44bacc68215fae60d6b3acd969a0c63a273f026bc5c0adb84299c97d527af453829c + languageName: node + linkType: hard + +"@jupyterlab/logconsole-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/logconsole-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/logconsole": ^4.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/statusbar": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + checksum: f0b59087cec3dfec3e7f8dcbebd270f784f70e5738156e1e4d869412283be5dadc5f0670e9116238215c34dae2730e8da63e194df91a6c5a5cb7950c3c734811 + languageName: node + linkType: hard + +"@jupyterlab/logconsole@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/logconsole@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/nbformat": ^4.6.0-alpha.0 + "@jupyterlab/outputarea": ^4.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/messaging": ^2.0.4 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + checksum: 0e84cb66438a854e7996dcd89a242f005548593ceb05b3c82e1ff0037d920f42353e4152870329dd6f9c1f72984303385f65181e8d52c83d7f7faa373c7ef36c + languageName: node + linkType: hard + +"@jupyterlab/lsp-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/lsp-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/lsp": ^4.6.0-alpha.0 + "@jupyterlab/running": ^4.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/polling": ^2.1.5 + "@lumino/signaling": ^2.1.5 + "@rjsf/utils": ^5.13.4 + react: ^18.2.0 + checksum: ee2cfe870c5729e2e7a3e41035d76441b1f336c3c9a3ee45171b4d383b864ecba612b0b21cf96dce76f5f72eb742cd6b38d0a37c22202928bbb687ce2021bb38 + languageName: node + linkType: hard + +"@jupyterlab/lsp@npm:^4.6.0-alpha.0, @jupyterlab/lsp@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/lsp@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/codeeditor": ^4.6.0-alpha.0 + "@jupyterlab/codemirror": ^4.6.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + lodash.mergewith: ^4.6.1 + vscode-jsonrpc: ^6.0.0 + vscode-languageserver-protocol: ^3.17.0 + vscode-ws-jsonrpc: ~1.0.2 + checksum: 2ac468a9ce2d67e81a4b5e744317fae6bebcdd2e7d03965b484125464a5c56be478a3e0e8ff1b3a8af2beebe4217a4cb02713c157a783e01b1513fc83a8f51f2 + languageName: node + linkType: hard + +"@jupyterlab/mainmenu-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/mainmenu-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/docmanager": ^4.6.0-alpha.0 + "@jupyterlab/filebrowser": ^4.6.0-alpha.0 + "@jupyterlab/mainmenu": ^4.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/messaging": ^2.0.4 + "@lumino/widgets": ^2.7.2 + checksum: f4d6ca04879f9355aa0910f1bf0a3640e5da51c8a70f9469f605ea1e6c742b3ef8cad04f72a6be3459bbab7a4164ac826faf76c7244ae9463b598bb644e86317 + languageName: node + linkType: hard + +"@jupyterlab/mainmenu@npm:^4.6.0-alpha.0, @jupyterlab/mainmenu@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/mainmenu@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/commands": ^2.3.3 + "@lumino/coreutils": ^2.2.2 + "@lumino/widgets": ^2.7.2 + checksum: 37b490a822b67ac0759112119785ffd51cefd357a4d4faf38011eef6cf99893a0d5abc9a43ffb8e0dd6d1a1a0cfdcfa0a1117b9964baa44488aaff32bf7f3ca0 + languageName: node + linkType: hard + +"@jupyterlab/markdownviewer-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/markdownviewer-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/markdownviewer": ^4.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/toc": ^6.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + checksum: b32de785dd08bbc73e802b3d6f1916377a8d3e73e8dc1c0bd2908db8e04d1175bca0ec0df119a289558b57f376c4eee14dbe3b8bd2d1b9ec7695dee0b24b9f1e + languageName: node + linkType: hard + +"@jupyterlab/markdownviewer@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/markdownviewer@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/toc": ^6.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/messaging": ^2.0.4 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + checksum: 38a21a1af3fc8c8b84c0851fa4c0b5ba9101cd7dad22318c2a266741af8743185e71ee6f39fc35725b07d7e750dae8b1b5d4606500e69fbe445becfc0a4c69c3 + languageName: node + linkType: hard + +"@jupyterlab/markedparser-extension@npm:^4.6.0-alpha.0, @jupyterlab/markedparser-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/markedparser-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/codemirror": ^4.6.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/mermaid": ^4.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + marked: ^16.2.1 + marked-gfm-heading-id: ^4.1.2 + marked-mangle: ^1.1.11 + checksum: ec9dcfb8c38b090cf5921c72fca45302d355d940e7071909802a550d12b95aea9c221348c204b9da60fc1ef8efab9c52061224f2d2b2552c3bb6c6f1fa55bcc7 + languageName: node + linkType: hard + +"@jupyterlab/mathjax-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/mathjax-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + mathjax-full: ^3.2.2 + checksum: 230b85a046c10d4e455e4e93d6e3f9b8623d655e833c8db49c1cc40dcd31b728f6107d90e04c04cfa56ebc48dc52d3385ca58001332a12a12e8a986ee3781bdd + languageName: node + linkType: hard + +"@jupyterlab/mermaid-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/mermaid-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/mermaid": ^4.6.0-alpha.0 + "@jupyterlab/rendermime-interfaces": ^3.14.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + checksum: 617b2e89f676a38d5a751a15ee463f0bc37c0409712e6f38970f67010c84fd1cb3975ab584d7514309dbc6a15ec1ffd41e3bdb4f5968965142898a57c602b591 + languageName: node + linkType: hard + +"@jupyterlab/mermaid@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/mermaid@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/rendermime-interfaces": ^3.14.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/widgets": ^2.7.2 + "@mermaid-js/layout-elk": ^0.2.0 + mermaid: ^11.12.1 + checksum: e1be022619797d9f74a47ada9a8f19ba328ddf585d39255ed5cc6ff61004b92a3f86cf840cb9af39f63a687d6e0bcb70afd4b7793b7ee0b98671038268b9c9f7 + languageName: node + linkType: hard + +"@jupyterlab/metadataform-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/metadataform-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/metadataform": ^4.6.0-alpha.0 + "@jupyterlab/notebook": ^4.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + checksum: 646ba3fba0d2c202ec27e63770df21ffa8a7da72f73cd4d31967e8e1079503020de97f43afbc865b5e3113fa889f2b33f19277b07033e20cd53d10bd5051e855 + languageName: node + linkType: hard + +"@jupyterlab/metadataform@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/metadataform@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/nbformat": ^4.6.0-alpha.0 + "@jupyterlab/notebook": ^4.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/messaging": ^2.0.4 + "@lumino/widgets": ^2.7.2 + "@rjsf/core": ^5.13.4 + "@rjsf/validator-ajv8": ^5.13.4 + json-schema: ^0.4.0 + react: ^18.2.0 + checksum: e8c164443eb5ec29155694f839cabee1795396637b128ad676df57f85faf4fff9da67e449cad1c203434e241babc43300d635fc6394e4394a2671bbe7e789b34 + languageName: node + linkType: hard + +"@jupyterlab/nbformat@npm:^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0": + version: 4.5.1 + resolution: "@jupyterlab/nbformat@npm:4.5.1" + dependencies: + "@lumino/coreutils": ^2.2.2 + checksum: 3883f224c731bb5825523ee982a4535f3d6c0123f9581ca147967595bfc142ab80b3fa5c93a61a03fb95212c40d5c36db049130f115647de78c8faeef0376bf5 + languageName: node + linkType: hard + +"@jupyterlab/nbformat@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/nbformat@npm:4.6.0-alpha.0" + dependencies: + "@lumino/coreutils": ^2.2.2 + checksum: c88f5fcbfbced19397031e783c053c1ed55b806b5e575f8b18315cebfb8cb3843ffe6a01482489bfdd06d9dc8a99271767a0d151574c5600ba755bb18a742443 + languageName: node + linkType: hard + +"@jupyterlab/notebook-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/notebook-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyter/ydoc": ^3.1.0 + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/cell-toolbar": ^4.6.0-alpha.0 + "@jupyterlab/cells": ^4.6.0-alpha.0 + "@jupyterlab/codeeditor": ^4.6.0-alpha.0 + "@jupyterlab/codemirror": ^4.6.0-alpha.0 + "@jupyterlab/completer": ^4.6.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/docmanager": ^4.6.0-alpha.0 + "@jupyterlab/docmanager-extension": ^4.6.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/documentsearch": ^4.6.0-alpha.0 + "@jupyterlab/filebrowser": ^4.6.0-alpha.0 + "@jupyterlab/launcher": ^4.6.0-alpha.0 + "@jupyterlab/logconsole": ^4.6.0-alpha.0 + "@jupyterlab/lsp": ^4.6.0-alpha.0 + "@jupyterlab/mainmenu": ^4.6.0-alpha.0 + "@jupyterlab/metadataform": ^4.6.0-alpha.0 + "@jupyterlab/nbformat": ^4.6.0-alpha.0 + "@jupyterlab/notebook": ^4.6.0-alpha.0 + "@jupyterlab/observables": ^5.6.0-alpha.0 + "@jupyterlab/property-inspector": ^4.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/statedb": ^4.6.0-alpha.0 + "@jupyterlab/statusbar": ^4.6.0-alpha.0 + "@jupyterlab/toc": ^6.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/commands": ^2.3.3 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/messaging": ^2.0.4 + "@lumino/polling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + "@rjsf/utils": ^5.13.4 + react: ^18.2.0 + checksum: 529a7b9f97ee178f268f08a3c85c94e1ad90fd433d33c31f716f3ecf177cd37144c9eef3cccaee7c61c8ba59367c3ebf570eed344050b5a9b602aa4c9a5ced00 + languageName: node + linkType: hard + +"@jupyterlab/notebook@npm:^4.6.0-alpha.0, @jupyterlab/notebook@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/notebook@npm:4.6.0-alpha.0" + dependencies: + "@jupyter/ydoc": ^3.1.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/cells": ^4.6.0-alpha.0 + "@jupyterlab/codeeditor": ^4.6.0-alpha.0 + "@jupyterlab/codemirror": ^4.6.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/documentsearch": ^4.6.0-alpha.0 + "@jupyterlab/lsp": ^4.6.0-alpha.0 + "@jupyterlab/markedparser-extension": ^4.6.0-alpha.0 + "@jupyterlab/nbformat": ^4.6.0-alpha.0 + "@jupyterlab/observables": ^5.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/statusbar": ^4.6.0-alpha.0 + "@jupyterlab/toc": ^6.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/domutils": ^2.0.4 + "@lumino/dragdrop": ^2.1.7 + "@lumino/messaging": ^2.0.4 + "@lumino/polling": ^2.1.5 + "@lumino/properties": ^2.0.4 + "@lumino/signaling": ^2.1.5 + "@lumino/virtualdom": ^2.0.4 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + checksum: 5fd03f79d5f15e3ec213571cfb67f9f03360b9529a957ede06848cbae9f36f27abc9a648b7d521aad801755c56f0200dcb8fbd4b637dfa76e6034f9ae07c15e5 + languageName: node + linkType: hard + +"@jupyterlab/observables@npm:^5.6.0-alpha.0": + version: 5.6.0-alpha.0 + resolution: "@jupyterlab/observables@npm:5.6.0-alpha.0" + dependencies: + "@lumino/algorithm": ^2.0.4 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/messaging": ^2.0.4 + "@lumino/signaling": ^2.1.5 + checksum: a9691f4fee4a53b9f0affd816af576adb611a10968f5dbce94c506e47bee1696a2a5a18d298ecc3e729b765e3dba0bd7dc587c291d4891f6180aa7d96005b581 + languageName: node + linkType: hard + +"@jupyterlab/outputarea@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/outputarea@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/nbformat": ^4.6.0-alpha.0 + "@jupyterlab/observables": ^5.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/rendermime-interfaces": ^3.14.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/messaging": ^2.0.4 + "@lumino/properties": ^2.0.4 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + checksum: 0bc5ceaa1420b7efd8bcd3622c0bf5da2d64e648f54f55c933936c52bbe0e3c601170a99cc5ddf0a8f8deda00315499b81821d2ed47e6fba86b9c8413b7e624b + languageName: node + linkType: hard + +"@jupyterlab/pdf-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/pdf-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/rendermime-interfaces": ^3.14.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/widgets": ^2.7.2 + checksum: fa851dd836dc11fbff281d840d532b25d2dfe51e720104700185579e4752897022483474043e7fe3da526485b9f92dc2de90df50eb171fbf86da8c90907ba0c5 + languageName: node + linkType: hard + +"@jupyterlab/pluginmanager-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/pluginmanager-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/pluginmanager": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + checksum: d20023c824a9c6f459e5970bdcfeb3470d6f012a3cb92a33000864fdde1fceeb0f8ccbe93d775dc1fe9de4212745ec1662c12f328ef4f59db4ecb98427fc84b7 + languageName: node + linkType: hard + +"@jupyterlab/pluginmanager@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/pluginmanager@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + checksum: 29ff824fa50b85632a80ab468dbe7660f7ed1956e6b2bf3ee7f1aadf71d2adb076bf201ec624926940b3bf3b3813217e44b2e98711a1545094e072756d0bf362 + languageName: node + linkType: hard + +"@jupyterlab/property-inspector@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/property-inspector@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + checksum: b6de1808dbcdcb3580f7bd684ce7d0c622f0279b2e7319441eed8704e3c18178177c797ee0de5643789810e687f4ddc0086dc62751e42d9361dffa6a94d634e5 + languageName: node + linkType: hard + +"@jupyterlab/rendermime-interfaces@npm:^3.14.0-alpha.0, @jupyterlab/rendermime-interfaces@npm:~3.14.0-alpha.0": + version: 3.14.0-alpha.0 + resolution: "@jupyterlab/rendermime-interfaces@npm:3.14.0-alpha.0" + dependencies: + "@lumino/coreutils": ^1.11.0 || ^2.2.2 + "@lumino/widgets": ^1.37.2 || ^2.7.2 + checksum: 6807baea1913d64223b2c280dc2f0b29a9f2b5f2f08c1f845f3434a4a3832ff5b21d0a3f049de43ed475c342b95d94a6f578dc0ce32d5e30e5f8670731517ce9 + languageName: node + linkType: hard + +"@jupyterlab/rendermime@npm:^4.6.0-alpha.0, @jupyterlab/rendermime@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/rendermime@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/nbformat": ^4.6.0-alpha.0 + "@jupyterlab/observables": ^5.6.0-alpha.0 + "@jupyterlab/rendermime-interfaces": ^3.14.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/messaging": ^2.0.4 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + lodash.escape: ^4.0.1 + checksum: 35cab9077cfd252ea238af0fe32d2944b76c1b84e862a06d8380c9d3c7df61623cdb2620fcc31021254aa04fee53505698661059857ac3d2236b348fe4c686b7 + languageName: node + linkType: hard + +"@jupyterlab/running-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/running-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/docmanager": ^4.6.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/rendermime-interfaces": ^3.14.0-alpha.0 + "@jupyterlab/running": ^4.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/statedb": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/commands": ^2.3.3 + "@lumino/polling": ^2.1.5 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + checksum: 7dd36c497479deeb814ce824436951c55ac1888fa31301667005e517fa2252a2d050ef5a542936c880d501178cc18098e97382f7e4bda088b72591468c3f0c21 + languageName: node + linkType: hard + +"@jupyterlab/running@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/running@npm:4.6.0-alpha.0" + dependencies: + "@jupyter/react-components": ^0.16.6 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/statedb": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/domutils": ^2.0.4 + "@lumino/messaging": ^2.0.4 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + checksum: 1af79a6d2db5f518a8b5ab35746810f7d6da52aff72517720c23ba41114c3ff9ca291dd4c85710441b6cf76193d06e8b8dc0701d125eeaeaf914a771ef394b2f + languageName: node + linkType: hard + +"@jupyterlab/services-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/services-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/services": ^7.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + checksum: b4bc2ce6206d68eaa959eef3ddc8f920956b9634b8c8b34b054989a7320ae19560d05c0f97e0d0c0f623294672c304c3cf9c1d6200482f6fed2f54222781b0a4 + languageName: node + linkType: hard + +"@jupyterlab/services@npm:^7.6.0-alpha.0, @jupyterlab/services@npm:~7.6.0-alpha.0": + version: 7.6.0-alpha.0 + resolution: "@jupyterlab/services@npm:7.6.0-alpha.0" + dependencies: + "@jupyter/ydoc": ^3.1.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/nbformat": ^4.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/statedb": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/polling": ^2.1.5 + "@lumino/properties": ^2.0.4 + "@lumino/signaling": ^2.1.5 + ws: ^8.11.0 + checksum: 46374c399729023db950516cc35d049ef8521fc0162662eb5f9c63dfd873d50de08c0d761af7f0df97f380ac6a388855f40a460dd48d9a53fb0b13c321a6274d + languageName: node + linkType: hard + +"@jupyterlab/settingeditor-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/settingeditor-extension@npm:4.6.0-alpha.0" + dependencies: + "@codemirror/commands": ^6.8.1 + "@codemirror/view": ^6.38.1 + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/codeeditor": ^4.6.0-alpha.0 + "@jupyterlab/pluginmanager": ^4.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/settingeditor": ^4.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/statedb": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/disposable": ^2.1.5 + react: ^18.2.0 + checksum: 884e4bf7b003c642867d808df02525dd3e7c7799d562cf79fc2956030ae3848f1650edae02a834bbb6c8d13d82f7e6ee467f6da10d713f5208a9eb755ae9b700 + languageName: node + linkType: hard + +"@jupyterlab/settingeditor@npm:^4.6.0-alpha.0, @jupyterlab/settingeditor@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/settingeditor@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/codeeditor": ^4.6.0-alpha.0 + "@jupyterlab/inspector": ^4.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/statedb": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/commands": ^2.3.3 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/messaging": ^2.0.4 + "@lumino/polling": ^2.1.5 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + "@rjsf/core": ^5.13.4 + "@rjsf/utils": ^5.13.4 + "@rjsf/validator-ajv8": ^5.13.4 + json-schema: ^0.4.0 + react: ^18.2.0 + checksum: 808fa509b083a7ade7f03536deb3c6e49417e2db018d9f44aba97f6b755d9e039dcf7832310628a63fdfb3e4f68aba346e92826697164fe33104a5cff18eebdc + languageName: node + linkType: hard + +"@jupyterlab/settingregistry@npm:^4.6.0-alpha.0, @jupyterlab/settingregistry@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/settingregistry@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/nbformat": ^4.6.0-alpha.0 + "@jupyterlab/statedb": ^4.6.0-alpha.0 + "@lumino/commands": ^2.3.3 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/signaling": ^2.1.5 + "@rjsf/utils": ^5.13.4 + ajv: ^8.12.0 + json5: ^2.2.3 + peerDependencies: + react: ">=16" + checksum: d2764e264d3ee622da9899be783567f446f0b0ced4aa3040ad65a255812d282f6b3ba46ab53ca732b3350b033b5b0eb9fc532723e7573e032506bf4b18e9703a + languageName: node + linkType: hard + +"@jupyterlab/shortcuts-extension@npm:~5.4.0-alpha.0": + version: 5.4.0-alpha.0 + resolution: "@jupyterlab/shortcuts-extension@npm:5.4.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/commands": ^2.3.3 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/domutils": ^2.0.4 + "@lumino/keyboard": ^2.0.4 + "@lumino/signaling": ^2.1.5 + react: ^18.2.0 + checksum: 1ce0408238b08ac50cec8f944709a725da993de1dddc93496b95b3056905a72b510a377e5d0749016e5d8f95a491305db9784dbfcf7e73c6d27a236d01165351 + languageName: node + linkType: hard + +"@jupyterlab/statedb@npm:^4.6.0-alpha.0, @jupyterlab/statedb@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/statedb@npm:4.6.0-alpha.0" + dependencies: + "@lumino/commands": ^2.3.3 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/properties": ^2.0.4 + "@lumino/signaling": ^2.1.5 + checksum: 5e717428208142494e5fff67b83f84309edc8793875706a1ccbd4caf5bc414f7b0c4df11aafa15ab2ba2ba836beca93352bd0c446bbb9289327a05b26da8905b + languageName: node + linkType: hard + +"@jupyterlab/statusbar@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/statusbar@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/messaging": ^2.0.4 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + checksum: 5aeecdf9deb7a4d061e27f6acba3e12e3e6462f1421fc2f4385d425b727a18d8a2de2da18a79da13e54e0fffc0ca689ef324286f20d5ec303d01f428fedc0e3e + languageName: node + linkType: hard + +"@jupyterlab/terminal-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/terminal-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/documentsearch": ^4.6.0-alpha.0 + "@jupyterlab/launcher": ^4.6.0-alpha.0 + "@jupyterlab/mainmenu": ^4.6.0-alpha.0 + "@jupyterlab/running": ^4.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/terminal": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/widgets": ^2.7.2 + "@xterm/addon-search": ~0.15.0 + color: ^5.0.0 + checksum: 9764f156d318f5ba56eae7da18d0ee7cdf6e6a34a951bc56aa526a326cf2445957737aae5f27b712730122a8ec13183faf8950a0e4546ff0a74431c63a1707ee + languageName: node + linkType: hard + +"@jupyterlab/terminal@npm:^4.6.0-alpha.0, @jupyterlab/terminal@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/terminal@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/domutils": ^2.0.4 + "@lumino/messaging": ^2.0.4 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + "@xterm/addon-canvas": ~0.7.0 + "@xterm/addon-fit": ~0.10.0 + "@xterm/addon-search": ~0.15.0 + "@xterm/addon-web-links": ~0.11.0 + "@xterm/addon-webgl": ~0.18.0 + "@xterm/xterm": ~5.5.0 + color: ^5.0.0 + checksum: 6fdbdf6d0cf6c2fbeb2c1b071abe772c0e8854437c4cdd2bf26cad2a0959d4aa834030e440efb943a777ac83caa681ade1cc118a89ad9e98878874c31a0340ed + languageName: node + linkType: hard + +"@jupyterlab/testing@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/testing@npm:4.6.0-alpha.0" + dependencies: + "@babel/core": ^7.10.2 + "@babel/preset-env": ^7.10.2 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/signaling": ^2.1.5 + 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 + simulate-event: ~1.4.0 + ts-jest: ^29.1.0 + peerDependencies: + typescript: ">=4.3" + checksum: 99a0c7c2632581600e908c0b5b80d9cbb615cad4142477617098270d21208eaff102efd68125f77c1051b732b8b2bd09140a97c5e69f1d8dd54f41d16580517c + languageName: node + linkType: hard + +"@jupyterlab/testutils@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/testutils@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/notebook": ^4.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/testing": ^4.6.0-alpha.0 + checksum: a66648c4a24026a7cf5f70b95cc36655fcf5b27445f5420395c740b4fcc658e76f146d36423dcde12030f6796e8bddc372e08787c0bc8c12d9145aefe033ce4f + languageName: node + linkType: hard + +"@jupyterlab/theme-dark-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/theme-dark-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + checksum: 8e2048745c6f294eaa023d50dab1d85f51afc8da2a270e8a5aee762c9299ed6c2f5200f85c5ee0ae8991c14aa27013246cc06346e9d9176c5c9c190dda7f3410 + languageName: node + linkType: hard + +"@jupyterlab/theme-dark-high-contrast-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/theme-dark-high-contrast-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + checksum: d6d8dad05816bdec625347897ec11541f5d3f2e88cc0fd6c65da10b761cba9280ee5cf79a382f0041eaf1dc5e829c59c9223c935f1613062000a5cae9fb6c323 + languageName: node + linkType: hard + +"@jupyterlab/theme-light-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/theme-light-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + checksum: e8009c36a1f10a32415b8b9e6f7e2f9e4dab99206f42b210dc238bfed0dcff0023bddae28c30fb4ff634cb79892caf6f269b8034032c07ab469f639350274ab9 + languageName: node + linkType: hard + +"@jupyterlab/toc-extension@npm:~6.6.0-alpha.0": + version: 6.6.0-alpha.0 + resolution: "@jupyterlab/toc-extension@npm:6.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/toc": ^6.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + checksum: 1e025aaa6e36b41e9a1b469ed20b6a7c8c4921cf1f7d90f755373036ba0a777f2f79baadfa2bc58b88711b0c7bb58a290e01fbfeb2987b25cb8ed1b51c55889a + languageName: node + linkType: hard + +"@jupyterlab/toc@npm:^6.6.0-alpha.0": + version: 6.6.0-alpha.0 + resolution: "@jupyterlab/toc@npm:6.6.0-alpha.0" + dependencies: + "@jupyter/react-components": ^0.16.6 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/observables": ^5.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/rendermime-interfaces": ^3.14.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/messaging": ^2.0.4 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + react: ^18.2.0 + checksum: 2356ce188f5248093529f2a6587a44b9e6994d51a9f28f691e66c703777e53566a84b1c4212c76000e17d6a6bca35bd2e9049e738a1fcbc64c5f46c514358b0d + languageName: node + linkType: hard + +"@jupyterlab/tooltip-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/tooltip-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/codeeditor": ^4.6.0-alpha.0 + "@jupyterlab/console": ^4.6.0-alpha.0 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/fileeditor": ^4.6.0-alpha.0 + "@jupyterlab/notebook": ^4.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/tooltip": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/coreutils": ^2.2.2 + "@lumino/widgets": ^2.7.2 + checksum: e656df43cc9be96a82ba364e1507c57e1535c0aa6c4408496353cbe08e820975568fbedb6486ec074f845a252ab68ccb7f6d7bfc4207052634446db7975a15db + languageName: node + linkType: hard + +"@jupyterlab/tooltip@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/tooltip@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/codeeditor": ^4.6.0-alpha.0 + "@jupyterlab/rendermime": ^4.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/messaging": ^2.0.4 + "@lumino/widgets": ^2.7.2 + checksum: 7d6c8cdace887b24bc4bba3b30444a239ebd2e6b93e5c443b01f27f47c5d6bb706eb21d6836ee53bf72096ab6c8172fea7d879e2508eed7b131e2234faa0036a + languageName: node + linkType: hard + +"@jupyterlab/translation-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/translation-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/mainmenu": ^4.6.0-alpha.0 + "@jupyterlab/settingregistry": ^4.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + checksum: 457f55f06f23fbd3fb1e07babc922be124204b3de762b375d0d650cf87e06cc69e13568d6229a456083b4d07755640235b2bba7a54d1cf01cc5473bd7ff6b70d + languageName: node + linkType: hard + +"@jupyterlab/translation@npm:^4.6.0-alpha.0, @jupyterlab/translation@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/translation@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/rendermime-interfaces": ^3.14.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/statedb": ^4.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + checksum: e258b658d3810dffe5850f301fb9002fa0d01e37d73e8b49938e8449f94075407998ddd75f19f45e8c21ce33de9883ea940c8445c1da5538e852c32bf02d4835 + languageName: node + linkType: hard + +"@jupyterlab/ui-components-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/ui-components-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/ui-components": ^4.6.0-alpha.0 + checksum: 3b1b646f1d5796e6d14f151b765798f17df3b2dbc179c43cb074ba868db56ccfdf884c67817955ee75ceedf6ae72bdc41bf5dce23a99e923f7fe0cc4b5bafc2d + languageName: node + linkType: hard + +"@jupyterlab/ui-components@npm:^4.6.0-alpha.0, @jupyterlab/ui-components@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/ui-components@npm:4.6.0-alpha.0" + dependencies: + "@jupyter/react-components": ^0.16.6 + "@jupyter/web-components": ^0.16.6 + "@jupyterlab/coreutils": ^6.6.0-alpha.0 + "@jupyterlab/observables": ^5.6.0-alpha.0 + "@jupyterlab/rendermime-interfaces": ^3.14.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@lumino/algorithm": ^2.0.4 + "@lumino/commands": ^2.3.3 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/messaging": ^2.0.4 + "@lumino/polling": ^2.1.5 + "@lumino/properties": ^2.0.4 + "@lumino/signaling": ^2.1.5 + "@lumino/virtualdom": ^2.0.4 + "@lumino/widgets": ^2.7.2 + "@rjsf/core": ^5.13.4 + "@rjsf/utils": ^5.13.4 + react: ^18.2.0 + react-dom: ^18.2.0 + typestyle: ^2.0.4 + peerDependencies: + react: ^18.2.0 + checksum: 174cd7f94def4cbd4784470949fe9b5152f1073e28fafff97620d8ff606efc91ed7e0c09266b769e835b9c1bbfe685e4bf5fae3cc467057cca568196d847c7b3 + languageName: node + linkType: hard + +"@jupyterlab/vega5-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/vega5-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/rendermime-interfaces": ^3.14.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/widgets": ^2.7.2 + vega: ^5.20.0 + vega-embed: ^6.2.1 + vega-lite: ^5.6.1-next.1 + checksum: b9f998e0e0f5ea5dab6cb5a3537a625a10f1547ddbb27c3bb5fa68de824169f7511e549052fa59cb8d790da2586219b4c222692dfa97bd25e47abfe477966736 + languageName: node + linkType: hard + +"@jupyterlab/video-extension@npm:~4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/video-extension@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/application": ^4.6.0-alpha.0 + "@jupyterlab/apputils": ^4.7.0-alpha.0 + "@jupyterlab/docregistry": ^4.6.0-alpha.0 + "@jupyterlab/services": ^7.6.0-alpha.0 + "@jupyterlab/translation": ^4.6.0-alpha.0 + "@lumino/widgets": ^2.7.2 + checksum: ba6e49ddc917bd4eda019f60aeb68aa56c9e7bfcbc43a00402194d87c40e640b8c305660156d9defaad401423542390aad25bb23c35d8da479e4454ff436e824 + languageName: node + linkType: hard + +"@jupyterlab/workspaces@npm:^4.6.0-alpha.0": + version: 4.6.0-alpha.0 + resolution: "@jupyterlab/workspaces@npm:4.6.0-alpha.0" + dependencies: + "@jupyterlab/services": ^7.6.0-alpha.0 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/polling": ^2.1.5 + "@lumino/signaling": ^2.1.5 + checksum: d6fed7a367ddbd562c1ce087d6806d2db98bcb79abd5fdfe24229d4d3034d0d4fe8ee8074fb2d6d82cb041e17cbdd9796421200fd8b540ed7419ba9b6e3ac109 + languageName: node + linkType: hard + +"@leichtgewicht/ip-codec@npm:^2.0.1": + version: 2.0.5 + resolution: "@leichtgewicht/ip-codec@npm:2.0.5" + checksum: 4fcd025d0a923cb6b87b631a83436a693b255779c583158bbeacde6b4dd75b94cc1eba1c9c188de5fc36c218d160524ea08bfe4ef03a056b00ff14126d66f881 + languageName: node + linkType: hard + +"@lerna/child-process@npm:7.4.2": + version: 7.4.2 + resolution: "@lerna/child-process@npm:7.4.2" + dependencies: + chalk: ^4.1.0 + execa: ^5.0.0 + strong-log-transformer: ^2.1.0 + checksum: 0ddd978006f2de49345c0cb8c64952944d9e02ca5f9ac82c272fd7ace2c9733bdfdc6dea8b5d21320f38f915330389be5bd65356eb197a3256796856ecefdf59 + languageName: node + linkType: hard + +"@lerna/create@npm:7.4.2": + version: 7.4.2 + resolution: "@lerna/create@npm:7.4.2" + dependencies: + "@lerna/child-process": 7.4.2 + "@npmcli/run-script": 6.0.2 + "@nx/devkit": ">=16.5.1 < 17" + "@octokit/plugin-enterprise-rest": 6.0.1 + "@octokit/rest": 19.0.11 + byte-size: 8.1.1 + chalk: 4.1.0 + clone-deep: 4.0.1 + cmd-shim: 6.0.1 + columnify: 1.6.0 + conventional-changelog-core: 5.0.1 + conventional-recommended-bump: 7.0.1 + cosmiconfig: ^8.2.0 + dedent: 0.7.0 + execa: 5.0.0 + fs-extra: ^11.1.1 + get-stream: 6.0.0 + git-url-parse: 13.1.0 + glob-parent: 5.1.2 + globby: 11.1.0 + graceful-fs: 4.2.11 + has-unicode: 2.0.1 + ini: ^1.3.8 + init-package-json: 5.0.0 + inquirer: ^8.2.4 + is-ci: 3.0.1 + is-stream: 2.0.0 + js-yaml: 4.1.0 + libnpmpublish: 7.3.0 + load-json-file: 6.2.0 + lodash: ^4.17.21 + make-dir: 4.0.0 + minimatch: 3.0.5 + multimatch: 5.0.0 + node-fetch: 2.6.7 + npm-package-arg: 8.1.1 + npm-packlist: 5.1.1 + npm-registry-fetch: ^14.0.5 + npmlog: ^6.0.2 + nx: ">=16.5.1 < 17" + p-map: 4.0.0 + p-map-series: 2.1.0 + p-queue: 6.6.2 + p-reduce: ^2.1.0 + pacote: ^15.2.0 + pify: 5.0.0 + read-cmd-shim: 4.0.0 + read-package-json: 6.0.4 + resolve-from: 5.0.0 + rimraf: ^4.4.1 + semver: ^7.3.4 + signal-exit: 3.0.7 + slash: ^3.0.0 + ssri: ^9.0.1 + strong-log-transformer: 2.1.0 + tar: 6.1.11 + temp-dir: 1.0.0 + upath: 2.0.1 + uuid: ^9.0.0 + validate-npm-package-license: ^3.0.4 + validate-npm-package-name: 5.0.0 + write-file-atomic: 5.0.1 + write-pkg: 4.0.0 + yargs: 16.2.0 + yargs-parser: 20.2.4 + checksum: 1b8acfde0ffebcf092a48c8f73df4dda15d1d568f66ebb3c15d1004b68fe3996692a72fbe20d9aec35051cf071de8de6d595c9ce7f38718f9b8c8514efe44528 + languageName: node + linkType: hard + +"@lezer/common@npm:^1.0.0, @lezer/common@npm:^1.0.2, @lezer/common@npm:^1.1.0, @lezer/common@npm:^1.2.0, @lezer/common@npm:^1.2.1": + version: 1.2.1 + resolution: "@lezer/common@npm:1.2.1" + checksum: 0bd092e293a509ce334f4aaf9a4d4a25528f743cd9d7e7948c697e34ac703b805b288b62ad01563488fb206fc34ff05084f7fc5d864be775924b3d0d53ea5dd2 + 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.1.0, @lezer/css@npm:^1.1.7": + version: 1.1.9 + resolution: "@lezer/css@npm:1.1.9" + dependencies: + "@lezer/common": ^1.2.0 + "@lezer/highlight": ^1.0.0 + "@lezer/lr": ^1.0.0 + checksum: 25c63475061a3c9f87961a7f85c5f547f14fb7e81b0864675d2206999a874a0559d676145c74c6ccde39519dbc8aa33e216265f5366d08060507b6c9e875fe0f + languageName: node + linkType: hard + +"@lezer/generator@npm:^1.7.0": + version: 1.7.0 + resolution: "@lezer/generator@npm:1.7.0" + dependencies: + "@lezer/common": ^1.1.0 + "@lezer/lr": ^1.3.0 + bin: + lezer-generator: src/lezer-generator.cjs + checksum: 69f4c6625446cb65adaa509480ec67502f27651707a8e45e99373e682d7f66f8842205669f174bcb138eade72c64ded0b54d6de6aa5af995ac1f1e805ef021fd + languageName: node + linkType: hard + +"@lezer/highlight@npm:^1.0.0, @lezer/highlight@npm:^1.1.3, @lezer/highlight@npm:^1.2.0": + version: 1.2.0 + resolution: "@lezer/highlight@npm:1.2.0" + dependencies: + "@lezer/common": ^1.0.0 + checksum: 5b9dfe741f95db13f6124cb9556a43011cb8041ecf490be98d44a86b04d926a66e912bcd3a766f6a3d79e064410f1a2f60ab240b50b645a12c56987bf4870086 + 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.8 + resolution: "@lezer/javascript@npm:1.4.8" + dependencies: + "@lezer/highlight": ^1.1.3 + "@lezer/lr": ^1.3.0 + checksum: d0c1de5dd756c0a64b440984273cf5a9ef0d227d6b059d2db96c62fde869e34427b46389d56401d067c82222f11373e2d20f9280e4c403bf681ec6a35ae16126 + 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.13 + resolution: "@lezer/lr@npm:1.3.13" + dependencies: + "@lezer/common": ^1.0.0 + checksum: aad0cb8908796a6b49116842fd490093aa0de54b48150a60a4f418815c014f7a1b4355615832e305caea5c0ba8c5ab577f82aebcd0ea04586b8199284ef0fec8 + languageName: node + linkType: hard + +"@lezer/markdown@npm:^1.0.0, @lezer/markdown@npm:^1.3.0": + version: 1.3.0 + resolution: "@lezer/markdown@npm:1.3.0" + dependencies: + "@lezer/common": ^1.0.0 + "@lezer/highlight": ^1.0.0 + checksum: 13eb2720e4cb84278349bad8af116f748813094f99fad02680010c3a8c5985e0358c344487990f87a31ef0d6c1a2be582301f914c0e4a6e9cfa22647b6cd6545 + 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 + +"@ljharb/through@npm:^2.3.9": + version: 2.3.9 + resolution: "@ljharb/through@npm:2.3.9" + checksum: a47ffed12ef4b08d07458db8bff5f7a13a7030fddf7dbfa947a765581a634d42ee90f7b8c249315aad122c21ad061e97a74f65aef3c03d2c09291d11312f0bfb + languageName: node + linkType: hard + +"@lumino/algorithm@npm:^2.0.4": + version: 2.0.4 + resolution: "@lumino/algorithm@npm:2.0.4" + checksum: ec1532fc294666fb483dd35082ec50ad979d0e9e1daf7a951ca045fd36a1ae88c7c73bf09c1aafed1ea826319f038ec2ed7058f58d214d5ed9f6a4cf61f232e8 + languageName: node + linkType: hard + +"@lumino/application@npm:^2.4.5": + version: 2.4.5 + resolution: "@lumino/application@npm:2.4.5" + dependencies: + "@lumino/commands": ^2.3.3 + "@lumino/coreutils": ^2.2.2 + "@lumino/widgets": ^2.7.2 + checksum: 7a034b49cfde045a81d3ed0cb51bfff79a595f9e299c601cc71c19c0709dfe49db5a0a21fdc36fb9d77e441f144ebbeabf9f5ff132a265d530ad3551e9ecc11b + languageName: node + linkType: hard + +"@lumino/collections@npm:^2.0.4": + version: 2.0.4 + resolution: "@lumino/collections@npm:2.0.4" + dependencies: + "@lumino/algorithm": ^2.0.4 + checksum: ee8dfdcde3815ddb72d977705e8295ee9500a44697717a86fed644dd810bce8d8ad448659eec02dafeee1b1b3a74fc851224481933c385a812055793d34224f1 + languageName: node + linkType: hard + +"@lumino/commands@npm:^2.3.3": + version: 2.3.3 + resolution: "@lumino/commands@npm:2.3.3" + dependencies: + "@lumino/algorithm": ^2.0.4 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/domutils": ^2.0.4 + "@lumino/keyboard": ^2.0.4 + "@lumino/signaling": ^2.1.5 + "@lumino/virtualdom": ^2.0.4 + checksum: 4f44b180b7ce4580647fb86a61c00b8638ce9d538a7222feb85073f691f29b2f942b79a71f11e25d503c6d4ad3e8becec67cb8829710b34e04676f41d3505937 + languageName: node + linkType: hard + +"@lumino/coreutils@npm:^1.11.0 || ^2.0.0, @lumino/coreutils@npm:^1.11.0 || ^2.2.2, @lumino/coreutils@npm:^2.2.2, @lumino/coreutils@npm:~2.2.2": + version: 2.2.2 + resolution: "@lumino/coreutils@npm:2.2.2" + dependencies: + "@lumino/algorithm": ^2.0.4 + checksum: ec4f7eedcd8e27c43f541bcf9d571fc69e82959879c80a50c7c6fb803d923834399e3a52e6c044a898426e220168602f0c4ca702c9683354510f5393fe3b160a + languageName: node + linkType: hard + +"@lumino/datagrid@npm:^2.5.3": + version: 2.5.3 + resolution: "@lumino/datagrid@npm:2.5.3" + dependencies: + "@lumino/algorithm": ^2.0.4 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/domutils": ^2.0.4 + "@lumino/dragdrop": ^2.1.7 + "@lumino/keyboard": ^2.0.4 + "@lumino/messaging": ^2.0.4 + "@lumino/signaling": ^2.1.5 + "@lumino/widgets": ^2.7.2 + checksum: 6dd9c1f6bfdd5133d762aa19f50bb949ef1ad166a06d6c71c4c25076d45854503a2cace33ee75725bbadef96f1316104e7af833179ef507d579c87352858aaa6 + languageName: node + linkType: hard + +"@lumino/disposable@npm:^1.10.0 || ^2.0.0, @lumino/disposable@npm:^2.1.5": + version: 2.1.5 + resolution: "@lumino/disposable@npm:2.1.5" + dependencies: + "@lumino/signaling": ^2.1.5 + checksum: 31b3edd0643dd8d64131379a379c6364ff7a7e1884186d56a6e7b812cc8ee52f38cb43c20e8d45a8a5343a80af4a8180acf62c51f59c9a522349f35c65fe4d29 + languageName: node + linkType: hard + +"@lumino/domutils@npm:^2.0.4": + version: 2.0.4 + resolution: "@lumino/domutils@npm:2.0.4" + checksum: 5aacb1e3f597c8dd24fc09c7dabc97c630c293e43afaf7100e59d630bb9379b96b88536a37559cf92102a82364ab80734ccb21eb12811df8ed6ca2662e5cf9f1 + languageName: node + linkType: hard + +"@lumino/dragdrop@npm:^2.1.7": + version: 2.1.7 + resolution: "@lumino/dragdrop@npm:2.1.7" + dependencies: + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + checksum: 92365f45bf3876db2575e6c46a8951f5521fa889146a760386fd189927ae14b7fb00a0e3390f78cfca2703d9d57854e3b17fb4b457a8f288df268f3a36158858 + languageName: node + linkType: hard + +"@lumino/keyboard@npm:^2.0.4": + version: 2.0.4 + resolution: "@lumino/keyboard@npm:2.0.4" + checksum: 550497726ab8a17e9046fe88f74fbf0ae32e2811d9d7138ccefc7758e8cbf22c6705f3aca8415e0419def17939e12b1363268d71aae00e22f6bbbcfaff5faf82 + languageName: node + linkType: hard + +"@lumino/messaging@npm:^2.0.4": + version: 2.0.4 + resolution: "@lumino/messaging@npm:2.0.4" + dependencies: + "@lumino/algorithm": ^2.0.4 + "@lumino/collections": ^2.0.4 + checksum: 08b8ec0fcb21f61a2fa7050d22f94c9c54bf3d310c014a16bea5966320ba760a39bfecc9cd21e1d09ec367805ac0ad8be2466fff15ca1be7536a1077297eb6c7 + languageName: node + linkType: hard + +"@lumino/polling@npm:^2.1.5": + version: 2.1.5 + resolution: "@lumino/polling@npm:2.1.5" + dependencies: + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/signaling": ^2.1.5 + checksum: 2b510ef4a5ac05470f01281112d1c467ea95f9f783f702d61fe512d8efecda93f360c907eb3e9fd180f507afe79face1d0ca7878a9d844a3e1f588aba7c5a28e + languageName: node + linkType: hard + +"@lumino/properties@npm:^2.0.4": + version: 2.0.4 + resolution: "@lumino/properties@npm:2.0.4" + checksum: f76d03ba0db12d3c83517484e1cd427b49006bf71e5e1bda00ddb1f02ab85a0079e47c715572a809d4102b348422cab15d587285a0fa17e7e91bbd288d9b6112 + languageName: node + linkType: hard + +"@lumino/signaling@npm:^1.10.0 || ^2.0.0, @lumino/signaling@npm:^2.1.5": + version: 2.1.5 + resolution: "@lumino/signaling@npm:2.1.5" + dependencies: + "@lumino/algorithm": ^2.0.4 + "@lumino/coreutils": ^2.2.2 + checksum: ca8fa6f55a28e1dc05ae2a9ab89f34dbbbc4678e891689bfc84ef3a4f85bfdd4abfcff05ff08d6733872bd6808d71138de5fe35692cced6f008d2893b8506d47 + languageName: node + linkType: hard + +"@lumino/virtualdom@npm:^2.0.4": + version: 2.0.4 + resolution: "@lumino/virtualdom@npm:2.0.4" + dependencies: + "@lumino/algorithm": ^2.0.4 + checksum: 2153f31703088a2dc7dc9cd2353f2876ae626839d267be50c0b191c187649b04b8d1596810f6294afc041e183baff5e5e8e9e4958ce8006df2c5c6ced7bbea42 + languageName: node + linkType: hard + +"@lumino/widgets@npm:^1.37.2 || ^2.7.2, @lumino/widgets@npm:^2.7.2": + version: 2.7.2 + resolution: "@lumino/widgets@npm:2.7.2" + dependencies: + "@lumino/algorithm": ^2.0.4 + "@lumino/commands": ^2.3.3 + "@lumino/coreutils": ^2.2.2 + "@lumino/disposable": ^2.1.5 + "@lumino/domutils": ^2.0.4 + "@lumino/dragdrop": ^2.1.7 + "@lumino/keyboard": ^2.0.4 + "@lumino/messaging": ^2.0.4 + "@lumino/properties": ^2.0.4 + "@lumino/signaling": ^2.1.5 + "@lumino/virtualdom": ^2.0.4 + checksum: ca9017aecc1df504f433a6189ede84d8ae3ec2c76dd612cf1b43f131ace5d992e6f8ac5359f6ec04abd336c8abadc5eeada43f48f5140cfed54630f1bd84b44a + languageName: node + linkType: hard + +"@marijn/find-cluster-break@npm:^1.0.0": + version: 1.0.2 + resolution: "@marijn/find-cluster-break@npm:1.0.2" + checksum: 0d836de25e04d58325813401ef3c2d34caf040da985a5935fcbc9d84e7b47a21bdb15f57d70c2bf0960bd29ed3dbbb1afd00cdd0fc4fafbee7fd0ffe7d508ae1 + languageName: node + linkType: hard + +"@mermaid-js/layout-elk@npm:^0.2.0": + version: 0.2.0 + resolution: "@mermaid-js/layout-elk@npm:0.2.0" + dependencies: + d3: ^7.9.0 + elkjs: ^0.9.3 + peerDependencies: + mermaid: ^11.0.2 + checksum: 1a1ca0ebe32367de883341f2f10484086aacff498f57a3366aec8fcea1749bea66ea574021223de69ac065a7c914c6cd56f385c48c0a7d25c11a71571903ee6d + languageName: node + linkType: hard + +"@mermaid-js/parser@npm:^0.6.3": + version: 0.6.3 + resolution: "@mermaid-js/parser@npm:0.6.3" + dependencies: + langium: 3.3.1 + checksum: 6a3df5e694c6af793571c60265f5f1d25f39f3bb09f87fa91fa135ee36c2a01ec000ca34abdc801cf2baff4c5dbcaf41af38d710374eb5f678add626cc96f7ab + languageName: node + linkType: hard + +"@microsoft/fast-colors@npm:^5.3.1": + version: 5.3.1 + resolution: "@microsoft/fast-colors@npm:5.3.1" + checksum: ff87f402faadb4b5aeee3d27762566c11807f927cd4012b8bbc7f073ca68de0e2197f95330ff5dfd7038f4b4f0e2f51b11feb64c5d570f5c598d37850a5daf60 + languageName: node + linkType: hard + +"@microsoft/fast-element@npm:^1.12.0": + version: 1.12.0 + resolution: "@microsoft/fast-element@npm:1.12.0" + checksum: bbff4e9c83106d1d74f3eeedc87bf84832429e78fee59c6a4ae8164ee4f42667503f586896bea72341b4d2c76c244a3cb0d4fd0d5d3732755f00357714dd609e + languageName: node + linkType: hard + +"@microsoft/fast-foundation@npm:^2.49.4": + version: 2.49.5 + resolution: "@microsoft/fast-foundation@npm:2.49.5" + dependencies: + "@microsoft/fast-element": ^1.12.0 + "@microsoft/fast-web-utilities": ^5.4.1 + tabbable: ^5.2.0 + tslib: ^1.13.0 + checksum: 8a4729e8193ee93f780dc88fac26561b42f2636e3f0a8e89bb1dfe256f50a01a21ed1d8e4d31ce40678807dc833e25f31ba735cb5d3c247b65219aeb2560c82c + languageName: node + linkType: hard + +"@microsoft/fast-web-utilities@npm:^5.4.1": + version: 5.4.1 + resolution: "@microsoft/fast-web-utilities@npm:5.4.1" + dependencies: + exenv-es6: ^1.1.1 + checksum: 303e87847f962944f474e3716c3eb305668243916ca9e0719e26bb9a32346144bc958d915c103776b3e552cea0f0f6233f839fad66adfdf96a8436b947288ca7 + languageName: node + linkType: hard + +"@module-federation/error-codes@npm:0.21.6": + version: 0.21.6 + resolution: "@module-federation/error-codes@npm:0.21.6" + checksum: 72074622656a52b20649b45cc635ca0995263edf1ab0167f78af28540170881487aaf0dd69f25b69972406ced98758c4f77ba29d667831fd0c8536b9c2491d5b + languageName: node + linkType: hard + +"@module-federation/runtime-core@npm:0.21.6": + version: 0.21.6 + resolution: "@module-federation/runtime-core@npm:0.21.6" + dependencies: + "@module-federation/error-codes": 0.21.6 + "@module-federation/sdk": 0.21.6 + checksum: 54f49b0a0073206bb1a77e46df73298e0bdc5f463ded8094519177e7e014aec3589b5e92da0935d12aecb75ccf2def55dc00eb33f6a570b0eb41ad6b56bcf535 + languageName: node + linkType: hard + +"@module-federation/runtime-tools@npm:0.21.6": + version: 0.21.6 + resolution: "@module-federation/runtime-tools@npm:0.21.6" + dependencies: + "@module-federation/runtime": 0.21.6 + "@module-federation/webpack-bundler-runtime": 0.21.6 + checksum: 36e7ccab948e11f310e87397a1a2185b56064e5691e553b34173686e2bc7372ec710e5ad48c026eb28c85b168765788b743aa2111513f3b57118b47636312dd1 + languageName: node + linkType: hard + +"@module-federation/runtime@npm:0.21.6": + version: 0.21.6 + resolution: "@module-federation/runtime@npm:0.21.6" + dependencies: + "@module-federation/error-codes": 0.21.6 + "@module-federation/runtime-core": 0.21.6 + "@module-federation/sdk": 0.21.6 + checksum: 93fd9bb284630933cab7e4bc070d648b56272f3636038c05eec7d1e3eeb189be3ccebe5f8ecc450197ee992d2616ed282d54e673ec0acd63adee4faddf80b144 + languageName: node + linkType: hard + +"@module-federation/sdk@npm:0.21.6": + version: 0.21.6 + resolution: "@module-federation/sdk@npm:0.21.6" + checksum: d8830e3e549d31eeeec146f8ea2b720bb79f81a305018eb332044667372ee4468cca8c60818cd1fa2dfef8df4df48857a2e4020cd6bf8f002faecebe530a7f0e + languageName: node + linkType: hard + +"@module-federation/webpack-bundler-runtime@npm:0.21.6": + version: 0.21.6 + resolution: "@module-federation/webpack-bundler-runtime@npm:0.21.6" + dependencies: + "@module-federation/runtime": 0.21.6 + "@module-federation/sdk": 0.21.6 + checksum: 4ebad448c424b280ef4a8320a3c5ab52d49894dc23ac750b3082b214219f2324a6642c6245997d8d32031af9da313c7954d85385c896f63d0c92556e2613ccee + languageName: node + linkType: hard + +"@napi-rs/wasm-runtime@npm:1.0.7": + version: 1.0.7 + resolution: "@napi-rs/wasm-runtime@npm:1.0.7" + dependencies: + "@emnapi/core": ^1.5.0 + "@emnapi/runtime": ^1.5.0 + "@tybys/wasm-util": ^0.10.1 + checksum: 9b59bd8b7310936ed163935befae0613dfffd563e7ff021d4f1b62b419fb0e3395f7206b17460a91db555bea6c471408f3472455e4e2ca9f5a0bff4468fa38d0 + 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 + +"@npmcli/git@npm:^4.0.0": + version: 4.1.0 + resolution: "@npmcli/git@npm:4.1.0" + dependencies: + "@npmcli/promise-spawn": ^6.0.0 + lru-cache: ^7.4.4 + npm-pick-manifest: ^8.0.0 + proc-log: ^3.0.0 + promise-inflight: ^1.0.1 + promise-retry: ^2.0.1 + semver: ^7.3.5 + which: ^3.0.0 + checksum: 37efb926593f294eb263297cdfffec9141234f977b89a7a6b95ff7a72576c1d7f053f4961bc4b5e79dea6476fe08e0f3c1ed9e4aeb84169e357ff757a6a70073 + languageName: node + linkType: hard + +"@npmcli/installed-package-contents@npm:^2.0.1": + version: 2.0.2 + resolution: "@npmcli/installed-package-contents@npm:2.0.2" + dependencies: + npm-bundled: ^3.0.0 + npm-normalize-package-bin: ^3.0.0 + bin: + installed-package-contents: lib/index.js + checksum: 60789d5ed209ee5df479232f62d9d38ecec36e95701cae88320b828b8651351b32d7b47d16d4c36cc7ce5000db4bf1f3e6981bed6381bdc5687ff4bc0795682d + languageName: node + linkType: hard + +"@npmcli/node-gyp@npm:^3.0.0": + version: 3.0.0 + resolution: "@npmcli/node-gyp@npm:3.0.0" + checksum: fe3802b813eecb4ade7ad77c9396cb56721664275faab027e3bd8a5e15adfbbe39e2ecc19f7885feb3cfa009b96632741cc81caf7850ba74440c6a2eee7b4ffc + languageName: node + linkType: hard + +"@npmcli/promise-spawn@npm:^6.0.0, @npmcli/promise-spawn@npm:^6.0.1": + version: 6.0.2 + resolution: "@npmcli/promise-spawn@npm:6.0.2" + dependencies: + which: ^3.0.0 + checksum: aa725780c13e1f97ab32ed7bcb5a207a3fb988e1d7ecdc3d22a549a22c8034740366b351c4dde4b011bcffcd8c4a7be6083d9cf7bc7e897b88837150de018528 + languageName: node + linkType: hard + +"@npmcli/run-script@npm:6.0.2, @npmcli/run-script@npm:^6.0.0": + version: 6.0.2 + resolution: "@npmcli/run-script@npm:6.0.2" + dependencies: + "@npmcli/node-gyp": ^3.0.0 + "@npmcli/promise-spawn": ^6.0.0 + node-gyp: ^9.0.0 + read-package-json-fast: ^3.0.0 + which: ^3.0.0 + checksum: 7a671d7dbeae376496e1c6242f02384928617dc66cd22881b2387272205c3668f8490ec2da4ad63e1abf979efdd2bdf4ea0926601d78578e07d83cfb233b3a1a + languageName: node + linkType: hard + +"@nrwl/devkit@npm:16.10.0": + version: 16.10.0 + resolution: "@nrwl/devkit@npm:16.10.0" + dependencies: + "@nx/devkit": 16.10.0 + checksum: 92c40138f7d107da82d14adca1cedb16ff45583f486cf624d047b2928521f92da6f69a5bdeae0bd98a37dfa553883843f36088ee6ace8d76a5170a5730b89a40 + languageName: node + linkType: hard + +"@nrwl/tao@npm:16.10.0": + version: 16.10.0 + resolution: "@nrwl/tao@npm:16.10.0" + dependencies: + nx: 16.10.0 + tslib: ^2.3.0 + bin: + tao: index.js + checksum: a973a9fbed8fea33bfcb1b39b4bb29371ea00d116bbe7e39f2e7c8a9448b86e7c499d0aef79f262d9a993d103b4451d6749889e307212421b10838d49454a35c + languageName: node + linkType: hard + +"@nx/devkit@npm:16.10.0, @nx/devkit@npm:>=16.5.1 < 17": + version: 16.10.0 + resolution: "@nx/devkit@npm:16.10.0" + dependencies: + "@nrwl/devkit": 16.10.0 + ejs: ^3.1.7 + enquirer: ~2.3.6 + ignore: ^5.0.4 + semver: 7.5.3 + tmp: ~0.2.1 + tslib: ^2.3.0 + peerDependencies: + nx: ">= 15 <= 17" + checksum: f79f22be16d216aabc12df06f4f6d93026082c86114a99a66915f2993b4052ee8c66fd8eccad916e487a3f012890b89c4dd6a2ca8f3f95150ac824fab187a55a + languageName: node + linkType: hard + +"@nx/nx-darwin-arm64@npm:16.10.0": + version: 16.10.0 + resolution: "@nx/nx-darwin-arm64@npm:16.10.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@nx/nx-darwin-x64@npm:16.10.0": + version: 16.10.0 + resolution: "@nx/nx-darwin-x64@npm:16.10.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@nx/nx-freebsd-x64@npm:16.10.0": + version: 16.10.0 + resolution: "@nx/nx-freebsd-x64@npm:16.10.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@nx/nx-linux-arm-gnueabihf@npm:16.10.0": + version: 16.10.0 + resolution: "@nx/nx-linux-arm-gnueabihf@npm:16.10.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@nx/nx-linux-arm64-gnu@npm:16.10.0": + version: 16.10.0 + resolution: "@nx/nx-linux-arm64-gnu@npm:16.10.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@nx/nx-linux-arm64-musl@npm:16.10.0": + version: 16.10.0 + resolution: "@nx/nx-linux-arm64-musl@npm:16.10.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@nx/nx-linux-x64-gnu@npm:16.10.0": + version: 16.10.0 + resolution: "@nx/nx-linux-x64-gnu@npm:16.10.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@nx/nx-linux-x64-musl@npm:16.10.0": + version: 16.10.0 + resolution: "@nx/nx-linux-x64-musl@npm:16.10.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@nx/nx-win32-arm64-msvc@npm:16.10.0": + version: 16.10.0 + resolution: "@nx/nx-win32-arm64-msvc@npm:16.10.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@nx/nx-win32-x64-msvc@npm:16.10.0": + version: 16.10.0 + resolution: "@nx/nx-win32-x64-msvc@npm:16.10.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@octokit/auth-token@npm:^3.0.0": + version: 3.0.4 + resolution: "@octokit/auth-token@npm:3.0.4" + checksum: 42f533a873d4192e6df406b3176141c1f95287423ebdc4cf23a38bb77ee00ccbc0e60e3fbd5874234fc2ed2e67bbc6035e3b0561dacc1d078adb5c4ced3579e3 + languageName: node + linkType: hard + +"@octokit/core@npm:^4.2.1": + version: 4.2.4 + resolution: "@octokit/core@npm:4.2.4" + dependencies: + "@octokit/auth-token": ^3.0.0 + "@octokit/graphql": ^5.0.0 + "@octokit/request": ^6.0.0 + "@octokit/request-error": ^3.0.0 + "@octokit/types": ^9.0.0 + before-after-hook: ^2.2.0 + universal-user-agent: ^6.0.0 + checksum: ac8ab47440a31b0228a034aacac6994b64d6b073ad5b688b4c5157fc5ee0d1af1c926e6087bf17fd7244ee9c5998839da89065a90819bde4a97cb77d4edf58a6 + languageName: node + linkType: hard + +"@octokit/endpoint@npm:^7.0.0": + version: 7.0.6 + resolution: "@octokit/endpoint@npm:7.0.6" + dependencies: + "@octokit/types": ^9.0.0 + is-plain-object: ^5.0.0 + universal-user-agent: ^6.0.0 + checksum: 7caebf30ceec50eb7f253341ed419df355232f03d4638a95c178ee96620400db7e4a5e15d89773fe14db19b8653d4ab4cc81b2e93ca0c760b4e0f7eb7ad80301 + languageName: node + linkType: hard + +"@octokit/graphql@npm:^5.0.0": + version: 5.0.6 + resolution: "@octokit/graphql@npm:5.0.6" + dependencies: + "@octokit/request": ^6.0.0 + "@octokit/types": ^9.0.0 + universal-user-agent: ^6.0.0 + checksum: 7be545d348ef31dcab0a2478dd64d5746419a2f82f61459c774602bcf8a9b577989c18001f50b03f5f61a3d9e34203bdc021a4e4d75ff2d981e8c9c09cf8a65c + languageName: node + linkType: hard + +"@octokit/openapi-types@npm:^18.0.0": + version: 18.1.1 + resolution: "@octokit/openapi-types@npm:18.1.1" + checksum: 94f42977fd2fcb9983c781fd199bc11218885a1226d492680bfb1268524a1b2af48a768eef90c63b80a2874437de641d59b3b7f640a5afa93e7c21fe1a79069a + languageName: node + linkType: hard + +"@octokit/plugin-enterprise-rest@npm:6.0.1": + version: 6.0.1 + resolution: "@octokit/plugin-enterprise-rest@npm:6.0.1" + checksum: 1c9720002f31daf62f4f48e73557dcdd7fcde6e0f6d43256e3f2ec827b5548417297186c361fb1af497fdcc93075a7b681e6ff06e2f20e4a8a3e74cc09d1f7e3 + languageName: node + linkType: hard + +"@octokit/plugin-paginate-rest@npm:^6.1.2": + version: 6.1.2 + resolution: "@octokit/plugin-paginate-rest@npm:6.1.2" + dependencies: + "@octokit/tsconfig": ^1.0.2 + "@octokit/types": ^9.2.3 + peerDependencies: + "@octokit/core": ">=4" + checksum: a7b3e686c7cbd27ec07871cde6e0b1dc96337afbcef426bbe3067152a17b535abd480db1861ca28c88d93db5f7bfdbcadd0919ead19818c28a69d0e194038065 + languageName: node + linkType: hard + +"@octokit/plugin-request-log@npm:^1.0.4": + version: 1.0.4 + resolution: "@octokit/plugin-request-log@npm:1.0.4" + peerDependencies: + "@octokit/core": ">=3" + checksum: 2086db00056aee0f8ebd79797b5b57149ae1014e757ea08985b71eec8c3d85dbb54533f4fd34b6b9ecaa760904ae6a7536be27d71e50a3782ab47809094bfc0c + languageName: node + linkType: hard + +"@octokit/plugin-rest-endpoint-methods@npm:^7.1.2": + version: 7.2.3 + resolution: "@octokit/plugin-rest-endpoint-methods@npm:7.2.3" + dependencies: + "@octokit/types": ^10.0.0 + peerDependencies: + "@octokit/core": ">=3" + checksum: 21dfb98514dbe900c29cddb13b335bbce43d613800c6b17eba3c1fd31d17e69c1960f3067f7bf864bb38fdd5043391f4a23edee42729d8c7fbabd00569a80336 + languageName: node + linkType: hard + +"@octokit/request-error@npm:^3.0.0": + version: 3.0.3 + resolution: "@octokit/request-error@npm:3.0.3" + dependencies: + "@octokit/types": ^9.0.0 + deprecation: ^2.0.0 + once: ^1.4.0 + checksum: 5db0b514732686b627e6ed9ef1ccdbc10501f1b271a9b31f784783f01beee70083d7edcfeb35fbd7e569fa31fdd6762b1ff6b46101700d2d97e7e48e749520d0 + languageName: node + linkType: hard + +"@octokit/request@npm:^6.0.0": + version: 6.2.8 + resolution: "@octokit/request@npm:6.2.8" + dependencies: + "@octokit/endpoint": ^7.0.0 + "@octokit/request-error": ^3.0.0 + "@octokit/types": ^9.0.0 + is-plain-object: ^5.0.0 + node-fetch: ^2.6.7 + universal-user-agent: ^6.0.0 + checksum: 3747106f50d7c462131ff995b13defdd78024b7becc40283f4ac9ea0af2391ff33a0bb476a05aa710346fe766d20254979079a1d6f626112015ba271fe38f3e2 + languageName: node + linkType: hard + +"@octokit/rest@npm:19.0.11": + version: 19.0.11 + resolution: "@octokit/rest@npm:19.0.11" + dependencies: + "@octokit/core": ^4.2.1 + "@octokit/plugin-paginate-rest": ^6.1.2 + "@octokit/plugin-request-log": ^1.0.4 + "@octokit/plugin-rest-endpoint-methods": ^7.1.2 + checksum: 147518ad51d214ead88adc717b5fdc4f33317949d58c124f4069bdf07d2e6b49fa66861036b9e233aed71fcb88ff367a6da0357653484e466175ab4fb7183b3b + languageName: node + linkType: hard + +"@octokit/tsconfig@npm:^1.0.2": + version: 1.0.2 + resolution: "@octokit/tsconfig@npm:1.0.2" + checksum: 74d56f3e9f326a8dd63700e9a51a7c75487180629c7a68bbafee97c612fbf57af8347369bfa6610b9268a3e8b833c19c1e4beb03f26db9a9dce31f6f7a19b5b1 + languageName: node + linkType: hard + +"@octokit/types@npm:^10.0.0": + version: 10.0.0 + resolution: "@octokit/types@npm:10.0.0" + dependencies: + "@octokit/openapi-types": ^18.0.0 + checksum: 8aafba2ff0cd2435fb70c291bf75ed071c0fa8a865cf6169648732068a35dec7b85a345851f18920ec5f3e94ee0e954988485caac0da09ec3f6781cc44fe153a + languageName: node + linkType: hard + +"@octokit/types@npm:^9.0.0, @octokit/types@npm:^9.2.3": + version: 9.3.2 + resolution: "@octokit/types@npm:9.3.2" + dependencies: + "@octokit/openapi-types": ^18.0.0 + checksum: f55d096aaed3e04b8308d4422104fb888f355988056ba7b7ef0a4c397b8a3e54290d7827b06774dbe0c9ce55280b00db486286954f9c265aa6b03091026d9da8 + languageName: node + linkType: hard + +"@parcel/watcher@npm:2.0.4": + version: 2.0.4 + resolution: "@parcel/watcher@npm:2.0.4" + dependencies: + node-addon-api: ^3.2.1 + node-gyp: latest + node-gyp-build: ^4.3.0 + checksum: 890bdc69a52942791b276caa2cd65ef816576d6b5ada91aa28cf302b35d567c801dafe167f2525dcb313f5b420986ea11bd56228dd7ddde1116944d8f924a0a1 + 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 + +"@polka/url@npm:^1.0.0-next.20": + version: 1.0.0-next.23 + resolution: "@polka/url@npm:1.0.0-next.23" + checksum: 4b0330de1ceecd1002c7e7449094d0c41f2ed0e21765f4835ccc7b003f2f024ac557d503b9ffdf0918cf50b80d5b8c99dfc5a91927e7b3c468b09c6bb42a3c41 + languageName: node + linkType: hard + +"@rjsf/core@npm:^5.13.4": + version: 5.15.1 + resolution: "@rjsf/core@npm:5.15.1" + 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: d03f05563e7eafbcb3ea72b41867ec1b95547ed95609b10d0af6c09e880f119d50ad3bd76d2c6a903fa7c6c3286007684d43ce0a0c318d910f0e2a35cd7ef8de + languageName: node + linkType: hard + +"@rjsf/utils@npm:^5.13.4": + version: 5.16.1 + resolution: "@rjsf/utils@npm:5.16.1" + 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: 0c69527de4ab6f9d6ec4d1a5e05a31a0a38062d40abe2a2da7bc2324b20b08b0e90c188977ac4408f3b004c758c28097444746f3215e21e184c11cad7e9278c1 + languageName: node + linkType: hard + +"@rjsf/validator-ajv8@npm:^5.13.4": + version: 5.15.1 + resolution: "@rjsf/validator-ajv8@npm:5.15.1" + dependencies: + ajv: ^8.12.0 + ajv-formats: ^2.1.1 + lodash: ^4.17.21 + lodash-es: ^4.17.21 + peerDependencies: + "@rjsf/utils": ^5.12.x + checksum: d32538968d9a9a664a44ffee1b24a835142aaacda3c1ad4671f6d6a4ed564e68e5dea4f37d1c62ee2c03f8a5b55174c0815040eff3c7814260c1181f945adced + languageName: node + linkType: hard + +"@rspack/binding-darwin-arm64@npm:1.6.7": + version: 1.6.7 + resolution: "@rspack/binding-darwin-arm64@npm:1.6.7" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rspack/binding-darwin-x64@npm:1.6.7": + version: 1.6.7 + resolution: "@rspack/binding-darwin-x64@npm:1.6.7" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rspack/binding-linux-arm64-gnu@npm:1.6.7": + version: 1.6.7 + resolution: "@rspack/binding-linux-arm64-gnu@npm:1.6.7" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rspack/binding-linux-arm64-musl@npm:1.6.7": + version: 1.6.7 + resolution: "@rspack/binding-linux-arm64-musl@npm:1.6.7" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rspack/binding-linux-x64-gnu@npm:1.6.7": + version: 1.6.7 + resolution: "@rspack/binding-linux-x64-gnu@npm:1.6.7" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rspack/binding-linux-x64-musl@npm:1.6.7": + version: 1.6.7 + resolution: "@rspack/binding-linux-x64-musl@npm:1.6.7" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rspack/binding-wasm32-wasi@npm:1.6.7": + version: 1.6.7 + resolution: "@rspack/binding-wasm32-wasi@npm:1.6.7" + dependencies: + "@napi-rs/wasm-runtime": 1.0.7 + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@rspack/binding-win32-arm64-msvc@npm:1.6.7": + version: 1.6.7 + resolution: "@rspack/binding-win32-arm64-msvc@npm:1.6.7" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rspack/binding-win32-ia32-msvc@npm:1.6.7": + version: 1.6.7 + resolution: "@rspack/binding-win32-ia32-msvc@npm:1.6.7" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@rspack/binding-win32-x64-msvc@npm:1.6.7": + version: 1.6.7 + resolution: "@rspack/binding-win32-x64-msvc@npm:1.6.7" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@rspack/binding@npm:1.6.7": + version: 1.6.7 + resolution: "@rspack/binding@npm:1.6.7" + dependencies: + "@rspack/binding-darwin-arm64": 1.6.7 + "@rspack/binding-darwin-x64": 1.6.7 + "@rspack/binding-linux-arm64-gnu": 1.6.7 + "@rspack/binding-linux-arm64-musl": 1.6.7 + "@rspack/binding-linux-x64-gnu": 1.6.7 + "@rspack/binding-linux-x64-musl": 1.6.7 + "@rspack/binding-wasm32-wasi": 1.6.7 + "@rspack/binding-win32-arm64-msvc": 1.6.7 + "@rspack/binding-win32-ia32-msvc": 1.6.7 + "@rspack/binding-win32-x64-msvc": 1.6.7 + dependenciesMeta: + "@rspack/binding-darwin-arm64": + optional: true + "@rspack/binding-darwin-x64": + optional: true + "@rspack/binding-linux-arm64-gnu": + optional: true + "@rspack/binding-linux-arm64-musl": + optional: true + "@rspack/binding-linux-x64-gnu": + optional: true + "@rspack/binding-linux-x64-musl": + optional: true + "@rspack/binding-wasm32-wasi": + optional: true + "@rspack/binding-win32-arm64-msvc": + optional: true + "@rspack/binding-win32-ia32-msvc": + optional: true + "@rspack/binding-win32-x64-msvc": + optional: true + checksum: dc405069e4f10158dfc89f538880ea4f659d28e4d3ad8d16c49d46dd0927766b7615422bf5b1755c8d7b6c024978f8d66e2810d3bbb631b06e0acc6b34169cce + languageName: node + linkType: hard + +"@rspack/cli@npm:^1.1.8": + version: 1.6.7 + resolution: "@rspack/cli@npm:1.6.7" + dependencies: + "@discoveryjs/json-ext": ^0.5.7 + "@rspack/dev-server": ~1.1.4 + exit-hook: ^4.0.0 + webpack-bundle-analyzer: 4.10.2 + peerDependencies: + "@rspack/core": ^1.0.0-alpha || ^1.x + bin: + rspack: bin/rspack.js + checksum: 5c5f22eb556ac8eb33c4d8352573512345cdccf02a8c3b281af73df247bb6c12dee43766f8f747383f0d451201c7df604dd3bb4921e5885fd7223675a267e84b + languageName: node + linkType: hard + +"@rspack/core@npm:^1.1.8, @rspack/core@npm:^1.6.4": + version: 1.6.7 + resolution: "@rspack/core@npm:1.6.7" + dependencies: + "@module-federation/runtime-tools": 0.21.6 + "@rspack/binding": 1.6.7 + "@rspack/lite-tapable": 1.1.0 + peerDependencies: + "@swc/helpers": ">=0.5.1" + peerDependenciesMeta: + "@swc/helpers": + optional: true + checksum: 7b6202e16d769903eb2e071e4416568310148dc36935b8bd89c932eebc52f93a28ef41b8e3e6cb00bfc92d7ea4ec83a901d9885d1c3aea9e72b9b7cad8c76c3d + languageName: node + linkType: hard + +"@rspack/dev-server@npm:~1.1.4": + version: 1.1.4 + resolution: "@rspack/dev-server@npm:1.1.4" + dependencies: + chokidar: ^3.6.0 + http-proxy-middleware: ^2.0.9 + p-retry: ^6.2.0 + webpack-dev-server: 5.2.2 + ws: ^8.18.0 + peerDependencies: + "@rspack/core": "*" + checksum: 28e1ee041a88d432df2a29b30d022e78ce32ede5f2b0ce5347b35e6a57fa0351f4f9a17c8e49e3e44c26972e9478157541d1b77cfce0ec81759ebcf31e4d2ad0 + languageName: node + linkType: hard + +"@rspack/lite-tapable@npm:1.1.0": + version: 1.1.0 + resolution: "@rspack/lite-tapable@npm:1.1.0" + checksum: 7b74b5577cca5fb5be52bee8ce5c4415383ab84bdbb1eaa910b5a20aa3a6bbecd822c4d140239320d311153a3de56f3388c109c04da09d52d6c103c8e9439588 + languageName: node + linkType: hard + +"@sigstore/bundle@npm:^1.1.0": + version: 1.1.0 + resolution: "@sigstore/bundle@npm:1.1.0" + dependencies: + "@sigstore/protobuf-specs": ^0.2.0 + checksum: 9bdd829f2867de6c03a19c5a7cff2c864887a9ed6e1c3438eb6659e838fde0b449fe83b1ca21efa00286a80c71e0144e20c0d9c415eead12e97d149285245c5a + languageName: node + linkType: hard + +"@sigstore/protobuf-specs@npm:^0.2.0": + version: 0.2.1 + resolution: "@sigstore/protobuf-specs@npm:0.2.1" + checksum: ddb7c829c7bf4148eccb571ede07cf9fda62f46b7b4d3a5ca02c0308c950ee90b4206b61082ee8d5753f24098632a8b24c147117bef8c68791bf5da537b55db9 + languageName: node + linkType: hard + +"@sigstore/sign@npm:^1.0.0": + version: 1.0.0 + resolution: "@sigstore/sign@npm:1.0.0" + dependencies: + "@sigstore/bundle": ^1.1.0 + "@sigstore/protobuf-specs": ^0.2.0 + make-fetch-happen: ^11.0.1 + checksum: cbdf409c39219d310f398e6a96b3ed7f422a58cfc0d8a40dd5b94996f805f189fdedf51afd559882bc18eb17054bf9d4f1a584b6af7b26c2f807636bceca5b19 + languageName: node + linkType: hard + +"@sigstore/tuf@npm:^1.0.3": + version: 1.0.3 + resolution: "@sigstore/tuf@npm:1.0.3" + dependencies: + "@sigstore/protobuf-specs": ^0.2.0 + tuf-js: ^1.1.7 + checksum: 0a32594b73ce3b3a4dfeec438ff98866a952a48ee6c020ddf57795062d9d328bc4327bb0e0c8d24011e3870c7d4670bc142a47025cbe7218c776f08084085421 + 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 + +"@sindresorhus/is@npm:^4.0.0": + version: 4.6.0 + resolution: "@sindresorhus/is@npm:4.6.0" + checksum: 83839f13da2c29d55c97abc3bc2c55b250d33a0447554997a85c539e058e57b8da092da396e252b11ec24a0279a0bed1f537fa26302209327060643e327f81d2 + 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 + +"@szmarczak/http-timer@npm:^4.0.5": + version: 4.0.6 + resolution: "@szmarczak/http-timer@npm:4.0.6" + dependencies: + defer-to-connect: ^2.0.0 + checksum: c29df3bcec6fc3bdec2b17981d89d9c9fc9bd7d0c9bcfe92821dc533f4440bc890ccde79971838b4ceed1921d456973c4180d7175ee1d0023ad0562240a58d95 + 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 + +"@tufjs/canonical-json@npm:1.0.0": + version: 1.0.0 + resolution: "@tufjs/canonical-json@npm:1.0.0" + checksum: 9ff3bcd12988fb23643690da3e009f9130b7b10974f8e7af4bd8ad230a228119de8609aa76d75264fe80f152b50872dea6ea53def69534436a4c24b4fcf6a447 + languageName: node + linkType: hard + +"@tufjs/models@npm:1.0.4": + version: 1.0.4 + resolution: "@tufjs/models@npm:1.0.4" + dependencies: + "@tufjs/canonical-json": 1.0.0 + minimatch: ^9.0.0 + checksum: b489baa854abce6865f360591c20d5eb7d8dde3fb150f42840c12bb7ee3e5e7a69eab9b2e44ea82ae1f8cd95b586963c5a5c5af8ba4ffa3614b3ddccbc306779 + languageName: node + linkType: hard + +"@tybys/wasm-util@npm:^0.10.1": + version: 0.10.1 + resolution: "@tybys/wasm-util@npm:0.10.1" + dependencies: + tslib: ^2.4.0 + checksum: b8b281ffa9cd01cb6d45a4dddca2e28fd0cb6ad67cf091ba4a73ac87c0d6bd6ce188c332c489e87c20b0750b0b6fe3b99e30e1cd2227ec16da692f51c778944e + languageName: node + linkType: hard + +"@types/babel__core@npm:^7.1.14": + 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: 564fbaa8ff1305d50807ada0ec227c3e7528bebb2f8fe6b2ed88db0735a31511a74ad18729679c43eeed8025ed29d408f53059289719e95ab1352ed559a100bd + languageName: node + linkType: hard + +"@types/babel__generator@npm:*": + version: 7.6.5 + resolution: "@types/babel__generator@npm:7.6.5" + dependencies: + "@babel/types": ^7.0.0 + checksum: c7459f5025c4c800eaf58f4db3b24e9d736331fe7df40961d9bc49f31b46e2a3be83dc9276e8688f10a5ed752ae153ad5f1bdd45e2245bac95273730b9115ec2 + languageName: node + linkType: hard + +"@types/babel__template@npm:*": + version: 7.4.2 + resolution: "@types/babel__template@npm:7.4.2" + dependencies: + "@babel/parser": ^7.1.0 + "@babel/types": ^7.0.0 + checksum: 0fe977b45a3269336c77f3ae4641a6c48abf0fa35ab1a23fb571690786af02d6cec08255a43499b0b25c5633800f7ae882ace450cce905e3060fa9e6995047ae + languageName: node + linkType: hard + +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": + version: 7.20.2 + resolution: "@types/babel__traverse@npm:7.20.2" + dependencies: + "@babel/types": ^7.20.7 + checksum: 981340286479524436348d32373eaa3bf993c635cbf70307b4b69463eee83406a959ac4844f683911e0db8ab8d9f0025ab630dc7a8c170fee9ee74144c2a528f + languageName: node + linkType: hard + +"@types/base16@npm:^1.0.2": + version: 1.0.3 + resolution: "@types/base16@npm:1.0.3" + checksum: a2c314d4a67d02d6c7e42ad1b148299b8e471645fc38a9fc7b742447b37e62d9fa8857725837844c57a2a2953d3687ed0f4b0c48aa089d47257c8856359b5f49 + languageName: node + linkType: hard + +"@types/body-parser@npm:*": + version: 1.19.6 + resolution: "@types/body-parser@npm:1.19.6" + dependencies: + "@types/connect": "*" + "@types/node": "*" + checksum: 33041e88eae00af2cfa0827e951e5f1751eafab2a8b6fce06cd89ef368a988907996436b1325180edaeddd1c0c7d0d0d4c20a6c9ff294a91e0039a9db9e9b658 + languageName: node + linkType: hard + +"@types/bonjour@npm:^3.5.13": + version: 3.5.13 + resolution: "@types/bonjour@npm:3.5.13" + dependencies: + "@types/node": "*" + checksum: e827570e097bd7d625a673c9c208af2d1a22fa3885c0a1646533cf24394c839c3e5f60ac1bc60c0ddcc69c0615078c9fb2c01b42596c7c582d895d974f2409ee + languageName: node + linkType: hard + +"@types/cacheable-request@npm:^6.0.1": + version: 6.0.3 + resolution: "@types/cacheable-request@npm:6.0.3" + dependencies: + "@types/http-cache-semantics": "*" + "@types/keyv": ^3.1.4 + "@types/node": "*" + "@types/responselike": ^1.0.0 + checksum: d9b26403fe65ce6b0cb3720b7030104c352bcb37e4fac2a7089a25a97de59c355fa08940658751f2f347a8512aa9d18fdb66ab3ade835975b2f454f2d5befbd9 + languageName: node + linkType: hard + +"@types/connect-history-api-fallback@npm:^1.5.4": + version: 1.5.4 + resolution: "@types/connect-history-api-fallback@npm:1.5.4" + dependencies: + "@types/express-serve-static-core": "*" + "@types/node": "*" + checksum: e1dee43b8570ffac02d2d47a2b4ba80d3ca0dd1840632dafb221da199e59dbe3778d3d7303c9e23c6b401f37c076935a5bc2aeae1c4e5feaefe1c371fe2073fd + languageName: node + linkType: hard + +"@types/connect@npm:*": + version: 3.4.38 + resolution: "@types/connect@npm:3.4.38" + dependencies: + "@types/node": "*" + checksum: 7eb1bc5342a9604facd57598a6c62621e244822442976c443efb84ff745246b10d06e8b309b6e80130026a396f19bf6793b7cecd7380169f369dac3bfc46fb99 + languageName: node + linkType: hard + +"@types/d3-array@npm:*": + version: 3.2.1 + resolution: "@types/d3-array@npm:3.2.1" + checksum: 8a41cee0969e53bab3f56cc15c4e6c9d76868d6daecb2b7d8c9ce71e0ececccc5a8239697cc52dadf5c665f287426de5c8ef31a49e7ad0f36e8846889a383df4 + languageName: node + linkType: hard + +"@types/d3-axis@npm:*": + version: 3.0.6 + resolution: "@types/d3-axis@npm:3.0.6" + dependencies: + "@types/d3-selection": "*" + checksum: ea1065d9e6d134c04427763603cbe9d549b8b5785b8ae0d002b5b14a362619d5b8f5ee3c2fda8b36b7e5a413cbcd387e1a2d89898b919a9f0cc91ad4e67b5ab5 + languageName: node + linkType: hard + +"@types/d3-brush@npm:*": + version: 3.0.6 + resolution: "@types/d3-brush@npm:3.0.6" + dependencies: + "@types/d3-selection": "*" + checksum: e5166bc53e5c914b1fed0a6ce55ca14d76ae11c5afd16b724b8ae47989e977c4af02bb07496d1ccd0a77f4ccd9a2ca7345e1d289bcfce16490fe4b39a9e0d170 + languageName: node + linkType: hard + +"@types/d3-chord@npm:*": + version: 3.0.6 + resolution: "@types/d3-chord@npm:3.0.6" + checksum: b511cf372ed8a0086d37a715c0d4aca811b614454e1f7c1561fbcd46863beaccdb115d274a7a992a30a8218393fbc3e1fdd7ca6e9d572e729a4570002c327083 + languageName: node + linkType: hard + +"@types/d3-color@npm:*": + version: 3.1.3 + resolution: "@types/d3-color@npm:3.1.3" + checksum: 8a0e79a709929502ec4effcee2c786465b9aec51b653ba0b5d05dbfec3e84f418270dd603002d94021885061ff592f614979193bd7a02ad76317f5608560e357 + languageName: node + linkType: hard + +"@types/d3-contour@npm:*": + version: 3.0.6 + resolution: "@types/d3-contour@npm:3.0.6" + dependencies: + "@types/d3-array": "*" + "@types/geojson": "*" + checksum: 83c13eb0567e95d6675d6d81cbeab38d0899c5af70a7c69354e23e0860ddb2f3e911d2cacd33a8baa60ce7846b38785a337b2d7c8d2763a1340bfb999b4bd2ab + languageName: node + linkType: hard + +"@types/d3-delaunay@npm:*": + version: 6.0.4 + resolution: "@types/d3-delaunay@npm:6.0.4" + checksum: 502fe0eb91f7d05b0f57904d68028c24348a54b1e5458009caf662de995d0e59bd82cd701b4af0087d614ee9e456d415fe32d63c25272ca753bf12b3f27b2d77 + languageName: node + linkType: hard + +"@types/d3-dispatch@npm:*": + version: 3.0.6 + resolution: "@types/d3-dispatch@npm:3.0.6" + checksum: f82076c7d205885480d363c92c19b8e0d6b9e529a3a78ce772f96a7cc4cce01f7941141f148828337035fac9676b13e7440565530491d560fdf12e562cb56573 + languageName: node + linkType: hard + +"@types/d3-drag@npm:*": + version: 3.0.7 + resolution: "@types/d3-drag@npm:3.0.7" + dependencies: + "@types/d3-selection": "*" + checksum: 1107cb1667ead79073741c06ea4a9e8e4551698f6c9c60821e327a6aa30ca2ba0b31a6fe767af85a2e38a22d2305f6c45b714df15c2bba68adf58978223a5fc5 + languageName: node + linkType: hard + +"@types/d3-dsv@npm:*": + version: 3.0.7 + resolution: "@types/d3-dsv@npm:3.0.7" + checksum: 5025e01459827d09d14e0d00281995a04042ce9e3e76444c5a65466c1d29649d82cbfaa9251e33837bf576f5c587525d8d8ff5aacc6bd3b831824d54449261b9 + languageName: node + linkType: hard + +"@types/d3-ease@npm:*": + version: 3.0.2 + resolution: "@types/d3-ease@npm:3.0.2" + checksum: 0885219966294bfc99548f37297e1c75e75da812a5f3ec941977ebb57dcab0a25acec5b2bbd82d09a49d387daafca08521ca269b7e4c27ddca7768189e987b54 + languageName: node + linkType: hard + +"@types/d3-fetch@npm:*": + version: 3.0.7 + resolution: "@types/d3-fetch@npm:3.0.7" + dependencies: + "@types/d3-dsv": "*" + checksum: e60cf60b25cbc49b2066ac2a3638f610c7379000562b0f499dd90fd57a8cb9740c24667a70496c2a66456d42867afeffb1722a75b26d95e7d7ee8667d96b0b36 + languageName: node + linkType: hard + +"@types/d3-force@npm:*": + version: 3.0.10 + resolution: "@types/d3-force@npm:3.0.10" + checksum: 0faf1321ddd85f7bf25769ee97513b380a897791ad1cd6c4282f09e0108e566132fad80f4c73cdb592a352139b22388d3c77458298a00f92ef72e27019fb33c7 + languageName: node + linkType: hard + +"@types/d3-format@npm:*": + version: 3.0.4 + resolution: "@types/d3-format@npm:3.0.4" + checksum: e69421cd93861a0c080084b0b23d4a5d6a427497559e46898189002fb756dae2c7c858b465308f6bcede7272b90e39ce8adab810bded2309035a5d9556c59134 + languageName: node + linkType: hard + +"@types/d3-geo@npm:*": + version: 3.1.0 + resolution: "@types/d3-geo@npm:3.1.0" + dependencies: + "@types/geojson": "*" + checksum: a4b2daa8a64012912ce7186891e8554af123925dca344c111b771e168a37477e02d504c6c94ee698440380e8c4f3f373d6755be97935da30eae0904f6745ce40 + languageName: node + linkType: hard + +"@types/d3-hierarchy@npm:*": + version: 3.1.7 + resolution: "@types/d3-hierarchy@npm:3.1.7" + checksum: 69746b3a65e0fe0ceb3ffcb1a8840a61e271eadb32eccb5034f0fce036d24801aef924ee45b99246580c9f7c81839ab0555f776a11773d82e860d522a2ff1c0e + languageName: node + linkType: hard + +"@types/d3-interpolate@npm:*": + version: 3.0.4 + resolution: "@types/d3-interpolate@npm:3.0.4" + dependencies: + "@types/d3-color": "*" + checksum: efd2770e174e84fc7316fdafe03cf3688451f767dde1fa6211610137f495be7f3923db7e1723a6961a0e0e9ae0ed969f4f47c038189fa0beb1d556b447922622 + languageName: node + linkType: hard + +"@types/d3-path@npm:*": + version: 3.1.0 + resolution: "@types/d3-path@npm:3.1.0" + checksum: 1e81b56ed33ba1ac954a8c42c78c3fcf2716927fe5d01b2003591193ad3b639572a3dfcedd9bf78b6b73215a5cfb01cede8f25c936e95ac18fbe3858f9b62f5c + languageName: node + linkType: hard + +"@types/d3-polygon@npm:*": + version: 3.0.2 + resolution: "@types/d3-polygon@npm:3.0.2" + checksum: 7cf1eadb54f02dd3617512b558f4c0f3811f8a6a8c887d9886981c3cc251db28b68329b2b0707d9f517231a72060adbb08855227f89bef6ef30caedc0a67cab2 + languageName: node + linkType: hard + +"@types/d3-quadtree@npm:*": + version: 3.0.6 + resolution: "@types/d3-quadtree@npm:3.0.6" + checksum: 631fb1a50dbe4fb0c97574891b180ec3d6a0f524bbd8aee8dfd44eda405e7ed1ca2b03d5568a35f697d09e5e4b598117e149236874b0c8764979a3d6242bb0bc + languageName: node + linkType: hard + +"@types/d3-random@npm:*": + version: 3.0.3 + resolution: "@types/d3-random@npm:3.0.3" + checksum: 33285b57768a724d2466ac1deec002432805c9df3e475ffb7f7fec66681cfe3e18d2f68b7f8ba45f400b274907bbebfe8adff14c9a97ef1987e476135e784925 + languageName: node + linkType: hard + +"@types/d3-scale-chromatic@npm:*": + version: 3.1.0 + resolution: "@types/d3-scale-chromatic@npm:3.1.0" + checksum: cb7b86deac077c7c217a52a3f658cdfb812cff8708404fbfe54918c03ead545e1df87df377e9c4eab21c9d6c1aeee6471320e02a5b6b27e2e3f786a12a82ab02 + languageName: node + linkType: hard + +"@types/d3-scale@npm:*": + version: 4.0.8 + resolution: "@types/d3-scale@npm:4.0.8" + dependencies: + "@types/d3-time": "*" + checksum: 3b1906da895564f73bb3d0415033d9a8aefe7c4f516f970176d5b2ff7a417bd27ae98486e9a9aa0472001dc9885a9204279a1973a985553bdb3ee9bbc1b94018 + languageName: node + linkType: hard + +"@types/d3-selection@npm:*": + version: 3.0.11 + resolution: "@types/d3-selection@npm:3.0.11" + checksum: 4b76630f76dffdafc73cdc786d73e7b4c96f40546483074b3da0e7fe83fd7f5ed9bc6c50f79bcef83595f943dcc9ed6986953350f39371047af644cc39c41b43 + languageName: node + linkType: hard + +"@types/d3-shape@npm:*": + version: 3.1.6 + resolution: "@types/d3-shape@npm:3.1.6" + dependencies: + "@types/d3-path": "*" + checksum: bd765be021019c43c8dca066a798a1de28a051d1213db6ca25f76c9e577da7ec40a592e3bda7628383ab48cb87164fe60b95eb5ec23761b2012bd0adb30c549a + languageName: node + linkType: hard + +"@types/d3-time-format@npm:*": + version: 4.0.3 + resolution: "@types/d3-time-format@npm:4.0.3" + checksum: e981fc9780697a9d8c5d1ddf1167d9c6bc28e4e610afddff1384fe55e6eb52cb65309b2a0a1d4cf817413b0a80b9f1a652fe0b2cb8054ace4eafff80a6093aa5 + languageName: node + linkType: hard + +"@types/d3-time@npm:*": + version: 3.0.1 + resolution: "@types/d3-time@npm:3.0.1" + checksum: 32b0c4d33574df167717f37d5d69f60fa1aeebb0218823239734a48e6a33024a7f5aadd079e94d833b42bfc0c3e2d9fa7d7ac93f75981f59ef2a46838d008a61 + languageName: node + linkType: hard + +"@types/d3-timer@npm:*": + version: 3.0.2 + resolution: "@types/d3-timer@npm:3.0.2" + checksum: 1643eebfa5f4ae3eb00b556bbc509444d88078208ec2589ddd8e4a24f230dd4cf2301e9365947e70b1bee33f63aaefab84cd907822aae812b9bc4871b98ab0e1 + languageName: node + linkType: hard + +"@types/d3-transition@npm:*": + version: 3.0.9 + resolution: "@types/d3-transition@npm:3.0.9" + dependencies: + "@types/d3-selection": "*" + checksum: c8608b1ac7cf09acfe387f3d41074631adcdfd7f2c8ca2efb378309adf0e9fc8469dbcf0d7a8c40fd1f03f2d2bf05fcda0cde7aa356ae8533a141dcab4dff221 + languageName: node + linkType: hard + +"@types/d3-zoom@npm:*": + version: 3.0.8 + resolution: "@types/d3-zoom@npm:3.0.8" + dependencies: + "@types/d3-interpolate": "*" + "@types/d3-selection": "*" + checksum: a1685728949ed39faf8ce162cc13338639c57bc2fd4d55fc7902b2632cad2bc2a808941263e57ce6685647e8a6a0a556e173386a52d6bb74c9ed6195b68be3de + languageName: node + linkType: hard + +"@types/d3@npm:^7.4.3": + version: 7.4.3 + resolution: "@types/d3@npm:7.4.3" + dependencies: + "@types/d3-array": "*" + "@types/d3-axis": "*" + "@types/d3-brush": "*" + "@types/d3-chord": "*" + "@types/d3-color": "*" + "@types/d3-contour": "*" + "@types/d3-delaunay": "*" + "@types/d3-dispatch": "*" + "@types/d3-drag": "*" + "@types/d3-dsv": "*" + "@types/d3-ease": "*" + "@types/d3-fetch": "*" + "@types/d3-force": "*" + "@types/d3-format": "*" + "@types/d3-geo": "*" + "@types/d3-hierarchy": "*" + "@types/d3-interpolate": "*" + "@types/d3-path": "*" + "@types/d3-polygon": "*" + "@types/d3-quadtree": "*" + "@types/d3-random": "*" + "@types/d3-scale": "*" + "@types/d3-scale-chromatic": "*" + "@types/d3-selection": "*" + "@types/d3-shape": "*" + "@types/d3-time": "*" + "@types/d3-time-format": "*" + "@types/d3-timer": "*" + "@types/d3-transition": "*" + "@types/d3-zoom": "*" + checksum: 12234aa093c8661546168becdd8956e892b276f525d96f65a7b32fed886fc6a569fe5a1171bff26fef2a5663960635f460c9504a6f2d242ba281a2b6c8c6465c + languageName: node + linkType: hard + +"@types/emscripten@npm:^1.39.6": + version: 1.39.8 + resolution: "@types/emscripten@npm:1.39.8" + checksum: adccdfcec3a9829aaeee580259d21653ef15ae638b88c2e310d1d4184cfc83809b463fabdd0050e018c7b6b966166d973d71f3d59601644947d0235e98b77e64 + languageName: node + linkType: hard + +"@types/estree@npm:^1.0.0": + version: 1.0.2 + resolution: "@types/estree@npm:1.0.2" + checksum: aeedb1b2fe20cbe06f44b99b562bf9703e360bfcdf5bb3d61d248182ee1dd63500f2474e12f098ffe1f5ac3202b43b3e18ec99902d9328d5374f5512fa077e45 + languageName: node + linkType: hard + +"@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^5.0.0": + version: 5.1.0 + resolution: "@types/express-serve-static-core@npm:5.1.0" + dependencies: + "@types/node": "*" + "@types/qs": "*" + "@types/range-parser": "*" + "@types/send": "*" + checksum: a2a780a9954e4553b69474ea76ab5c26534dfb274e1a49524f6394cbb590c2bbf73ce9dc67ab920c25d91583c8a99d8e486696b6e9810bef7a964fcbaad88a7b + languageName: node + linkType: hard + +"@types/express-serve-static-core@npm:^4.17.21, @types/express-serve-static-core@npm:^4.17.33": + version: 4.19.7 + resolution: "@types/express-serve-static-core@npm:4.19.7" + dependencies: + "@types/node": "*" + "@types/qs": "*" + "@types/range-parser": "*" + "@types/send": "*" + checksum: 6d0f1126293a5b35d3697a5fc7e787d6c1bb8f5368dd0691fe0c8041a812a668ebb3b168124de30e600963d8acdf48ec7373daf7608d9dc1d6288f6c373d19a1 + languageName: node + linkType: hard + +"@types/express@npm:*": + version: 5.0.6 + resolution: "@types/express@npm:5.0.6" + dependencies: + "@types/body-parser": "*" + "@types/express-serve-static-core": ^5.0.0 + "@types/serve-static": ^2 + checksum: da2cc3de1b1a4d7f20ed3fb6f0a8ee08e99feb3c2eb5a8d643db77017d8d0e70fee9e95da38a73f51bcdf5eda3bb6435073c0271dc04fb16fda92e55daf911fa + languageName: node + linkType: hard + +"@types/express@npm:^4.17.21": + version: 4.17.25 + resolution: "@types/express@npm:4.17.25" + dependencies: + "@types/body-parser": "*" + "@types/express-serve-static-core": ^4.17.33 + "@types/qs": "*" + "@types/serve-static": ^1 + checksum: 285d16008489d37b2be03e2e050bcf201d5d6ed9278ca13619d9029efd2055b192b2445f769116f716cfcf53d9d799a03f4e76199af9cea0ea3dee3d88595931 + languageName: node + linkType: hard + +"@types/fs-extra@npm:^9.0.10": + version: 9.0.13 + resolution: "@types/fs-extra@npm:9.0.13" + dependencies: + "@types/node": "*" + checksum: add79e212acd5ac76b97b9045834e03a7996aef60a814185e0459088fd290519a3c1620865d588fa36c4498bf614210d2a703af5cf80aa1dbc125db78f6edac3 + languageName: node + linkType: hard + +"@types/geojson@npm:*, @types/geojson@npm:7946.0.4": + version: 7946.0.4 + resolution: "@types/geojson@npm:7946.0.4" + checksum: 541aea46540c918b9fe21ab73f497fe17b1eaf4d0d3baeb5f5614029b7f488c37f63843b644c024a8178dc2fb66d3d6623c25d9cf61d7b553aa19c8dc7f99047 + languageName: node + linkType: hard + +"@types/glob@npm:*, @types/glob@npm:^7.1.1": + version: 7.2.0 + resolution: "@types/glob@npm:7.2.0" + dependencies: + "@types/minimatch": "*" + "@types/node": "*" + checksum: 6ae717fedfdfdad25f3d5a568323926c64f52ef35897bcac8aca8e19bc50c0bd84630bbd063e5d52078b2137d8e7d3c26eabebd1a2f03ff350fff8a91e79fc19 + languageName: node + linkType: hard + +"@types/graceful-fs@npm:^4.1.3": + version: 4.1.7 + resolution: "@types/graceful-fs@npm:4.1.7" + dependencies: + "@types/node": "*" + checksum: 8b97e208f85c9efd02a6003a582c77646dd87be0af13aec9419a720771560a8a87a979eaca73ae193d7c73127f34d0a958403a9b5d6246e450289fd8c79adf09 + languageName: node + linkType: hard + +"@types/html-minifier-terser@npm:^6.0.0": + version: 6.1.0 + resolution: "@types/html-minifier-terser@npm:6.1.0" + checksum: eb843f6a8d662d44fb18ec61041117734c6aae77aa38df1be3b4712e8e50ffaa35f1e1c92fdd0fde14a5675fecf457abcd0d15a01fae7506c91926176967f452 + languageName: node + linkType: hard + +"@types/http-cache-semantics@npm:*": + version: 4.0.2 + resolution: "@types/http-cache-semantics@npm:4.0.2" + checksum: 513429786a45d8124f93cc7ea1454b692008190ef743e9fec75a6a3c998309782d216f1e67d7d497ffece9c9212310ae05a8c56e8955492ee400eacdd7620e61 + languageName: node + linkType: hard + +"@types/http-errors@npm:*": + version: 2.0.5 + resolution: "@types/http-errors@npm:2.0.5" + checksum: a88da669366bc483e8f3b3eb3d34ada5f8d13eeeef851b1204d77e2ba6fc42aba4566d877cca5c095204a3f4349b87fe397e3e21288837bdd945dd514120755b + languageName: node + linkType: hard + +"@types/http-proxy@npm:^1.17.8": + version: 1.17.17 + resolution: "@types/http-proxy@npm:1.17.17" + dependencies: + "@types/node": "*" + checksum: 7231460dc06c109447b21c125a60662872b9c2e902efd12c47902b8ad75caded19678fa3115f6b9ce06b94d2f46d697be572e848c52da558f4f1ee88ff18a2e0 + 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.1 + resolution: "@types/istanbul-lib-report@npm:3.0.1" + dependencies: + "@types/istanbul-lib-coverage": "*" + checksum: cfc66de48577bb7b2636a6afded7056483693c3ea70916276518cdfaa0d4b51bf564ded88fb13e75716665c3af3d4d54e9c2de042c0219dcabad7e81c398688b + languageName: node + linkType: hard + +"@types/istanbul-reports@npm:^3.0.0": + version: 3.0.2 + resolution: "@types/istanbul-reports@npm:3.0.2" + dependencies: + "@types/istanbul-lib-report": "*" + checksum: f52028d6fe4d28f0085dd7ed66ccfa6af632579e9a4091b90928ffef93d4dbec0bacd49e9caf1b939d05df9eafc5ac1f5939413cdf8ac59fbe4b29602d4d0939 + languageName: node + linkType: hard + +"@types/jest@npm:^29.2.5": + version: 29.5.5 + resolution: "@types/jest@npm:29.5.5" + dependencies: + expect: ^29.0.0 + pretty-format: ^29.0.0 + checksum: 56e55cde9949bcc0ee2fa34ce5b7c32c2bfb20e53424aa4ff3a210859eeaaa3fdf6f42f81a3f655238039cdaaaf108b054b7a8602f394e6c52b903659338d8c6 + 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:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": + version: 7.0.13 + resolution: "@types/json-schema@npm:7.0.13" + checksum: 345df21a678fa72fb389f35f33de77833d09d4a142bb2bcb27c18690efa4cf70fc2876e43843cefb3fbdb9fcb12cd3e970a90936df30f53bbee899865ff605ab + languageName: node + linkType: hard + +"@types/keyv@npm:^3.1.4": + version: 3.1.4 + resolution: "@types/keyv@npm:3.1.4" + dependencies: + "@types/node": "*" + checksum: e009a2bfb50e90ca9b7c6e8f648f8464067271fd99116f881073fa6fa76dc8d0133181dd65e6614d5fb1220d671d67b0124aef7d97dc02d7e342ab143a47779d + languageName: node + linkType: hard + +"@types/lodash@npm:^4.14.178, @types/lodash@npm:^4.14.191": + version: 4.14.199 + resolution: "@types/lodash@npm:4.14.199" + checksum: e68d1fcbbfce953ed87b296a628573f62939227bcda0c934954e862b421e8a34c5e71cad6fea27b9980567909e6a4698f09025692958e36d64ea9ed99ec6fb2e + languageName: node + linkType: hard + +"@types/mime@npm:^1": + version: 1.3.5 + resolution: "@types/mime@npm:1.3.5" + checksum: e29a5f9c4776f5229d84e525b7cd7dd960b51c30a0fb9a028c0821790b82fca9f672dab56561e2acd9e8eed51d431bde52eafdfef30f643586c4162f1aecfc78 + languageName: node + linkType: hard + +"@types/minimatch@npm:*, @types/minimatch@npm:^3.0.3": + version: 3.0.5 + resolution: "@types/minimatch@npm:3.0.5" + checksum: c41d136f67231c3131cf1d4ca0b06687f4a322918a3a5adddc87ce90ed9dbd175a3610adee36b106ae68c0b92c637c35e02b58c8a56c424f71d30993ea220b92 + languageName: node + linkType: hard + +"@types/minimist@npm:^1.2.0": + version: 1.2.3 + resolution: "@types/minimist@npm:1.2.3" + checksum: 666ea4f8c39dcbdfbc3171fe6b3902157c845cc9cb8cee33c10deb706cda5e0cc80f98ace2d6d29f6774b0dc21180c96cd73c592a1cbefe04777247c7ba0e84b + languageName: node + linkType: hard + +"@types/node-forge@npm:^1.3.0": + version: 1.3.14 + resolution: "@types/node-forge@npm:1.3.14" + dependencies: + "@types/node": "*" + checksum: ff621803390e723e56b289a89fca3a06f9f8b438add1b843203a0f64bcbc7ac03d457136b3c15010b5bc89d81f57b35f62964e6e980f6290597bb21b4463c009 + languageName: node + linkType: hard + +"@types/node@npm:*, @types/node@npm:^22.13.4": + version: 22.13.4 + resolution: "@types/node@npm:22.13.4" + dependencies: + undici-types: ~6.20.0 + checksum: 39ecbd84fc2c6268c57f0479bc095cd304d2e97fee0b4ed7e6a77508aaadb28dc21be0ec91bf866ab2be822bf6c9749945795dbd6ba60e0851b50a967fd784b5 + languageName: node + linkType: hard + +"@types/normalize-package-data@npm:^2.4.0": + 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.8 + resolution: "@types/prop-types@npm:15.7.8" + checksum: 61dfad79da8b1081c450bab83b77935df487ae1cdd4660ec7df6be8e74725c15fa45cf486ce057addc956ca4ae78300b97091e2a25061133d1b9a1440bc896ae + languageName: node + linkType: hard + +"@types/qs@npm:*": + version: 6.14.0 + resolution: "@types/qs@npm:6.14.0" + checksum: 1909205514d22b3cbc7c2314e2bd8056d5f05dfb21cf4377f0730ee5e338ea19957c41735d5e4806c746176563f50005bbab602d8358432e25d900bdf4970826 + languageName: node + linkType: hard + +"@types/range-parser@npm:*": + version: 1.2.7 + resolution: "@types/range-parser@npm:1.2.7" + checksum: 95640233b689dfbd85b8c6ee268812a732cf36d5affead89e806fe30da9a430767af8ef2cd661024fd97e19d61f3dec75af2df5e80ec3bea000019ab7028629a + languageName: node + linkType: hard + +"@types/react@npm:^18.0.26": + version: 18.2.25 + resolution: "@types/react@npm:18.2.25" + dependencies: + "@types/prop-types": "*" + "@types/scheduler": "*" + csstype: ^3.0.2 + checksum: 177515cd44135d56191ec6c5c10edd490c96c175d37624d9c37bc2007c3abcf6cc2d2137d2a073d692cdc5129d5d5785bd60a6ddd315f695da5d8b989fa2afc5 + languageName: node + linkType: hard + +"@types/responselike@npm:^1.0.0": + version: 1.0.1 + resolution: "@types/responselike@npm:1.0.1" + dependencies: + "@types/node": "*" + checksum: ae8c36c9354aaedfa462dab655aa17613529d545a418acc54ba0214145fc1d0454be2ae107031a1b2c24768f19f2af7e4096a85d1e604010becd0bec2355cb0e + languageName: node + linkType: hard + +"@types/retry@npm:0.12.2": + version: 0.12.2 + resolution: "@types/retry@npm:0.12.2" + checksum: e5675035717b39ce4f42f339657cae9637cf0c0051cf54314a6a2c44d38d91f6544be9ddc0280587789b6afd056be5d99dbe3e9f4df68c286c36321579b1bf4a + languageName: node + linkType: hard + +"@types/rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "@types/rimraf@npm:3.0.2" + dependencies: + "@types/glob": "*" + "@types/node": "*" + checksum: b47fa302f46434cba704d20465861ad250df79467d3d289f9d6490d3aeeb41e8cb32dd80bd1a8fd833d1e185ac719fbf9be12e05ad9ce9be094d8ee8f1405347 + languageName: node + linkType: hard + +"@types/scheduler@npm:*": + version: 0.16.4 + resolution: "@types/scheduler@npm:0.16.4" + checksum: a57b0f10da1b021e6bd5eeef8a1917dd3b08a8715bd8029e2ded2096d8f091bb1bb1fef2d66e139588a983c4bfbad29b59e48011141725fa83c76e986e1257d7 + languageName: node + linkType: hard + +"@types/semver@npm:^7.1.0, @types/semver@npm:^7.3.12, @types/semver@npm:^7.5.8": + version: 7.5.8 + resolution: "@types/semver@npm:7.5.8" + checksum: ea6f5276f5b84c55921785a3a27a3cd37afee0111dfe2bcb3e03c31819c197c782598f17f0b150a69d453c9584cd14c4c4d7b9a55d2c5e6cacd4d66fdb3b3663 + languageName: node + linkType: hard + +"@types/send@npm:*": + version: 1.2.1 + resolution: "@types/send@npm:1.2.1" + dependencies: + "@types/node": "*" + checksum: 3b8388edeec77ae62f7bbc384c98ca06140614e4ef34fc04b35824f19937f472f8ff3785e83570e0d40e6d7c934c015d4831c82a74a1ade0d9676720835702c5 + languageName: node + linkType: hard + +"@types/send@npm:<1": + version: 0.17.6 + resolution: "@types/send@npm:0.17.6" + dependencies: + "@types/mime": ^1 + "@types/node": "*" + checksum: 5bd287f1357380963eb4b12daef5c8982f52a3269308ff3414304074d4ad7f05fe466f2cb476f54798096877ad3c5343692978776bd674b25261ecbeab87640f + languageName: node + linkType: hard + +"@types/serve-index@npm:^1.9.4": + version: 1.9.4 + resolution: "@types/serve-index@npm:1.9.4" + dependencies: + "@types/express": "*" + checksum: 72727c88d54da5b13275ebfb75dcdc4aa12417bbe9da1939e017c4c5f0c906fae843aa4e0fbfe360e7ee9df2f3d388c21abfc488f77ce58693fb57809f8ded92 + languageName: node + linkType: hard + +"@types/serve-static@npm:^1, @types/serve-static@npm:^1.15.5": + version: 1.15.10 + resolution: "@types/serve-static@npm:1.15.10" + dependencies: + "@types/http-errors": "*" + "@types/node": "*" + "@types/send": <1 + checksum: f216eef2aaf2c8eff09f431c420c5c2989eaf0dfc15d106db9fb64c14577a4059af24fb0ae2eba7984d6360950c8cbc1fb52f65608106477729d251481bc96fe + languageName: node + linkType: hard + +"@types/serve-static@npm:^2": + version: 2.2.0 + resolution: "@types/serve-static@npm:2.2.0" + dependencies: + "@types/http-errors": "*" + "@types/node": "*" + checksum: 0ad152ae2851cbe6c9381d0eca5fff8e6ff56afc0e03099efa88712c00318f52d8b01000be391375dcb2dbd912a54dacfc67ff36bae636a61570d74feba559b7 + languageName: node + linkType: hard + +"@types/sockjs@npm:^0.3.36": + version: 0.3.36 + resolution: "@types/sockjs@npm:0.3.36" + dependencies: + "@types/node": "*" + checksum: b4b5381122465d80ea8b158537c00bc82317222d3fb31fd7229ff25b31fa89134abfbab969118da55622236bf3d8fee75759f3959908b5688991f492008f29bc + 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/treeify@npm:^1.0.0": + version: 1.0.1 + resolution: "@types/treeify@npm:1.0.1" + checksum: 972022f753b49b16a17cbfc0c6051c64983d333f27dbf456353c8168446fa8948ac11072687be8ba5b2144122bae461481ce7814c7a855ab477fffe45ed7a793 + languageName: node + linkType: hard + +"@types/trusted-types@npm:^2.0.7": + version: 2.0.7 + resolution: "@types/trusted-types@npm:2.0.7" + checksum: 8e4202766a65877efcf5d5a41b7dd458480b36195e580a3b1085ad21e948bc417d55d6f8af1fd2a7ad008015d4117d5fdfe432731157da3c68678487174e4ba3 + languageName: node + linkType: hard + +"@types/ws@npm:^8.5.10": + version: 8.18.1 + resolution: "@types/ws@npm:8.18.1" + dependencies: + "@types/node": "*" + checksum: 0331b14cde388e2805af66cad3e3f51857db8e68ed91e5b99750915e96fe7572e58296dc99999331bbcf08f0ff00a227a0bb214e991f53c2a5aca7b0e71173fa + languageName: node + linkType: hard + +"@types/yargs-parser@npm:*": + 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.28 + resolution: "@types/yargs@npm:17.0.28" + dependencies: + "@types/yargs-parser": "*" + checksum: f78c5e5c29903933c0557b4ffcd1d0b8564d66859c8ca4aa51da3714e49109ed7c2644334a1918d033df19028f4cecc91fd2e502651bb8e8451f246c371da847 + languageName: node + linkType: hard + +"@typescript-eslint/eslint-plugin@npm:^5.55.0": + version: 5.62.0 + resolution: "@typescript-eslint/eslint-plugin@npm:5.62.0" + dependencies: + "@eslint-community/regexpp": ^4.4.0 + "@typescript-eslint/scope-manager": 5.62.0 + "@typescript-eslint/type-utils": 5.62.0 + "@typescript-eslint/utils": 5.62.0 + debug: ^4.3.4 + graphemer: ^1.4.0 + ignore: ^5.2.0 + natural-compare-lite: ^1.4.0 + semver: ^7.3.7 + tsutils: ^3.21.0 + peerDependencies: + "@typescript-eslint/parser": ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: fc104b389c768f9fa7d45a48c86d5c1ad522c1d0512943e782a56b1e3096b2cbcc1eea3fcc590647bf0658eef61aac35120a9c6daf979bf629ad2956deb516a1 + languageName: node + linkType: hard + +"@typescript-eslint/parser@npm:^5.55.0": + version: 5.62.0 + resolution: "@typescript-eslint/parser@npm:5.62.0" + dependencies: + "@typescript-eslint/scope-manager": 5.62.0 + "@typescript-eslint/types": 5.62.0 + "@typescript-eslint/typescript-estree": 5.62.0 + debug: ^4.3.4 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: d168f4c7f21a7a63f47002e2d319bcbb6173597af5c60c1cf2de046b46c76b4930a093619e69faf2d30214c29ab27b54dcf1efc7046a6a6bd6f37f59a990e752 + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/scope-manager@npm:5.62.0" + dependencies: + "@typescript-eslint/types": 5.62.0 + "@typescript-eslint/visitor-keys": 5.62.0 + checksum: 6062d6b797fe1ce4d275bb0d17204c827494af59b5eaf09d8a78cdd39dadddb31074dded4297aaf5d0f839016d601032857698b0e4516c86a41207de606e9573 + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/type-utils@npm:5.62.0" + dependencies: + "@typescript-eslint/typescript-estree": 5.62.0 + "@typescript-eslint/utils": 5.62.0 + debug: ^4.3.4 + tsutils: ^3.21.0 + peerDependencies: + eslint: "*" + peerDependenciesMeta: + typescript: + optional: true + checksum: fc41eece5f315dfda14320be0da78d3a971d650ea41300be7196934b9715f3fe1120a80207551eb71d39568275dbbcf359bde540d1ca1439d8be15e9885d2739 + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/types@npm:5.62.0" + checksum: 48c87117383d1864766486f24de34086155532b070f6264e09d0e6139449270f8a9559cfef3c56d16e3bcfb52d83d42105d61b36743626399c7c2b5e0ac3b670 + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" + dependencies: + "@typescript-eslint/types": 5.62.0 + "@typescript-eslint/visitor-keys": 5.62.0 + debug: ^4.3.4 + globby: ^11.1.0 + is-glob: ^4.0.3 + semver: ^7.3.7 + tsutils: ^3.21.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 3624520abb5807ed8f57b1197e61c7b1ed770c56dfcaca66372d584ff50175225798bccb701f7ef129d62c5989070e1ee3a0aa2d84e56d9524dcf011a2bb1a52 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:5.62.0, @typescript-eslint/utils@npm:^5.10.0": + version: 5.62.0 + resolution: "@typescript-eslint/utils@npm:5.62.0" + dependencies: + "@eslint-community/eslint-utils": ^4.2.0 + "@types/json-schema": ^7.0.9 + "@types/semver": ^7.3.12 + "@typescript-eslint/scope-manager": 5.62.0 + "@typescript-eslint/types": 5.62.0 + "@typescript-eslint/typescript-estree": 5.62.0 + eslint-scope: ^5.1.1 + semver: ^7.3.7 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: ee9398c8c5db6d1da09463ca7bf36ed134361e20131ea354b2da16a5fdb6df9ba70c62a388d19f6eebb421af1786dbbd79ba95ddd6ab287324fc171c3e28d931 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" + dependencies: + "@typescript-eslint/types": 5.62.0 + eslint-visitor-keys: ^3.3.0 + checksum: 976b05d103fe8335bef5c93ad3f76d781e3ce50329c0243ee0f00c0fcfb186c81df50e64bfdd34970148113f8ade90887f53e3c4938183afba830b4ba8e30a35 + languageName: node + linkType: hard + +"@verdaccio/auth@npm:8.0.0-next-8.1": + version: 8.0.0-next-8.1 + resolution: "@verdaccio/auth@npm:8.0.0-next-8.1" + dependencies: + "@verdaccio/config": 8.0.0-next-8.1 + "@verdaccio/core": 8.0.0-next-8.1 + "@verdaccio/loaders": 8.0.0-next-8.1 + "@verdaccio/logger": 8.0.0-next-8.1 + "@verdaccio/signature": 8.0.0-next-8.0 + "@verdaccio/utils": 7.0.1-next-8.1 + debug: 4.3.7 + lodash: 4.17.21 + verdaccio-htpasswd: 13.0.0-next-8.1 + checksum: 3bfc293a81032df993556d0c66850703d85355a85d2ea17f342863b0de021005aa52970f6fab97892eec1c38b7c9455885ad5b7477156ee6b77920c1d9112fc7 + languageName: node + linkType: hard + +"@verdaccio/commons-api@npm:10.2.0": + version: 10.2.0 + resolution: "@verdaccio/commons-api@npm:10.2.0" + dependencies: + http-errors: 2.0.0 + http-status-codes: 2.2.0 + checksum: b3c946f7e15140b4e15274fa9988a8759681e9ad4316ec882096551588f554c093fb1ffbbb88ed05db162e1b0e40e9859759e1339f0ae4a074706afb7e732be2 + languageName: node + linkType: hard + +"@verdaccio/config@npm:8.0.0-next-8.1": + version: 8.0.0-next-8.1 + resolution: "@verdaccio/config@npm:8.0.0-next-8.1" + dependencies: + "@verdaccio/core": 8.0.0-next-8.1 + "@verdaccio/utils": 7.0.1-next-8.1 + debug: 4.3.7 + js-yaml: 4.1.0 + lodash: 4.17.21 + minimatch: 7.4.6 + checksum: cb4c2bd4dfd7100a01a0dbbf7414434e50f0221a546ac3ffdf86e6ccbc63cfefc4bc9142a0964a8c2685ab3f44737e4c35c41f2a29c1d3d1da28ede3168f7e4b + languageName: node + linkType: hard + +"@verdaccio/core@npm:8.0.0-next-8.1": + version: 8.0.0-next-8.1 + resolution: "@verdaccio/core@npm:8.0.0-next-8.1" + dependencies: + ajv: 8.17.1 + core-js: 3.37.1 + http-errors: 2.0.0 + http-status-codes: 2.3.0 + process-warning: 1.0.0 + semver: 7.6.3 + checksum: 40cea00ababa401ef021ad2a919af01099925c4986ab4f8363639a1bde8eb618a7672aabc5e7bdc8fb0d1327df83eecdbec0c8c2776a4a4d4ce46de8c4fd9e5b + languageName: node + linkType: hard + +"@verdaccio/file-locking@npm:10.3.1": + version: 10.3.1 + resolution: "@verdaccio/file-locking@npm:10.3.1" + dependencies: + lockfile: 1.0.4 + checksum: 114948ed4ce9c0f98008eaf32355f902c4dfc91c0ce2e539a3d0c9397781e9ef8d1a2f6ce900d39dac0e054a9d7e616edbc472eedf758096fcd3cc8294d6add5 + languageName: node + linkType: hard + +"@verdaccio/file-locking@npm:13.0.0-next-8.0": + version: 13.0.0-next-8.0 + resolution: "@verdaccio/file-locking@npm:13.0.0-next-8.0" + dependencies: + lockfile: 1.0.4 + checksum: 5ba07475e441d2113aa17a74dc96e682f9d15644d12282fa7954b1ed4c7e1bafaea1acb5b3790048d6fceeb6a787bb2f4ed933d9860a9f432d7d2cd3be93cec9 + languageName: node + linkType: hard + +"@verdaccio/loaders@npm:8.0.0-next-8.1": + version: 8.0.0-next-8.1 + resolution: "@verdaccio/loaders@npm:8.0.0-next-8.1" + dependencies: + "@verdaccio/logger": 8.0.0-next-8.1 + debug: 4.3.7 + lodash: 4.17.21 + checksum: a03762fe73ebded25fd82da10314ad73dabc804e6b8cb0c06938effe9d2c70578208881438abb3fb4f393939993fb78f23a27b1bf472133cb63545fdeeab41f3 + languageName: node + linkType: hard + +"@verdaccio/local-storage-legacy@npm:11.0.2": + version: 11.0.2 + resolution: "@verdaccio/local-storage-legacy@npm:11.0.2" + dependencies: + "@verdaccio/commons-api": 10.2.0 + "@verdaccio/file-locking": 10.3.1 + "@verdaccio/streams": 10.2.1 + async: 3.2.4 + debug: 4.3.4 + lodash: 4.17.21 + lowdb: 1.0.0 + mkdirp: 1.0.4 + checksum: e5c09028a9d67459297e6760acb1d5301a87bb3fe67a9ae7d8fb3e2deb6d907ebd113d7e883e89174eefb08afdaa9043257a5e04b8cb6702d3718ad0d8b5f731 + languageName: node + linkType: hard + +"@verdaccio/logger-7@npm:8.0.0-next-8.1": + version: 8.0.0-next-8.1 + resolution: "@verdaccio/logger-7@npm:8.0.0-next-8.1" + dependencies: + "@verdaccio/logger-commons": 8.0.0-next-8.1 + pino: 7.11.0 + checksum: b10ec02a57d5cbde5adcb6cc13f2b15d5385f75f0260aea29d9d12fcacde13324d89c5b2865246ed18b3e7be1d6536ae14883c1343c7fb8464d5f2b56e02e987 + languageName: node + linkType: hard + +"@verdaccio/logger-commons@npm:8.0.0-next-8.1": + version: 8.0.0-next-8.1 + resolution: "@verdaccio/logger-commons@npm:8.0.0-next-8.1" + dependencies: + "@verdaccio/core": 8.0.0-next-8.1 + "@verdaccio/logger-prettify": 8.0.0-next-8.0 + colorette: 2.0.20 + debug: 4.3.7 + checksum: 50003c0868bc8838aae129240aa9bc8c49429c4fe3aef017a1411ee339919a9e347f085f9cbe74166899cbc7ef8312c4df7a3174d5a3f931f4eab0c3156af2a8 + languageName: node + linkType: hard + +"@verdaccio/logger-prettify@npm:8.0.0-next-8.0": + version: 8.0.0-next-8.0 + resolution: "@verdaccio/logger-prettify@npm:8.0.0-next-8.0" + dependencies: + colorette: 2.0.20 + dayjs: 1.11.13 + lodash: 4.17.21 + pino-abstract-transport: 1.1.0 + sonic-boom: 3.8.0 + checksum: 54e64feef2e09254677109c8eae75d3cefeac814476c5a4406c0edf18c2b814d60db50b3d078d03b9031df8d0571d8f112edf1f195ab006ff3da9080eea233e7 + languageName: node + linkType: hard + +"@verdaccio/logger@npm:8.0.0-next-8.1": + version: 8.0.0-next-8.1 + resolution: "@verdaccio/logger@npm:8.0.0-next-8.1" + dependencies: + "@verdaccio/logger-commons": 8.0.0-next-8.1 + pino: 8.17.2 + checksum: 41cea3e4cb6cbcf8e3126cf66b89a2d0f60673a533af6acda3397e10a60269f0445faac4e304b92d4820a7199d3e8ea514ab14dfde23170ab01ffedae52abca4 + languageName: node + linkType: hard + +"@verdaccio/middleware@npm:8.0.0-next-8.1": + version: 8.0.0-next-8.1 + resolution: "@verdaccio/middleware@npm:8.0.0-next-8.1" + dependencies: + "@verdaccio/config": 8.0.0-next-8.1 + "@verdaccio/core": 8.0.0-next-8.1 + "@verdaccio/url": 13.0.0-next-8.1 + "@verdaccio/utils": 7.0.1-next-8.1 + debug: 4.3.7 + express: 4.21.0 + express-rate-limit: 5.5.1 + lodash: 4.17.21 + lru-cache: 7.18.3 + mime: 2.6.0 + checksum: ab7d4cf690b668eafae62c8c658782c2a0d07daaf8b9ba1a60bbcca7102b9268882cbe8d019ac61a779803b0f07a178be14b1b059d48887c410e699691b1d464 + languageName: node + linkType: hard + +"@verdaccio/search-indexer@npm:8.0.0-next-8.0": + version: 8.0.0-next-8.0 + resolution: "@verdaccio/search-indexer@npm:8.0.0-next-8.0" + checksum: 682d82ed9870c23b1d31d1bebdd31abe819e05bcafcbb64695f2f0e2aa078b016cb646ce6d4dffeb4c281fef32ef105753865da28f7802f8cfa820b804c21ec6 + languageName: node + linkType: hard + +"@verdaccio/signature@npm:8.0.0-next-8.0": + version: 8.0.0-next-8.0 + resolution: "@verdaccio/signature@npm:8.0.0-next-8.0" + dependencies: + debug: 4.3.7 + jsonwebtoken: 9.0.2 + checksum: 0720688e58a44737a8646300203e21465ed4a547a67efe224801caae0e59826d378122e412d5b6b0642c9c2f04de7d7dafc86005b87c388d7b4401a933edc6b1 + languageName: node + linkType: hard + +"@verdaccio/streams@npm:10.2.1": + version: 10.2.1 + resolution: "@verdaccio/streams@npm:10.2.1" + checksum: eadc671c2b40ea06da8c56bd2e5b394edbfdc2895f4e622491d4edd4312468d8172534ddaf364e107d118c7c7585f2f9114336ee93a16f0ec747c4ea15c6737b + languageName: node + linkType: hard + +"@verdaccio/tarball@npm:13.0.0-next-8.1": + version: 13.0.0-next-8.1 + resolution: "@verdaccio/tarball@npm:13.0.0-next-8.1" + dependencies: + "@verdaccio/core": 8.0.0-next-8.1 + "@verdaccio/url": 13.0.0-next-8.1 + "@verdaccio/utils": 7.0.1-next-8.1 + debug: 4.3.7 + gunzip-maybe: ^1.4.2 + lodash: 4.17.21 + tar-stream: ^3.1.7 + checksum: 23677afee3574200c33aea39476cc22a5350bae7d14a589b2816271405b4c1068c3c7ac629ae55c1d1d5b34ab0f65cc768256967c23466b51131f03c10cd63a2 + languageName: node + linkType: hard + +"@verdaccio/ui-theme@npm:8.0.0-next-8.1": + version: 8.0.0-next-8.1 + resolution: "@verdaccio/ui-theme@npm:8.0.0-next-8.1" + checksum: c613da907e5a3d41ff7cf221ff2feb32093146970a264308681da552ea749e68f9274f4535798b4845fe5cf0aaf2b46854a93b89ff50dc1b45d12f5e32c1d88c + languageName: node + linkType: hard + +"@verdaccio/url@npm:13.0.0-next-8.1": + version: 13.0.0-next-8.1 + resolution: "@verdaccio/url@npm:13.0.0-next-8.1" + dependencies: + "@verdaccio/core": 8.0.0-next-8.1 + debug: 4.3.7 + lodash: 4.17.21 + validator: 13.12.0 + checksum: edd32bee12f54f82016cc4d5e93dfddbcf7b1da150e789e63829d11836845cc41957864a4d15646496e9f49a28ebab11cdb3e67dbbcda02439387d5ae58834de + languageName: node + linkType: hard + +"@verdaccio/utils@npm:7.0.1-next-8.1": + version: 7.0.1-next-8.1 + resolution: "@verdaccio/utils@npm:7.0.1-next-8.1" + dependencies: + "@verdaccio/core": 8.0.0-next-8.1 + lodash: 4.17.21 + minimatch: 7.4.6 + semver: 7.6.3 + checksum: cf8a4a38cd80f6569d506f51533279b12a66bc2a24b6ee835528c210ba8988c6be804edc9b07bc5670885f65f8bf2b434ea60fba0ed890eee15460846215258b + 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 + +"@xterm/addon-canvas@npm:~0.7.0": + version: 0.7.0 + resolution: "@xterm/addon-canvas@npm:0.7.0" + peerDependencies: + "@xterm/xterm": ^5.0.0 + checksum: 28b9965f34e01a9bbcc31651dee2d4a9380aad528039484cce372b856be820705b293c4b5091cee65208c3dfbf6f944f27ecc6c3b794df5a96036cbf6dba0d74 + languageName: node + linkType: hard + +"@xterm/addon-fit@npm:~0.10.0": + version: 0.10.0 + resolution: "@xterm/addon-fit@npm:0.10.0" + peerDependencies: + "@xterm/xterm": ^5.0.0 + checksum: 8edfad561c0d0316c5883cbe2ce56109f105a2b2bf53b71d5f8c788e656a3205c1093a659dddcf4025a459e4b7ff8e07b6c6a19815c8711deeded560de5f1893 + languageName: node + linkType: hard + +"@xterm/addon-search@npm:~0.15.0": + version: 0.15.0 + resolution: "@xterm/addon-search@npm:0.15.0" + peerDependencies: + "@xterm/xterm": ^5.0.0 + checksum: d4f77e3637f915e86c9208da70f615f5e6150810943931a4bba8a3422d5c2b791b84d2136de65603dbc4437328f4c584c8faa1f53e71524dd667bee631ca3f1e + languageName: node + linkType: hard + +"@xterm/addon-web-links@npm:~0.11.0": + version: 0.11.0 + resolution: "@xterm/addon-web-links@npm:0.11.0" + peerDependencies: + "@xterm/xterm": ^5.0.0 + checksum: c1b36b649b8cddc613213eb9e835daf3106a8be359a19ccacca1f1d9ff883b59d478f166109ee017fa3994d224dcdd82976ad5d5a1221271ab8d3d5684eb141d + languageName: node + linkType: hard + +"@xterm/addon-webgl@npm:~0.18.0": + version: 0.18.0 + resolution: "@xterm/addon-webgl@npm:0.18.0" + peerDependencies: + "@xterm/xterm": ^5.0.0 + checksum: 942ecaa4e08423563a795a1a63fa79637e60d4e3aba1b5fa2f426e1d7b19c553e8c8f1cfad1258461f22e05362e791f642dc6aab7e8766e26d4d3876617d8320 + languageName: node + linkType: hard + +"@xterm/xterm@npm:~5.5.0": + version: 5.5.0 + resolution: "@xterm/xterm@npm:5.5.0" + checksum: 393c1891b95fdd50d05e7a063abdc95a6643d2c45a4231637c23db90511426a95b1b56a5c4c91831121d2710aee9de97cf5e426016c589ca87dea8fff9a41b33 + languageName: node + linkType: hard + +"@yarnpkg/core@npm:^4.0.3": + version: 4.0.3 + resolution: "@yarnpkg/core@npm:4.0.3" + dependencies: + "@arcanis/slice-ansi": ^1.1.1 + "@types/semver": ^7.1.0 + "@types/treeify": ^1.0.0 + "@yarnpkg/fslib": ^3.0.2 + "@yarnpkg/libzip": ^3.0.1 + "@yarnpkg/parsers": ^3.0.0 + "@yarnpkg/shell": ^4.0.0 + camelcase: ^5.3.1 + chalk: ^3.0.0 + ci-info: ^3.2.0 + clipanion: ^4.0.0-rc.2 + cross-spawn: 7.0.3 + diff: ^5.1.0 + dotenv: ^16.3.1 + fast-glob: ^3.2.2 + got: ^11.7.0 + lodash: ^4.17.15 + micromatch: ^4.0.2 + p-limit: ^2.2.0 + semver: ^7.1.2 + strip-ansi: ^6.0.0 + tar: ^6.0.5 + tinylogic: ^2.0.0 + treeify: ^1.1.0 + tslib: ^2.4.0 + tunnel: ^0.0.6 + checksum: 811956ab94e9f4b3601f304312baf816322df124cf85754ef3985110c90935b1b761c8266a06c2c5633f6edc39c8a4ceffeff50f08f036d7adf19612ce3761a3 + languageName: node + linkType: hard + +"@yarnpkg/fslib@npm:^3.0.0, @yarnpkg/fslib@npm:^3.0.2": + version: 3.0.2 + resolution: "@yarnpkg/fslib@npm:3.0.2" + dependencies: + tslib: ^2.4.0 + checksum: b0795df777e43eb1c2bd8aa1d6c45f88b8a1d3922ee8bf264cdca916cc6f9455551a9499761a9c1f585aa576350d84adcc315e497fc031cdbbbc1a5c71942e1b + languageName: node + linkType: hard + +"@yarnpkg/libzip@npm:^3.0.1": + version: 3.0.1 + resolution: "@yarnpkg/libzip@npm:3.0.1" + dependencies: + "@types/emscripten": ^1.39.6 + "@yarnpkg/fslib": ^3.0.2 + tslib: ^2.4.0 + peerDependencies: + "@yarnpkg/fslib": ^3.0.2 + checksum: 932b1fc35bb60ca57d033aab7a940f7b1d7bf52a68bfff6c755fe26827c0f1b373fda33e373afabbae98de3ed31ae4f0e9ee2ef24588cd074b75fb814117827d + languageName: node + linkType: hard + +"@yarnpkg/lockfile@npm:^1.1.0": + version: 1.1.0 + resolution: "@yarnpkg/lockfile@npm:1.1.0" + checksum: 05b881b4866a3546861fee756e6d3812776ea47fa6eb7098f983d6d0eefa02e12b66c3fff931574120f196286a7ad4879ce02743c8bb2be36c6a576c7852083a + languageName: node + linkType: hard + +"@yarnpkg/parsers@npm:3.0.0-rc.46": + version: 3.0.0-rc.46 + resolution: "@yarnpkg/parsers@npm:3.0.0-rc.46" + dependencies: + js-yaml: ^3.10.0 + tslib: ^2.4.0 + checksum: 35dfd1b1ac7ed9babf231721eb90b58156e840e575f6792a8e5ab559beaed6e2d60833b857310e67d6282c9406357648df2f510e670ec37ef4bd41657f329a51 + languageName: node + linkType: hard + +"@yarnpkg/parsers@npm:^3.0.0": + version: 3.0.0 + resolution: "@yarnpkg/parsers@npm:3.0.0" + dependencies: + js-yaml: ^3.10.0 + tslib: ^2.4.0 + checksum: fefe5ecafb5bfa2b678ac9ba9259810fdda40142afd9d0b7e0e5cc1cce1fd824dffc52217c5e429807481d8fd18ead074bd317e64fd626335d3c9f1a320bade2 + languageName: node + linkType: hard + +"@yarnpkg/shell@npm:^4.0.0": + version: 4.0.0 + resolution: "@yarnpkg/shell@npm:4.0.0" + dependencies: + "@yarnpkg/fslib": ^3.0.0 + "@yarnpkg/parsers": ^3.0.0 + chalk: ^3.0.0 + clipanion: ^4.0.0-rc.2 + cross-spawn: 7.0.3 + fast-glob: ^3.2.2 + micromatch: ^4.0.2 + tslib: ^2.4.0 + bin: + shell: ./lib/cli.js + checksum: 8497e278b1d3d0ffe324a3b9c878ca7165bbbe4d182f5ecb02f1bfaaf4dd18c8aaa54c33ee17bb37eb09173816dc4617b70c3fe0925f5fb99749687e2650b7a2 + languageName: node + linkType: hard + +"@zkochan/js-yaml@npm:0.0.6": + version: 0.0.6 + resolution: "@zkochan/js-yaml@npm:0.0.6" + dependencies: + argparse: ^2.0.1 + bin: + js-yaml: bin/js-yaml.js + checksum: 51b81597a1d1d79c778b8fae48317eaad78d75223d0b7477ad2b35f47cf63b19504da430bb7a03b326e668b282874242cc123e323e57293be038684cb5e755f8 + languageName: node + linkType: hard + +"JSONStream@npm:1.3.5, JSONStream@npm:^1.3.5": + version: 1.3.5 + resolution: "JSONStream@npm:1.3.5" + dependencies: + jsonparse: ^1.2.0 + through: ">=2.2.7 <3" + bin: + JSONStream: ./bin.js + checksum: 2605fa124260c61bad38bb65eba30d2f72216a78e94d0ab19b11b4e0327d572b8d530c0c9cc3b0764f727ad26d39e00bf7ebad57781ca6368394d73169c59e46 + languageName: node + linkType: hard + +"abab@npm:^2.0.3, 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 + +"abort-controller@npm:^3.0.0": + version: 3.0.0 + resolution: "abort-controller@npm:3.0.0" + dependencies: + event-target-shim: ^5.0.0 + checksum: 170bdba9b47b7e65906a28c8ce4f38a7a369d78e2271706f020849c1bfe0ee2067d4261df8bbb66eb84f79208fd5b710df759d64191db58cfba7ce8ef9c54b75 + languageName: node + linkType: hard + +"accepts@npm:~1.3.4, accepts@npm:~1.3.8": + version: 1.3.8 + resolution: "accepts@npm:1.3.8" + dependencies: + mime-types: ~2.1.34 + negotiator: 0.6.3 + checksum: 50c43d32e7b50285ebe84b613ee4a3aa426715a7d131b65b786e2ead0fd76b6b60091b9916d3478a75f11f162628a2139991b6c03ab3f1d9ab7c86075dc8eab4 + 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-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.0, 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.0.4, acorn@npm:^8.1.0, acorn@npm:^8.14.0, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": + version: 8.14.0 + resolution: "acorn@npm:8.14.0" + bin: + acorn: bin/acorn + checksum: 8755074ba55fff94e84e81c72f1013c2d9c78e973c31231c8ae505a5f966859baf654bddd75046bffd73ce816b149298977fff5077a3033dedba0ae2aad152d4 + languageName: node + linkType: hard + +"add-stream@npm:^1.0.0": + version: 1.0.0 + resolution: "add-stream@npm:1.0.0" + checksum: 3e9e8b0b8f0170406d7c3a9a39bfbdf419ccccb0fd2a396338c0fda0a339af73bf738ad414fc520741de74517acf0dd92b4a36fd3298a47fd5371eee8f2c5a06 + 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:8.17.1, ajv@npm:^8.0.0, ajv@npm:^8.12.0, ajv@npm:^8.9.0": + version: 8.17.1 + resolution: "ajv@npm:8.17.1" + dependencies: + fast-deep-equal: ^3.1.3 + fast-uri: ^3.0.1 + json-schema-traverse: ^1.0.0 + require-from-string: ^2.0.2 + checksum: 1797bf242cfffbaf3b870d13565bd1716b73f214bb7ada9a497063aada210200da36e3ed40237285f3255acc4feeae91b1fb183625331bad27da95973f7253d9 + 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 + +"ansi-colors@npm:^4.1.1": + version: 4.1.3 + resolution: "ansi-colors@npm:4.1.3" + checksum: a9c2ec842038a1fabc7db9ece7d3177e2fe1c5dc6f0c51ecfbf5f39911427b89c00b5dc6b8bd95f82a26e9b16aaae2e83d45f060e98070ce4d1333038edceb0e + languageName: node + linkType: hard + +"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.2": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: ^0.21.3 + checksum: 93111c42189c0a6bed9cdb4d7f2829548e943827ee8479c74d6e0b22ee127b2a21d3f8b5ca57723b8ef78ce011fbfc2784350eb2bde3ccfccf2f575fa8489815 + languageName: node + linkType: hard + +"ansi-html-community@npm:^0.0.8": + version: 0.0.8 + resolution: "ansi-html-community@npm:0.0.8" + bin: + ansi-html: bin/ansi-html + checksum: 04c568e8348a636963f915e48eaa3e01218322e1169acafdd79c384f22e5558c003f79bbc480c1563865497482817c7eed025f0653ebc17642fededa5cb42089 + 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, anymatch@npm:~3.1.2": + 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 + +"apache-md5@npm:1.1.8": + version: 1.1.8 + resolution: "apache-md5@npm:1.1.8" + checksum: 5f93fe00a4c75c947a8ba88054cfa9c141ea13d1581515a59637d580747581345f8cee41204af354f7280439ab19120f4bec4a1ee5cf1ac7033a7a89dbb05ada + 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-differ@npm:^3.0.0": + version: 3.0.0 + resolution: "array-differ@npm:3.0.0" + checksum: 117edd9df5c1530bd116c6e8eea891d4bd02850fd89b1b36e532b6540e47ca620a373b81feca1c62d1395d9ae601516ba538abe5e8172d41091da2c546b05fb7 + languageName: node + linkType: hard + +"array-flatten@npm:1.1.1": + version: 1.1.1 + resolution: "array-flatten@npm:1.1.1" + checksum: a9925bf3512d9dce202112965de90c222cd59a4fbfce68a0951d25d965cf44642931f40aac72309c41f12df19afa010ecadceb07cfff9ccc1621e99d89ab5f3b + languageName: node + linkType: hard + +"array-ify@npm:^1.0.0": + version: 1.0.0 + resolution: "array-ify@npm:1.0.0" + checksum: c0502015b319c93dd4484f18036bcc4b654eb76a4aa1f04afbcef11ac918859bb1f5d71ba1f0f1141770db9eef1a4f40f1761753650873068010bbf7bcdae4a4 + languageName: node + linkType: hard + +"array-includes@npm:^3.1.6": + version: 3.1.7 + resolution: "array-includes@npm:3.1.7" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + get-intrinsic: ^1.2.1 + is-string: ^1.0.7 + checksum: 06f9e4598fac12a919f7c59a3f04f010ea07f0b7f0585465ed12ef528a60e45f374e79d1bddbb34cdd4338357d00023ddbd0ac18b0be36964f5e726e8965d7fc + 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 + +"array.prototype.flat@npm:^1.3.1": + version: 1.3.2 + resolution: "array.prototype.flat@npm:1.3.2" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + es-shim-unscopables: ^1.0.0 + checksum: 5d6b4bf102065fb3f43764bfff6feb3295d372ce89591e6005df3d0ce388527a9f03c909af6f2a973969a4d178ab232ffc9236654149173e0e187ec3a1a6b87b + languageName: node + linkType: hard + +"array.prototype.flatmap@npm:^1.3.1": + version: 1.3.2 + resolution: "array.prototype.flatmap@npm:1.3.2" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + es-shim-unscopables: ^1.0.0 + checksum: ce09fe21dc0bcd4f30271f8144083aa8c13d4639074d6c8dc82054b847c7fc9a0c97f857491f4da19d4003e507172a78f4bcd12903098adac8b9cd374f734be3 + languageName: node + linkType: hard + +"array.prototype.tosorted@npm:^1.1.1": + version: 1.1.2 + resolution: "array.prototype.tosorted@npm:1.1.2" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + es-shim-unscopables: ^1.0.0 + get-intrinsic: ^1.2.1 + checksum: 3607a7d6b117f0ffa6f4012457b7af0d47d38cf05e01d50e09682fd2fb782a66093a5e5fbbdbad77c8c824794a9d892a51844041641f719ad41e3a974f0764de + languageName: node + linkType: hard + +"arraybuffer.prototype.slice@npm:^1.0.2": + 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 + +"arrify@npm:^2.0.1": + version: 2.0.1 + resolution: "arrify@npm:2.0.1" + checksum: 067c4c1afd182806a82e4c1cb8acee16ab8b5284fbca1ce29408e6e91281c36bb5b612f6ddfbd40a0f7a7e0c75bf2696eb94c027f6e328d6e9c52465c98e4209 + languageName: node + linkType: hard + +"asn1@npm:~0.2.3": + version: 0.2.6 + resolution: "asn1@npm:0.2.6" + dependencies: + safer-buffer: ~2.1.0 + checksum: 39f2ae343b03c15ad4f238ba561e626602a3de8d94ae536c46a4a93e69578826305366dc09fbb9b56aec39b4982a463682f259c38e59f6fa380cd72cd61e493d + languageName: node + linkType: hard + +"assert-plus@npm:1.0.0, assert-plus@npm:^1.0.0": + version: 1.0.0 + resolution: "assert-plus@npm:1.0.0" + checksum: 19b4340cb8f0e6a981c07225eacac0e9d52c2644c080198765d63398f0075f83bbc0c8e95474d54224e297555ad0d631c1dcd058adb1ddc2437b41a6b424ac64 + languageName: node + linkType: hard + +"async@npm:3.2.4": + version: 3.2.4 + resolution: "async@npm:3.2.4" + checksum: 43d07459a4e1d09b84a20772414aa684ff4de085cbcaec6eea3c7a8f8150e8c62aa6cd4e699fe8ee93c3a5b324e777d34642531875a0817a35697522c1b02e89 + languageName: node + linkType: hard + +"async@npm:3.2.6, async@npm:^3.2.3": + version: 3.2.6 + resolution: "async@npm:3.2.6" + checksum: ee6eb8cd8a0ab1b58bd2a3ed6c415e93e773573a91d31df9d5ef559baafa9dab37d3b096fa7993e84585cac3697b2af6ddb9086f45d3ac8cae821bb2aab65682 + languageName: node + linkType: hard + +"asynciterator.prototype@npm:^1.0.0": + version: 1.0.0 + resolution: "asynciterator.prototype@npm:1.0.0" + dependencies: + has-symbols: ^1.0.3 + checksum: e8ebfd9493ac651cf9b4165e9d64030b3da1d17181bb1963627b59e240cdaf021d9b59d44b827dc1dde4e22387ec04c2d0f8720cf58a1c282e34e40cc12721b3 + 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 + +"at-least-node@npm:^1.0.0": + version: 1.0.0 + resolution: "at-least-node@npm:1.0.0" + checksum: 463e2f8e43384f1afb54bc68485c436d7622acec08b6fad269b421cb1d29cebb5af751426793d0961ed243146fe4dc983402f6d5a51b720b277818dbf6f2e49e + languageName: node + linkType: hard + +"atomic-sleep@npm:^1.0.0": + version: 1.0.0 + resolution: "atomic-sleep@npm:1.0.0" + checksum: b95275afb2f80732f22f43a60178430c468906a415a7ff18bcd0feeebc8eec3930b51250aeda91a476062a90e07132b43a1794e8d8ffcf9b650e8139be75fa36 + 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 + +"aws-sign2@npm:~0.7.0": + version: 0.7.0 + resolution: "aws-sign2@npm:0.7.0" + checksum: b148b0bb0778098ad8cf7e5fc619768bcb51236707ca1d3e5b49e41b171166d8be9fdc2ea2ae43d7decf02989d0aaa3a9c4caa6f320af95d684de9b548a71525 + languageName: node + linkType: hard + +"aws4@npm:^1.8.0": + version: 1.12.0 + resolution: "aws4@npm:1.12.0" + checksum: 68f79708ac7c335992730bf638286a3ee0a645cf12575d557860100767c500c08b30e24726b9f03265d74116417f628af78509e1333575e9f8d52a80edfe8cbc + languageName: node + linkType: hard + +"axios@npm:^1.0.0": + version: 1.8.2 + resolution: "axios@npm:1.8.2" + dependencies: + follow-redirects: ^1.15.6 + form-data: ^4.0.0 + proxy-from-env: ^1.1.0 + checksum: c47a43b79a058aa9e53a65bec9ade35c9f6e76a3999c795a79a2d205fb5f803fd4245497a0209a9727cbbe4f558791dd852ad2c168c5fc030259c11598ed8fd7 + languageName: node + linkType: hard + +"b4a@npm:^1.6.4": + version: 1.6.7 + resolution: "b4a@npm:1.6.7" + checksum: afe4e239b49c0ef62236fe0d788ac9bd9d7eac7e9855b0d1835593cd0efcc7be394f9cc28a747a2ed2cdcb0a48c3528a551a196f472eb625457c711169c9efa2 + 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-loader@npm:^8.0.6": + version: 8.3.0 + resolution: "babel-loader@npm:8.3.0" + dependencies: + find-cache-dir: ^3.3.1 + loader-utils: ^2.0.0 + make-dir: ^3.1.0 + schema-utils: ^2.6.5 + peerDependencies: + "@babel/core": ^7.0.0 + webpack: ">=2" + checksum: d48bcf9e030e598656ad3ff5fb85967db2eaaf38af5b4a4b99d25618a2057f9f100e6b231af2a46c1913206db506115ca7a8cbdf52c9c73d767070dae4352ab5 + 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.4 + resolution: "babel-plugin-polyfill-corejs3@npm:0.8.4" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.4.2 + core-js-compat: ^3.32.2 + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 7243241a5b978b1335d51bcbd1248d6c4df88f6b3726706e71e0392f111c59bbf01118c85bb0ed42dce65e90e8fc768d19eda0a81a321cbe54abd3df9a285dc8 + 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 + +"bare-events@npm:^2.2.0": + version: 2.5.4 + resolution: "bare-events@npm:2.5.4" + checksum: 522a5401caaede9d8c857c2fd346c993bf43995e958e8ebfa79d32b1e086032800e0639f3559d7ad85788fae54f6d9605685de507eec54298ea2aa2c8c9cb2c3 + languageName: node + linkType: hard + +"base16@npm:^1.0.0": + version: 1.0.0 + resolution: "base16@npm:1.0.0" + checksum: 0cd449a2db0f0f957e4b6b57e33bc43c9e20d4f1dd744065db94b5da35e8e71fa4dc4bc7a901e59a84d5f8b6936e3c520e2471787f667fc155fb0f50d8540f5d + languageName: node + linkType: hard + +"base64-js@npm:^1.3.1": + version: 1.5.1 + resolution: "base64-js@npm:1.5.1" + checksum: 669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005 + languageName: node + linkType: hard + +"batch@npm:0.6.1": + version: 0.6.1 + resolution: "batch@npm:0.6.1" + checksum: 61f9934c7378a51dce61b915586191078ef7f1c3eca707fdd58b96ff2ff56d9e0af2bdab66b1462301a73c73374239e6542d9821c0af787f3209a23365d07e7f + languageName: node + linkType: hard + +"bcrypt-pbkdf@npm:^1.0.0": + version: 1.0.2 + resolution: "bcrypt-pbkdf@npm:1.0.2" + dependencies: + tweetnacl: ^0.14.3 + checksum: 4edfc9fe7d07019609ccf797a2af28351736e9d012c8402a07120c4453a3b789a15f2ee1530dc49eee8f7eb9379331a8dd4b3766042b9e502f74a68e7f662291 + languageName: node + linkType: hard + +"bcryptjs@npm:2.4.3": + version: 2.4.3 + resolution: "bcryptjs@npm:2.4.3" + checksum: 0e80ed852a41f5dfb1853f53ee14a7390b0ef263ce05dba6e2ef3cd919dfad025a7c21ebcfe5bc7fa04b100990edf90c7a877ff7fe623d3e479753253131b629 + languageName: node + linkType: hard + +"before-after-hook@npm:^2.2.0": + version: 2.2.3 + resolution: "before-after-hook@npm:2.2.3" + checksum: a1a2430976d9bdab4cd89cb50d27fa86b19e2b41812bf1315923b0cba03371ebca99449809226425dd3bcef20e010db61abdaff549278e111d6480034bebae87 + 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 + +"binary-extensions@npm:^2.0.0": + version: 2.3.0 + resolution: "binary-extensions@npm:2.3.0" + checksum: bcad01494e8a9283abf18c1b967af65ee79b0c6a9e6fcfafebfe91dbe6e0fc7272bafb73389e198b310516ae04f7ad17d79aacf6cb4c0d5d5202a7e2e52c7d98 + languageName: node + linkType: hard + +"bl@npm:^4.0.3, bl@npm:^4.1.0": + version: 4.1.0 + resolution: "bl@npm:4.1.0" + dependencies: + buffer: ^5.5.0 + inherits: ^2.0.4 + readable-stream: ^3.4.0 + checksum: 9e8521fa7e83aa9427c6f8ccdcba6e8167ef30cc9a22df26effcc5ab682ef91d2cbc23a239f945d099289e4bbcfae7a192e9c28c84c6202e710a0dfec3722662 + languageName: node + linkType: hard + +"body-parser@npm:1.20.3": + version: 1.20.3 + resolution: "body-parser@npm:1.20.3" + dependencies: + bytes: 3.1.2 + content-type: ~1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.13.0 + raw-body: 2.5.2 + type-is: ~1.6.18 + unpipe: 1.0.0 + checksum: 1a35c59a6be8d852b00946330141c4f142c6af0f970faa87f10ad74f1ee7118078056706a05ae3093c54dabca9cd3770fa62a170a85801da1a4324f04381167d + languageName: node + linkType: hard + +"body-parser@npm:~1.20.3": + version: 1.20.4 + resolution: "body-parser@npm:1.20.4" + dependencies: + bytes: ~3.1.2 + content-type: ~1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: ~1.2.0 + http-errors: ~2.0.1 + iconv-lite: ~0.4.24 + on-finished: ~2.4.1 + qs: ~6.14.0 + raw-body: ~2.5.3 + type-is: ~1.6.18 + unpipe: ~1.0.0 + checksum: eaa212cff1737d2fbb49fc7aa1d71d9b456adea2dc3de388ff3c6d67b28028d6b1fa7e6cd77e3670b4cbd402ab011f80f6e5bb811480b53a28d11f33678c6298 + languageName: node + linkType: hard + +"bonjour-service@npm:^1.2.1": + version: 1.3.0 + resolution: "bonjour-service@npm:1.3.0" + dependencies: + fast-deep-equal: ^3.1.3 + multicast-dns: ^7.2.5 + checksum: 737bd40d0b609b18afdfcaf3c416a60d7dc94aedc4cb9d6e7af459a7f3bdffadc199370a48c46739d92689741cad4ec8a6987a3e4d869dd301b521227b92e082 + languageName: node + linkType: hard + +"boolbase@npm:^1.0.0": + version: 1.0.0 + resolution: "boolbase@npm:1.0.0" + checksum: 3e25c80ef626c3a3487c73dbfc70ac322ec830666c9ad915d11b701142fab25ec1e63eff2c450c74347acfd2de854ccde865cd79ef4db1683f7c7b046ea43bb0 + 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 + +"braces@npm:~3.0.2": + version: 3.0.3 + resolution: "braces@npm:3.0.3" + dependencies: + fill-range: ^7.1.1 + checksum: b95aa0b3bd909f6cd1720ffcf031aeaf46154dd88b4da01f9a1d3f7ea866a79eba76a6d01cbc3c422b2ee5cdc39a4f02491058d5df0d7bf6e6a162a832df1f69 + languageName: node + linkType: hard + +"browserify-zlib@npm:^0.1.4": + version: 0.1.4 + resolution: "browserify-zlib@npm:0.1.4" + dependencies: + pako: ~0.2.0 + checksum: abee4cb4349e8a21391fd874564f41b113fe691372913980e6fa06a777e4ea2aad4e942af14ab99bce190d5ac8f5328201432f4ef0eae48c6d02208bc212976f + languageName: node + linkType: hard + +"browserslist@npm:^4.21.9, browserslist@npm:^4.22.1": + version: 4.22.1 + resolution: "browserslist@npm:4.22.1" + dependencies: + caniuse-lite: ^1.0.30001541 + electron-to-chromium: ^1.4.535 + node-releases: ^2.0.13 + update-browserslist-db: ^1.0.13 + bin: + browserslist: cli.js + checksum: 7e6b10c53f7dd5d83fd2b95b00518889096382539fed6403829d447e05df4744088de46a571071afb447046abc3c66ad06fbc790e70234ec2517452e32ffd862 + 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-equal-constant-time@npm:1.0.1": + version: 1.0.1 + resolution: "buffer-equal-constant-time@npm:1.0.1" + checksum: 80bb945f5d782a56f374b292770901065bad21420e34936ecbe949e57724b4a13874f735850dd1cc61f078773c4fb5493a41391e7bda40d1fa388d6bd80daaab + 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 + +"buffer@npm:^5.5.0": + version: 5.7.1 + resolution: "buffer@npm:5.7.1" + dependencies: + base64-js: ^1.3.1 + ieee754: ^1.1.13 + checksum: e2cf8429e1c4c7b8cbd30834ac09bd61da46ce35f5c22a78e6c2f04497d6d25541b16881e30a019c6fd3154150650ccee27a308eff3e26229d788bbdeb08ab84 + languageName: node + linkType: hard + +"buffer@npm:^6.0.3": + version: 6.0.3 + resolution: "buffer@npm:6.0.3" + dependencies: + base64-js: ^1.3.1 + ieee754: ^1.2.1 + checksum: 5ad23293d9a731e4318e420025800b42bf0d264004c0286c8cc010af7a270c7a0f6522e84f54b9ad65cbd6db20b8badbfd8d2ebf4f80fa03dab093b89e68c3f9 + languageName: node + linkType: hard + +"builtins@npm:^1.0.3": + version: 1.0.3 + resolution: "builtins@npm:1.0.3" + checksum: 47ce94f7eee0e644969da1f1a28e5f29bd2e48b25b2bbb61164c345881086e29464ccb1fb88dbc155ea26e8b1f5fc8a923b26c8c1ed0935b67b644d410674513 + languageName: node + linkType: hard + +"builtins@npm:^5.0.0": + version: 5.0.1 + resolution: "builtins@npm:5.0.1" + dependencies: + semver: ^7.0.0 + checksum: 66d204657fe36522822a95b288943ad11b58f5eaede235b11d8c4edaa28ce4800087d44a2681524c340494aadb120a0068011acabe99d30e8f11a7d826d83515 + languageName: node + linkType: hard + +"bundle-name@npm:^4.1.0": + version: 4.1.0 + resolution: "bundle-name@npm:4.1.0" + dependencies: + run-applescript: ^7.0.0 + checksum: 1d966c8d2dbf4d9d394e53b724ac756c2414c45c01340b37743621f59cc565a435024b394ddcb62b9b335d1c9a31f4640eb648c3fec7f97ee74dc0694c9beb6c + languageName: node + linkType: hard + +"byte-size@npm:8.1.1": + version: 8.1.1 + resolution: "byte-size@npm:8.1.1" + checksum: 65f00881ffd3c2b282fe848ed954fa4ff8363eaa3f652102510668b90b3fad04d81889486ee1b641ee0d8c8b75cf32201f3b309e6b5fbb6cc869b48a91b62d3e + languageName: node + linkType: hard + +"bytes@npm:3.1.2, bytes@npm:~3.1.2": + version: 3.1.2 + resolution: "bytes@npm:3.1.2" + checksum: e4bcd3948d289c5127591fbedf10c0b639ccbf00243504e4e127374a15c3bc8eed0d28d4aaab08ff6f1cf2abc0cce6ba3085ed32f4f90e82a5683ce0014e1b6e + 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 + +"cacheable-lookup@npm:^5.0.3": + version: 5.0.4 + resolution: "cacheable-lookup@npm:5.0.4" + checksum: 763e02cf9196bc9afccacd8c418d942fc2677f22261969a4c2c2e760fa44a2351a81557bd908291c3921fe9beb10b976ba8fa50c5ca837c5a0dd945f16468f2d + languageName: node + linkType: hard + +"cacheable-request@npm:^7.0.2": + version: 7.0.4 + resolution: "cacheable-request@npm:7.0.4" + dependencies: + clone-response: ^1.0.2 + get-stream: ^5.1.0 + http-cache-semantics: ^4.0.0 + keyv: ^4.0.0 + lowercase-keys: ^2.0.0 + normalize-url: ^6.0.1 + responselike: ^2.0.0 + checksum: 0de9df773fd4e7dd9bd118959878f8f2163867e2e1ab3575ffbecbe6e75e80513dd0c68ba30005e5e5a7b377cc6162bbc00ab1db019bb4e9cb3c2f3f7a6f1ee4 + languageName: node + linkType: hard + +"call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": + version: 1.0.2 + resolution: "call-bind-apply-helpers@npm:1.0.2" + dependencies: + es-errors: ^1.3.0 + function-bind: ^1.1.2 + checksum: b2863d74fcf2a6948221f65d95b91b4b2d90cfe8927650b506141e669f7d5de65cea191bf788838bc40d13846b7886c5bc5c84ab96c3adbcf88ad69a72fcdc6b + languageName: node + linkType: hard + +"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 + +"call-bound@npm:^1.0.2": + version: 1.0.4 + resolution: "call-bound@npm:1.0.4" + dependencies: + call-bind-apply-helpers: ^1.0.2 + get-intrinsic: ^1.3.0 + checksum: 2f6399488d1c272f56306ca60ff696575e2b7f31daf23bc11574798c84d9f2759dceb0cb1f471a85b77f28962a7ac6411f51d283ea2e45319009a19b6ccab3b2 + 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 + +"camel-case@npm:^4.1.2": + version: 4.1.2 + resolution: "camel-case@npm:4.1.2" + dependencies: + pascal-case: ^3.1.2 + tslib: ^2.0.3 + checksum: bcbd25cd253b3cbc69be3f535750137dbf2beb70f093bdc575f73f800acc8443d34fd52ab8f0a2413c34f1e8203139ffc88428d8863e4dfe530cfb257a379ad6 + languageName: node + linkType: hard + +"camelcase-keys@npm:^6.2.2": + version: 6.2.2 + resolution: "camelcase-keys@npm:6.2.2" + dependencies: + camelcase: ^5.3.1 + map-obj: ^4.0.0 + quick-lru: ^4.0.1 + checksum: 43c9af1adf840471e54c68ab3e5fe8a62719a6b7dbf4e2e86886b7b0ff96112c945736342b837bd2529ec9d1c7d1934e5653318478d98e0cf22c475c04658e2a + 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": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.30001541": + version: 1.0.30001546 + resolution: "caniuse-lite@npm:1.0.30001546" + checksum: d3ef82f5ee94743002c5b2dd61c84342debcc94b2d5907b64ade3514ecfc4f20bbe86a6bc453fd6436d5fbcf6582e07405d7c2077565675a71c83adc238a11fa + languageName: node + linkType: hard + +"caseless@npm:~0.12.0": + version: 0.12.0 + resolution: "caseless@npm:0.12.0" + checksum: b43bd4c440aa1e8ee6baefee8063b4850fd0d7b378f6aabc796c9ec8cb26d27fb30b46885350777d9bd079c5256c0e1329ad0dc7c2817e0bb466810ebb353751 + languageName: node + linkType: hard + +"chalk@npm:4.1.0": + version: 4.1.0 + resolution: "chalk@npm:4.1.0" + dependencies: + ansi-styles: ^4.1.0 + supports-color: ^7.1.0 + checksum: 5561c7b4c063badee3e16d04bce50bd033e1be1bf4c6948639275683ffa7a1993c44639b43c22b1c505f0f813a24b1889037eb182546b48946f9fe7cdd0e7d13 + languageName: node + linkType: hard + +"chalk@npm:^2.3.0, chalk@npm:^2.4.1": + 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:^3.0.0": + version: 3.0.0 + resolution: "chalk@npm:3.0.0" + dependencies: + ansi-styles: ^4.1.0 + supports-color: ^7.1.0 + checksum: 8e3ddf3981c4da405ddbd7d9c8d91944ddf6e33d6837756979f7840a29272a69a5189ecae0ff84006750d6d1e92368d413335eab4db5476db6e6703a1d1e0505 + languageName: node + linkType: hard + +"chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.1": + 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 + +"chalk@npm:^5.3.0": + version: 5.3.0 + resolution: "chalk@npm:5.3.0" + checksum: 623922e077b7d1e9dedaea6f8b9e9352921f8ae3afe739132e0e00c275971bdd331268183b2628cf4ab1727c45ea1f28d7e24ac23ce1db1eb653c414ca8a5a80 + 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 + +"chardet@npm:^0.7.0": + version: 0.7.0 + resolution: "chardet@npm:0.7.0" + checksum: 6fd5da1f5d18ff5712c1e0aed41da200d7c51c28f11b36ee3c7b483f3696dabc08927fc6b227735eb8f0e1215c9a8abd8154637f3eff8cada5959df7f58b024d + languageName: node + linkType: hard + +"chevrotain-allstar@npm:~0.3.0": + version: 0.3.1 + resolution: "chevrotain-allstar@npm:0.3.1" + dependencies: + lodash-es: ^4.17.21 + peerDependencies: + chevrotain: ^11.0.0 + checksum: 5f5213693886d03ca04ffacc57f7424b5c8015e7a62de3c193c3bc94ae7472f113e9fab7f4e92ce0553c181483950a170576897d7b695aac6196ce32b988475e + languageName: node + linkType: hard + +"chevrotain@npm:~11.0.3": + version: 11.0.3 + resolution: "chevrotain@npm:11.0.3" + dependencies: + "@chevrotain/cst-dts-gen": 11.0.3 + "@chevrotain/gast": 11.0.3 + "@chevrotain/regexp-to-ast": 11.0.3 + "@chevrotain/types": 11.0.3 + "@chevrotain/utils": 11.0.3 + lodash-es: 4.17.21 + checksum: 43abce4ef2be2ae499027066ad5bfb2dd6b838423108adc69839133655b925a4d86212b97125d8deef9f84dc173b34457eedf59a2d178b6d0b2a0d2e2a7762a4 + languageName: node + linkType: hard + +"chokidar@npm:^3.6.0": + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" + dependencies: + anymatch: ~3.1.2 + braces: ~3.0.2 + fsevents: ~2.3.2 + glob-parent: ~5.1.2 + is-binary-path: ~2.1.0 + is-glob: ~4.0.1 + normalize-path: ~3.0.0 + readdirp: ~3.6.0 + dependenciesMeta: + fsevents: + optional: true + checksum: d2f29f499705dcd4f6f3bbed79a9ce2388cf530460122eed3b9c48efeab7a4e28739c6551fd15bec9245c6b9eeca7a32baa64694d64d9b6faeb74ddb8c4a413d + 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 + +"ci-info@npm:^3.2.0, ci-info@npm:^3.6.1": + version: 3.9.0 + resolution: "ci-info@npm:3.9.0" + checksum: 6b19dc9b2966d1f8c2041a838217299718f15d6c4b63ae36e4674edd2bee48f780e94761286a56aa59eb305a85fbea4ddffb7630ec063e7ec7e7e5ad42549a87 + 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-css@npm:^5.2.2": + version: 5.3.3 + resolution: "clean-css@npm:5.3.3" + dependencies: + source-map: ~0.6.0 + checksum: 941987c14860dd7d346d5cf121a82fd2caf8344160b1565c5387f7ccca4bbcaf885bace961be37c4f4713ce2d8c488dd89483c1add47bb779790edbfdcc79cbc + 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 + +"cli-cursor@npm:3.1.0, cli-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-cursor@npm:3.1.0" + dependencies: + restore-cursor: ^3.1.0 + checksum: 2692784c6cd2fd85cfdbd11f53aea73a463a6d64a77c3e098b2b4697a20443f430c220629e1ca3b195ea5ac4a97a74c2ee411f3807abf6df2b66211fec0c0a29 + languageName: node + linkType: hard + +"cli-spinners@npm:2.6.1, cli-spinners@npm:^2.5.0": + version: 2.6.1 + resolution: "cli-spinners@npm:2.6.1" + checksum: 423409baaa7a58e5104b46ca1745fbfc5888bbd0b0c5a626e052ae1387060839c8efd512fb127e25769b3dc9562db1dc1b5add6e0b93b7ef64f477feb6416a45 + languageName: node + linkType: hard + +"cli-width@npm:^3.0.0": + version: 3.0.0 + resolution: "cli-width@npm:3.0.0" + checksum: 4c94af3769367a70e11ed69aa6095f1c600c0ff510f3921ab4045af961820d57c0233acfa8b6396037391f31b4c397e1f614d234294f979ff61430a6c166c3f6 + languageName: node + linkType: hard + +"cli-width@npm:^4.1.0": + version: 4.1.0 + resolution: "cli-width@npm:4.1.0" + checksum: 0a79cff2dbf89ef530bcd54c713703ba94461457b11e5634bd024c78796ed21401e32349c004995954e06f442d82609287e7aabf6a5f02c919a1cf3b9b6854ff + languageName: node + linkType: hard + +"clipanion@npm:4.0.0-rc.4, clipanion@npm:^4.0.0-rc.2": + version: 4.0.0-rc.4 + resolution: "clipanion@npm:4.0.0-rc.4" + dependencies: + typanion: ^3.8.0 + peerDependencies: + typanion: "*" + checksum: a92aa03b24eb89292b7bda570973c164fff16a1c5ba4c4abdd1b0dd6110a57651752114ec9f5cfc29e2040213e514b3220142a2316c4fc4e659ba423caa296c7 + languageName: node + linkType: hard + +"cliui@npm:^7.0.2": + version: 7.0.4 + resolution: "cliui@npm:7.0.4" + dependencies: + string-width: ^4.2.0 + strip-ansi: ^6.0.0 + wrap-ansi: ^7.0.0 + checksum: ce2e8f578a4813806788ac399b9e866297740eecd4ad1823c27fd344d78b22c5f8597d548adbcc46f0573e43e21e751f39446c5a5e804a12aace402b7a315d7f + 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, 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-response@npm:^1.0.2": + version: 1.0.3 + resolution: "clone-response@npm:1.0.3" + dependencies: + mimic-response: ^1.0.0 + checksum: 4e671cac39b11c60aa8ba0a450657194a5d6504df51bca3fac5b3bd0145c4f8e8464898f87c8406b83232e3bc5cca555f51c1f9c8ac023969ebfbf7f6bdabb2e + languageName: node + linkType: hard + +"clone@npm:^1.0.2": + version: 1.0.4 + resolution: "clone@npm:1.0.4" + checksum: d06418b7335897209e77bdd430d04f882189582e67bd1f75a04565f3f07f5b3f119a9d670c943b6697d0afb100f03b866b3b8a1f91d4d02d72c4ecf2bb64b5dd + languageName: node + linkType: hard + +"clsx@npm:^1.1.1": + version: 1.2.1 + resolution: "clsx@npm:1.2.1" + checksum: 30befca8019b2eb7dbad38cff6266cf543091dae2825c856a62a8ccf2c3ab9c2907c4d12b288b73101196767f66812365400a227581484a05f968b0307cfaf12 + languageName: node + linkType: hard + +"cmd-shim@npm:6.0.1": + version: 6.0.1 + resolution: "cmd-shim@npm:6.0.1" + checksum: 359006b3a5bb4a0ff161a44ccc18fbba947db748ef0dd12273e476792e316a5edb0945d74bfa1e91cd88ce0511025fde87901eda092c479d83cfcd6734562683 + 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, color-convert@npm:^1.9.3": + 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-convert@npm:^3.0.1": + version: 3.1.0 + resolution: "color-convert@npm:3.1.0" + dependencies: + color-name: ^2.0.0 + checksum: 7fdcebff4b5c33596de4b7a14953fdadf17352b217821fa02c84dcb2f5b5da9ab179152e01a4d449027ba4aa02fc5ab587bcb2395a17dd0276be6e2d323b9353 + 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.0.0, color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 + languageName: node + linkType: hard + +"color-name@npm:^2.0.0": + version: 2.0.0 + resolution: "color-name@npm:2.0.0" + checksum: 10a1addae41de2987d6b90dbd3cfade266c2e6f680ce21749911df4493b4fae07654862c6b5358bdd13e155461acb4eedaa5e0ba172bf13542cdcca10866cf2b + languageName: node + linkType: hard + +"color-string@npm:^1.6.0": + version: 1.9.1 + resolution: "color-string@npm:1.9.1" + dependencies: + color-name: ^1.0.0 + simple-swizzle: ^0.2.2 + checksum: c13fe7cff7885f603f49105827d621ce87f4571d78ba28ef4a3f1a104304748f620615e6bf065ecd2145d0d9dad83a3553f52bb25ede7239d18e9f81622f1cc5 + languageName: node + linkType: hard + +"color-string@npm:^2.0.0": + version: 2.0.1 + resolution: "color-string@npm:2.0.1" + dependencies: + color-name: ^2.0.0 + checksum: a5ab024f78f67c0d5c1c995943ff95dce193beaa981492f6a36c05a9939a9db519e2d821d91df15677a47107fe90e4b12fd345729d755c65b543924db05c3a3f + 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 + +"color@npm:^3.2.1": + version: 3.2.1 + resolution: "color@npm:3.2.1" + dependencies: + color-convert: ^1.9.3 + color-string: ^1.6.0 + checksum: f81220e8b774d35865c2561be921f5652117638dcda7ca4029262046e37fc2444ac7bbfdd110cf1fd9c074a4ee5eda8f85944ffbdda26186b602dd9bb05f6400 + languageName: node + linkType: hard + +"color@npm:^5.0.0": + version: 5.0.0 + resolution: "color@npm:5.0.0" + dependencies: + color-convert: ^3.0.1 + color-string: ^2.0.0 + checksum: 2985081f00d02dbeb544dc04b287011443d9fe97905cf917b5af9167513acbe1d0ea98fe0614ba7174033fedb2b874a4e35f146832d116da64193c7f4a549ec5 + languageName: node + linkType: hard + +"colorette@npm:2.0.20, colorette@npm:^2.0.10": + version: 2.0.20 + resolution: "colorette@npm:2.0.20" + checksum: 0c016fea2b91b733eb9f4bcdb580018f52c0bc0979443dad930e5037a968237ac53d9beb98e218d2e9235834f8eebce7f8e080422d6194e957454255bde71d3d + languageName: node + linkType: hard + +"columnify@npm:1.6.0": + version: 1.6.0 + resolution: "columnify@npm:1.6.0" + dependencies: + strip-ansi: ^6.0.1 + wcwidth: ^1.0.0 + checksum: 0d590023616a27bcd2135c0f6ddd6fac94543263f9995538bbe391068976e30545e5534d369737ec7c3e9db4e53e70a277462de46aeb5a36e6997b4c7559c335 + languageName: node + linkType: hard + +"combined-stream@npm:^1.0.8, combined-stream@npm:~1.0.6": + 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, commander@npm:^7.2.0": + version: 7.2.0 + resolution: "commander@npm:7.2.0" + checksum: 53501cbeee61d5157546c0bef0fedb6cdfc763a882136284bed9a07225f09a14b82d2a84e7637edfd1a679fb35ed9502fd58ef1d091e6287f60d790147f68ddc + languageName: node + linkType: hard + +"commander@npm:9.2.0": + version: 9.2.0 + resolution: "commander@npm:9.2.0" + checksum: 7c82e4cd969712aa6d7c055b8351807a7230f9f31ef7ec7881e11a1147511de85adf5d6ccfd200240a118eecf693b220caf6865b8efbcea558a70d35aa9ed711 + languageName: node + linkType: hard + +"commander@npm:^6.2.0": + version: 6.2.1 + resolution: "commander@npm:6.2.1" + checksum: d7090410c0de6bc5c67d3ca41c41760d6d268f3c799e530aafb73b7437d1826bbf0d2a3edac33f8b57cc9887b4a986dce307fa5557e109be40eadb7c43b21742 + languageName: node + linkType: hard + +"commander@npm:^8.3.0": + version: 8.3.0 + resolution: "commander@npm:8.3.0" + checksum: 0f82321821fc27b83bd409510bb9deeebcfa799ff0bf5d102128b500b7af22872c0c92cb6a0ebc5a4cf19c6b550fba9cedfa7329d18c6442a625f851377bacf0 + 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 + +"commondir@npm:^1.0.1": + version: 1.0.1 + resolution: "commondir@npm:1.0.1" + checksum: 59715f2fc456a73f68826285718503340b9f0dd89bfffc42749906c5cf3d4277ef11ef1cca0350d0e79204f00f1f6d83851ececc9095dc88512a697ac0b9bdcb + languageName: node + linkType: hard + +"compare-func@npm:^2.0.0": + version: 2.0.0 + resolution: "compare-func@npm:2.0.0" + dependencies: + array-ify: ^1.0.0 + dot-prop: ^5.1.0 + checksum: fb71d70632baa1e93283cf9d80f30ac97f003aabee026e0b4426c9716678079ef5fea7519b84d012cbed938c476493866a38a79760564a9e21ae9433e40e6f0d + languageName: node + linkType: hard + +"compressible@npm:~2.0.18": + version: 2.0.18 + resolution: "compressible@npm:2.0.18" + dependencies: + mime-db: ">= 1.43.0 < 2" + checksum: 58321a85b375d39230405654721353f709d0c1442129e9a17081771b816302a012471a9b8f4864c7dbe02eef7f2aaac3c614795197092262e94b409c9be108f0 + languageName: node + linkType: hard + +"compression@npm:1.7.5": + version: 1.7.5 + resolution: "compression@npm:1.7.5" + dependencies: + bytes: 3.1.2 + compressible: ~2.0.18 + debug: 2.6.9 + negotiator: ~0.6.4 + on-headers: ~1.0.2 + safe-buffer: 5.2.1 + vary: ~1.1.2 + checksum: d624b5562492518eee82c4f1381ea36f69f1f10b4283bfc2dcafd7d4d7eeed17c3f0e8f2951798594b7064db7ac5a6198df34816bde2d56bb7c75ce1570880e9 + languageName: node + linkType: hard + +"compression@npm:^1.7.4": + version: 1.8.1 + resolution: "compression@npm:1.8.1" + dependencies: + bytes: 3.1.2 + compressible: ~2.0.18 + debug: 2.6.9 + negotiator: ~0.6.4 + on-headers: ~1.1.0 + safe-buffer: 5.2.1 + vary: ~1.1.2 + checksum: 906325935180cd3507d30ed898fb129deccab03689383d55536245a94610f5003923bb14c95ee6adc8d658ee13be549407eb4346ef55169045f3e41e9969808e + 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 + +"concat-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "concat-stream@npm:2.0.0" + dependencies: + buffer-from: ^1.0.0 + inherits: ^2.0.3 + readable-stream: ^3.0.2 + typedarray: ^0.0.6 + checksum: d7f75d48f0ecd356c1545d87e22f57b488172811b1181d96021c7c4b14ab8855f5313280263dca44bb06e5222f274d047da3e290a38841ef87b59719bde967c7 + languageName: node + linkType: hard + +"confbox@npm:^0.1.8": + version: 0.1.8 + resolution: "confbox@npm:0.1.8" + checksum: 5c7718ab22cf9e35a31c21ef124156076ae8c9dc65e6463d54961caf5a1d529284485a0fdf83fd23b27329f3b75b0c8c07d2e36c699f5151a2efe903343f976a + languageName: node + linkType: hard + +"confbox@npm:^0.2.2": + version: 0.2.2 + resolution: "confbox@npm:0.2.2" + checksum: 335bc40d58f2785d2f8c5d45f0224e160dd634d42984ecf75b06addb6fe5f9584502ac9845d6f08f8ec066c8a796fd8b3c9ae9e8c7735047aa141d0e83469ab4 + languageName: node + linkType: hard + +"connect-history-api-fallback@npm:^2.0.0": + version: 2.0.0 + resolution: "connect-history-api-fallback@npm:2.0.0" + checksum: dc5368690f4a5c413889792f8df70d5941ca9da44523cde3f87af0745faee5ee16afb8195434550f0504726642734f2683d6c07f8b460f828a12c45fbd4c9a68 + languageName: node + linkType: hard + +"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 + +"content-disposition@npm:0.5.4, content-disposition@npm:~0.5.4": + version: 0.5.4 + resolution: "content-disposition@npm:0.5.4" + dependencies: + safe-buffer: 5.2.1 + checksum: afb9d545e296a5171d7574fcad634b2fdf698875f4006a9dd04a3e1333880c5c0c98d47b560d01216fb6505a54a2ba6a843ee3a02ec86d7e911e8315255f56c3 + languageName: node + linkType: hard + +"content-type@npm:~1.0.4, content-type@npm:~1.0.5": + version: 1.0.5 + resolution: "content-type@npm:1.0.5" + checksum: 566271e0a251642254cde0f845f9dd4f9856e52d988f4eb0d0dcffbb7a1f8ec98de7a5215fc628f3bce30fe2fb6fd2bc064b562d721658c59b544e2d34ea2766 + languageName: node + linkType: hard + +"conventional-changelog-angular@npm:7.0.0": + version: 7.0.0 + resolution: "conventional-changelog-angular@npm:7.0.0" + dependencies: + compare-func: ^2.0.0 + checksum: 2478962ad7ce42878449ba3568347d704f22c5c9af1cd36916b5600734bd7f82c09712a338c649195c44e907f1b0372ce52d6cb51df643f495c89af05ad4bc48 + languageName: node + linkType: hard + +"conventional-changelog-core@npm:5.0.1": + version: 5.0.1 + resolution: "conventional-changelog-core@npm:5.0.1" + dependencies: + add-stream: ^1.0.0 + conventional-changelog-writer: ^6.0.0 + conventional-commits-parser: ^4.0.0 + dateformat: ^3.0.3 + get-pkg-repo: ^4.2.1 + git-raw-commits: ^3.0.0 + git-remote-origin-url: ^2.0.0 + git-semver-tags: ^5.0.0 + normalize-package-data: ^3.0.3 + read-pkg: ^3.0.0 + read-pkg-up: ^3.0.0 + checksum: 5f37f14f8d5effb4c6bf861df11e918a277ecc2cf94534eaed44d1455b11ef450d0f6d122f0e7450a44a268d9473730cf918b7558964dcba2f0ac0896824e66f + languageName: node + linkType: hard + +"conventional-changelog-preset-loader@npm:^3.0.0": + version: 3.0.0 + resolution: "conventional-changelog-preset-loader@npm:3.0.0" + checksum: 199c4730c5151f243d35c24585114900c2a7091eab5832cfeb49067a18a2b77d5c9a86b779e6e18b49278a1ff83c011c1d9bb6da95bd1f78d9e36d4d379216d5 + languageName: node + linkType: hard + +"conventional-changelog-writer@npm:^6.0.0": + version: 6.0.1 + resolution: "conventional-changelog-writer@npm:6.0.1" + dependencies: + conventional-commits-filter: ^3.0.0 + dateformat: ^3.0.3 + handlebars: ^4.7.7 + json-stringify-safe: ^5.0.1 + meow: ^8.1.2 + semver: ^7.0.0 + split: ^1.0.1 + bin: + conventional-changelog-writer: cli.js + checksum: d8619ff7446efa71e0a019c07bdf20debff3f32438f783277b80314109429d7075b3d913e59c57cd6e014e9bef611c2a8fb052de2832144f38c0e54485257126 + languageName: node + linkType: hard + +"conventional-commits-filter@npm:^3.0.0": + version: 3.0.0 + resolution: "conventional-commits-filter@npm:3.0.0" + dependencies: + lodash.ismatch: ^4.4.0 + modify-values: ^1.0.1 + checksum: 73337f42acff7189e1dfca8d13c9448ce085ac1c09976cb33617cc909949621befb1640b1c6c30a1be4953a1be0deea9e93fa0dc86725b8be8e249a64fbb4632 + languageName: node + linkType: hard + +"conventional-commits-parser@npm:^4.0.0": + version: 4.0.0 + resolution: "conventional-commits-parser@npm:4.0.0" + dependencies: + JSONStream: ^1.3.5 + is-text-path: ^1.0.1 + meow: ^8.1.2 + split2: ^3.2.2 + bin: + conventional-commits-parser: cli.js + checksum: 12d95b5ba8e0710a6d3cd2e01f01dd7818fdf0bb2b33f4b75444e2c9aee49598776b0706a528ed49e83aec5f1896c32cbc7f8e6589f61a15187293707448f928 + languageName: node + linkType: hard + +"conventional-recommended-bump@npm:7.0.1": + version: 7.0.1 + resolution: "conventional-recommended-bump@npm:7.0.1" + dependencies: + concat-stream: ^2.0.0 + conventional-changelog-preset-loader: ^3.0.0 + conventional-commits-filter: ^3.0.0 + conventional-commits-parser: ^4.0.0 + git-raw-commits: ^3.0.0 + git-semver-tags: ^5.0.0 + meow: ^8.1.2 + bin: + conventional-recommended-bump: cli.js + checksum: e2d1f2f40f93612a6da035d0c1a12d70208e0da509a17a9c9296a05e73a6eca5d81fe8c6a7b45e973181fa7c876c6edb9a114a2d7da4f6df00c47c7684ab62d2 + 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 + +"cookie-signature@npm:1.0.6": + version: 1.0.6 + resolution: "cookie-signature@npm:1.0.6" + checksum: f4e1b0a98a27a0e6e66fd7ea4e4e9d8e038f624058371bf4499cfcd8f3980be9a121486995202ba3fca74fbed93a407d6d54d43a43f96fd28d0bd7a06761591a + languageName: node + linkType: hard + +"cookie-signature@npm:~1.0.6": + version: 1.0.7 + resolution: "cookie-signature@npm:1.0.7" + checksum: 1a62808cd30d15fb43b70e19829b64d04b0802d8ef00275b57d152de4ae6a3208ca05c197b6668d104c4d9de389e53ccc2d3bc6bcaaffd9602461417d8c40710 + languageName: node + linkType: hard + +"cookie@npm:0.6.0": + version: 0.6.0 + resolution: "cookie@npm:0.6.0" + checksum: f56a7d32a07db5458e79c726b77e3c2eff655c36792f2b6c58d351fb5f61531e5b1ab7f46987150136e366c65213cbe31729e02a3eaed630c3bf7334635fb410 + languageName: node + linkType: hard + +"cookie@npm:0.7.1": + version: 0.7.1 + resolution: "cookie@npm:0.7.1" + checksum: cec5e425549b3650eb5c3498a9ba3cde0b9cd419e3b36e4b92739d30b4d89e0b678b98c1ddc209ce7cf958cd3215671fd6ac47aec21f10c2a0cc68abd399d8a7 + languageName: node + linkType: hard + +"cookie@npm:~0.7.1": + version: 0.7.2 + resolution: "cookie@npm:0.7.2" + checksum: 9bf8555e33530affd571ea37b615ccad9b9a34febbf2c950c86787088eb00a8973690833b0f8ebd6b69b753c62669ea60cec89178c1fb007bf0749abed74f93e + languageName: node + linkType: hard + +"core-js-compat@npm:^3.31.0, core-js-compat@npm:^3.32.2": + version: 3.33.0 + resolution: "core-js-compat@npm:3.33.0" + dependencies: + browserslist: ^4.22.1 + checksum: 83ae54008c09b8e0ae3c59457039866c342c7e28b0d30eebb638a5b51c01432e63fe97695c90645cbc6a8b073a4f9a8b0e75f0818bbf8b4b054e01f4c17d3181 + languageName: node + linkType: hard + +"core-js@npm:3.37.1": + version: 3.37.1 + resolution: "core-js@npm:3.37.1" + checksum: 2d58a5c599f05c3e04abc8bc5e64b88eb17d914c0f552f670fb800afa74ec54b4fcc7f231ad6bd45badaf62c0fb0ce30e6fe89cedb6bb6d54e6f19115c3c17ff + languageName: node + linkType: hard + +"core-util-is@npm:1.0.2, core-util-is@npm:~1.0.0": + version: 1.0.2 + resolution: "core-util-is@npm:1.0.2" + checksum: 7a4c925b497a2c91421e25bf76d6d8190f0b2359a9200dbeed136e63b2931d6294d3b1893eda378883ed363cd950f44a12a401384c609839ea616befb7927dab + languageName: node + linkType: hard + +"cors@npm:2.8.5": + version: 2.8.5 + resolution: "cors@npm:2.8.5" + dependencies: + object-assign: ^4 + vary: ^1 + checksum: ced838404ccd184f61ab4fdc5847035b681c90db7ac17e428f3d81d69e2989d2b680cc254da0e2554f5ed4f8a341820a1ce3d1c16b499f6e2f47a1b9b07b5006 + languageName: node + linkType: hard + +"cose-base@npm:^1.0.0": + version: 1.0.3 + resolution: "cose-base@npm:1.0.3" + dependencies: + layout-base: ^1.0.0 + checksum: 3f3d592316df74adb215ca91e430f1c22b6e890bc0025b32ae1f6464c73fdb9614816cb40a8d38b40c6a3e9e7b8c64eda90d53fb9a4a6948abec17dad496f30b + languageName: node + linkType: hard + +"cose-base@npm:^2.2.0": + version: 2.2.0 + resolution: "cose-base@npm:2.2.0" + dependencies: + layout-base: ^2.0.0 + checksum: 2e694f340bf216c71fc126d237578a4168e138720011d0b48c88bf9bfc7fd45f912eff2c603ef3d1307d6e3ce6f465ed382285a764a3a6620db590c5457d2557 + languageName: node + linkType: hard + +"cosmiconfig@npm:^8.2.0": + version: 8.3.6 + resolution: "cosmiconfig@npm:8.3.6" + 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: dc339ebea427898c9e03bf01b56ba7afbac07fc7d2a2d5a15d6e9c14de98275a9565da949375aee1809591c152c0a3877bb86dbeaf74d5bd5aaa79955ad9e7a0 + 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, crelt@npm:^1.0.6": + version: 1.0.6 + resolution: "crelt@npm:1.0.6" + checksum: dad842093371ad702afbc0531bfca2b0a8dd920b23a42f26e66dabbed9aad9acd5b9030496359545ef3937c3aced0fd4ac39f7a2d280a23ddf9eb7fdcb94a69f + languageName: node + linkType: hard + +"cross-spawn@npm:7.0.3, 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 + +"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 + +"crypto@npm:~1.0.1": + version: 1.0.1 + resolution: "crypto@npm:1.0.1" + checksum: 087fe3165bd94c333a49e6ed66a0193911f63eac38a24f379b3001a5fe260a59c413646e53a0f67875ba13902b2686d81dc703cb2c147a4ec727dcdc04e5645e + 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-select@npm:^4.1.3": + version: 4.3.0 + resolution: "css-select@npm:4.3.0" + dependencies: + boolbase: ^1.0.0 + css-what: ^6.0.1 + domhandler: ^4.3.1 + domutils: ^2.8.0 + nth-check: ^2.0.1 + checksum: d6202736839194dd7f910320032e7cfc40372f025e4bf21ca5bf6eb0a33264f322f50ba9c0adc35dadd342d3d6fae5ca244779a4873afbfa76561e343f2058e0 + languageName: node + linkType: hard + +"css-what@npm:^6.0.1": + version: 6.1.0 + resolution: "css-what@npm:6.1.0" + checksum: b975e547e1e90b79625918f84e67db5d33d896e6de846c9b584094e529f0c63e2ab85ee33b9daffd05bff3a146a1916bec664e18bb76dd5f66cbff9fc13b2bbe + 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, csstype@npm:^3.0.10, csstype@npm:^3.0.2": + version: 3.0.10 + resolution: "csstype@npm:3.0.10" + checksum: 20a8fa324f2b33ddf94aa7507d1b6ab3daa6f3cc308888dc50126585d7952f2471de69b2dbe0635d1fdc31223fef8e070842691877e725caf456e2378685a631 + languageName: node + linkType: hard + +"cytoscape-cose-bilkent@npm:^4.1.0": + version: 4.1.0 + resolution: "cytoscape-cose-bilkent@npm:4.1.0" + dependencies: + cose-base: ^1.0.0 + peerDependencies: + cytoscape: ^3.2.0 + checksum: bea6aa139e21bf4135b01b99f8778eed061e074d1a1689771597e8164a999d66f4075d46be584b0a88a5447f9321f38c90c8821df6a9322faaf5afebf4848d97 + languageName: node + linkType: hard + +"cytoscape-fcose@npm:^2.2.0": + version: 2.2.0 + resolution: "cytoscape-fcose@npm:2.2.0" + dependencies: + cose-base: ^2.2.0 + peerDependencies: + cytoscape: ^3.2.0 + checksum: 94ffe6f131f9c08c2a0a7a6ce1c6c5e523a395bf8d84eba6d4a5f85e23f33788ea3ff807540861a5f78a6914a27729e06a7e6f66784f4f28ea1c030acf500121 + languageName: node + linkType: hard + +"cytoscape@npm:^3.29.3": + version: 3.31.1 + resolution: "cytoscape@npm:3.31.1" + checksum: 88dabf36caa2fdd01ff6f511989a436424f90f95a5a81b7062574f6dcaf5079bbb91f9b70dc0549ba6dadbea3b96b4ad7538948f2ff6ed866db8a10593597ed6 + languageName: node + linkType: hard + +"d3-array@npm:1 - 2": + version: 2.12.1 + resolution: "d3-array@npm:2.12.1" + dependencies: + internmap: ^1.0.0 + checksum: 97853b7b523aded17078f37c67742f45d81e88dda2107ae9994c31b9e36c5fa5556c4c4cf39650436f247813602dfe31bf7ad067ff80f127a16903827f10c6eb + 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, d3-array@npm:3.2.4, d3-array@npm:^3.2.0, 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-axis@npm:3": + version: 3.0.0 + resolution: "d3-axis@npm:3.0.0" + checksum: 227ddaa6d4bad083539c1ec245e2228b4620cca941997a8a650cb0af239375dc20271993127eedac66f0543f331027aca09385e1e16eed023f93eac937cddf0b + languageName: node + linkType: hard + +"d3-brush@npm:3": + version: 3.0.0 + resolution: "d3-brush@npm:3.0.0" + dependencies: + d3-dispatch: 1 - 3 + d3-drag: 2 - 3 + d3-interpolate: 1 - 3 + d3-selection: 3 + d3-transition: 3 + checksum: 1d042167769a02ac76271c71e90376d7184206e489552b7022a8ec2860209fe269db55e0a3430f3dcbe13b6fec2ff65b1adeaccba3218991b38e022390df72e3 + languageName: node + linkType: hard + +"d3-chord@npm:3": + version: 3.0.1 + resolution: "d3-chord@npm:3.0.1" + dependencies: + d3-path: 1 - 3 + checksum: ddf35d41675e0f8738600a8a2f05bf0858def413438c12cba357c5802ecc1014c80a658acbbee63cbad2a8c747912efb2358455d93e59906fe37469f1dc6b78b + languageName: node + linkType: hard + +"d3-color@npm:1 - 3, d3-color@npm: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-contour@npm:4": + version: 4.0.2 + resolution: "d3-contour@npm:4.0.2" + dependencies: + d3-array: ^3.2.0 + checksum: 56aa082c1acf62a45b61c8d29fdd307041785aa17d9a07de7d1d848633769887a33fb6823888afa383f31c460d0f21d24756593e84e334ddb92d774214d32f1b + languageName: node + linkType: hard + +"d3-delaunay@npm:6, 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, d3-dispatch@npm:3": + version: 3.0.1 + resolution: "d3-dispatch@npm:3.0.1" + checksum: fdfd4a230f46463e28e5b22a45dd76d03be9345b605e1b5dc7d18bd7ebf504e6c00ae123fd6d03e23d9e2711e01f0e14ea89cd0632545b9f0c00b924ba4be223 + languageName: node + linkType: hard + +"d3-drag@npm:2 - 3, d3-drag@npm:3": + version: 3.0.0 + resolution: "d3-drag@npm:3.0.0" + dependencies: + d3-dispatch: 1 - 3 + d3-selection: 3 + checksum: d297231e60ecd633b0d076a63b4052b436ddeb48b5a3a11ff68c7e41a6774565473a6b064c5e9256e88eca6439a917ab9cea76032c52d944ddbf4fd289e31111 + languageName: node + linkType: hard + +"d3-dsv@npm:1 - 3, d3-dsv@npm:3, 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-ease@npm:1 - 3, d3-ease@npm:3": + version: 3.0.1 + resolution: "d3-ease@npm:3.0.1" + checksum: 06e2ee5326d1e3545eab4e2c0f84046a123dcd3b612e68858219aa034da1160333d9ce3da20a1d3486d98cb5c2a06f7d233eee1bc19ce42d1533458bd85dedcd + languageName: node + linkType: hard + +"d3-fetch@npm:3": + version: 3.0.1 + resolution: "d3-fetch@npm:3.0.1" + dependencies: + d3-dsv: 1 - 3 + checksum: 382dcea06549ef82c8d0b719e5dc1d96286352579e3b51b20f71437f5800323315b09cf7dcfd4e1f60a41e1204deb01758470cea257d2285a7abd9dcec806984 + languageName: node + linkType: hard + +"d3-force@npm:3, 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, 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, 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, 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 - 3, d3-interpolate@npm:1.2.0 - 3, d3-interpolate@npm: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:1": + version: 1.0.9 + resolution: "d3-path@npm:1.0.9" + checksum: d4382573baf9509a143f40944baeff9fead136926aed6872f7ead5b3555d68925f8a37935841dd51f1d70b65a294fe35c065b0906fb6e42109295f6598fc16d0 + languageName: node + linkType: hard + +"d3-path@npm:1 - 3, d3-path@npm:3, d3-path@npm:^3.1.0": + version: 3.1.0 + resolution: "d3-path@npm:3.1.0" + checksum: 2306f1bd9191e1eac895ec13e3064f732a85f243d6e627d242a313f9777756838a2215ea11562f0c7630c7c3b16a19ec1fe0948b1c82f3317fac55882f6ee5d8 + languageName: node + linkType: hard + +"d3-polygon@npm:3": + version: 3.0.1 + resolution: "d3-polygon@npm:3.0.1" + checksum: 0b85c532517895544683849768a2c377cee3801ef8ccf3fa9693c8871dd21a0c1a2a0fc75ff54192f0ba2c562b0da2bc27f5bf959dfafc7fa23573b574865d2c + languageName: node + linkType: hard + +"d3-quadtree@npm:1 - 3, d3-quadtree@npm:3": + version: 3.0.1 + resolution: "d3-quadtree@npm:3.0.1" + checksum: 5469d462763811475f34a7294d984f3eb100515b0585ca5b249656f6b1a6e99b20056a2d2e463cc9944b888896d2b1d07859c50f9c0cf23438df9cd2e3146066 + languageName: node + linkType: hard + +"d3-random@npm:3": + version: 3.0.1 + resolution: "d3-random@npm:3.0.1" + checksum: a70ad8d1cabe399ebeb2e482703121ac8946a3b336830b518da6848b9fdd48a111990fc041dc716f16885a72176ffa2898f2a250ca3d363ecdba5ef92b18e131 + languageName: node + linkType: hard + +"d3-sankey@npm:^0.12.3": + version: 0.12.3 + resolution: "d3-sankey@npm:0.12.3" + dependencies: + d3-array: 1 - 2 + d3-shape: ^1.2.0 + checksum: df1cb9c9d02dd8fd14040e89f112f0da58c03bd7529fa001572a6925a51496d1d82ff25d9fedb6c429a91645fbd2476c19891e535ac90c8bc28337c33ee21c87 + languageName: node + linkType: hard + +"d3-scale-chromatic@npm:3, d3-scale-chromatic@npm:^3.1.0": + version: 3.1.0 + resolution: "d3-scale-chromatic@npm:3.1.0" + dependencies: + d3-color: 1 - 3 + d3-interpolate: 1 - 3 + checksum: ab6324bd8e1f708e731e02ab44e09741efda2b174cea1d8ca21e4a87546295e99856bc44e2fd3890f228849c96bccfbcf922328f95be6a7df117453eb5cf22c9 + languageName: node + linkType: hard + +"d3-scale@npm:4, 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-selection@npm:2 - 3, d3-selection@npm:3": + version: 3.0.0 + resolution: "d3-selection@npm:3.0.0" + checksum: f4e60e133309115b99f5b36a79ae0a19d71ee6e2d5e3c7216ef3e75ebd2cb1e778c2ed2fa4c01bef35e0dcbd96c5428f5bd6ca2184fe2957ed582fde6841cbc5 + languageName: node + linkType: hard + +"d3-shape@npm:3, 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-shape@npm:^1.2.0": + version: 1.3.7 + resolution: "d3-shape@npm:1.3.7" + dependencies: + d3-path: 1 + checksum: 46566a3ab64a25023653bf59d64e81e9e6c987e95be985d81c5cedabae5838bd55f4a201a6b69069ca862eb63594cd263cac9034afc2b0e5664dfe286c866129 + languageName: node + linkType: hard + +"d3-time-format@npm:2 - 4, d3-time-format@npm: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, 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, d3-timer@npm:^3.0.1": + version: 3.0.1 + resolution: "d3-timer@npm:3.0.1" + checksum: 1cfddf86d7bca22f73f2c427f52dfa35c49f50d64e187eb788dcad6e927625c636aa18ae4edd44d084eb9d1f81d8ca4ec305dae7f733c15846a824575b789d73 + languageName: node + linkType: hard + +"d3-transition@npm:2 - 3, d3-transition@npm:3": + version: 3.0.1 + resolution: "d3-transition@npm:3.0.1" + dependencies: + d3-color: 1 - 3 + d3-dispatch: 1 - 3 + d3-ease: 1 - 3 + d3-interpolate: 1 - 3 + d3-timer: 1 - 3 + peerDependencies: + d3-selection: 2 - 3 + checksum: cb1e6e018c3abf0502fe9ff7b631ad058efb197b5e14b973a410d3935aead6e3c07c67d726cfab258e4936ef2667c2c3d1cd2037feb0765f0b4e1d3b8788c0ea + languageName: node + linkType: hard + +"d3-zoom@npm:3": + version: 3.0.0 + resolution: "d3-zoom@npm:3.0.0" + dependencies: + d3-dispatch: 1 - 3 + d3-drag: 2 - 3 + d3-interpolate: 1 - 3 + d3-selection: 2 - 3 + d3-transition: 2 - 3 + checksum: 8056e3527281cfd1ccbcbc458408f86973b0583e9dac00e51204026d1d36803ca437f970b5736f02fafed9f2b78f145f72a5dbc66397e02d4d95d4c594b8ff54 + languageName: node + linkType: hard + +"d3@npm:^7.9.0": + version: 7.9.0 + resolution: "d3@npm:7.9.0" + dependencies: + d3-array: 3 + d3-axis: 3 + d3-brush: 3 + d3-chord: 3 + d3-color: 3 + d3-contour: 4 + d3-delaunay: 6 + d3-dispatch: 3 + d3-drag: 3 + d3-dsv: 3 + d3-ease: 3 + d3-fetch: 3 + d3-force: 3 + d3-format: 3 + d3-geo: 3 + d3-hierarchy: 3 + d3-interpolate: 3 + d3-path: 3 + d3-polygon: 3 + d3-quadtree: 3 + d3-random: 3 + d3-scale: 4 + d3-scale-chromatic: 3 + d3-selection: 3 + d3-shape: 3 + d3-time: 3 + d3-time-format: 4 + d3-timer: 3 + d3-transition: 3 + d3-zoom: 3 + checksum: 1c0e9135f1fb78aa32b187fafc8b56ae6346102bd0e4e5e5a5339611a51e6038adbaa293fae373994228100eddd87320e930b1be922baeadc07c9fd43d26d99b + languageName: node + linkType: hard + +"dagre-d3-es@npm:7.0.13": + version: 7.0.13 + resolution: "dagre-d3-es@npm:7.0.13" + dependencies: + d3: ^7.9.0 + lodash-es: ^4.17.21 + checksum: 4a6e5aeb8d4a643c19241b58b8507a7e8aadae8c470ecb9b0133b3af0d6244356cb2cda643fe2f4ef5f872800eb873d7287977b4c5965962396b1757afb0b5de + languageName: node + linkType: hard + +"dargs@npm:^7.0.0": + version: 7.0.0 + resolution: "dargs@npm:7.0.0" + checksum: b8f1e3cba59c42e1f13a114ad4848c3fc1cf7470f633ee9e9f1043762429bc97d91ae31b826fb135eefde203a3fdb20deb0c0a0222ac29d937b8046085d668d1 + languageName: node + linkType: hard + +"dashdash@npm:^1.12.0": + version: 1.14.1 + resolution: "dashdash@npm:1.14.1" + dependencies: + assert-plus: ^1.0.0 + checksum: 3634c249570f7f34e3d34f866c93f866c5b417f0dd616275decae08147dcdf8fccfaa5947380ccfb0473998ea3a8057c0b4cd90c875740ee685d0624b2983598 + 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 + +"dateformat@npm:^3.0.3": + version: 3.0.3 + resolution: "dateformat@npm:3.0.3" + checksum: ca4911148abb09887bd9bdcd632c399b06f3ecad709a18eb594d289a1031982f441e08e281db77ffebcb2cbcbfa1ac578a7cbfbf8743f41009aa5adc1846ed34 + languageName: node + linkType: hard + +"dayjs@npm:1.11.13": + version: 1.11.13 + resolution: "dayjs@npm:1.11.13" + checksum: f388db88a6aa93956c1f6121644e783391c7b738b73dbc54485578736565c8931bdfba4bb94e9b1535c6e509c97d5deb918bbe1ae6b34358d994de735055cca9 + languageName: node + linkType: hard + +"dayjs@npm:^1.11.18": + version: 1.11.18 + resolution: "dayjs@npm:1.11.18" + checksum: cc90054bad30ab011417a7a474b2ffa70e7a28ca6f834d7e86fe53a408a40a14c174f26155072628670e9eda4c48c4ed0d847d2edf83d47c0bfb78be15bbf2dd + languageName: node + linkType: hard + +"debounce@npm:^1.2.1": + version: 1.2.1 + resolution: "debounce@npm:1.2.1" + checksum: 682a89506d9e54fb109526f4da255c5546102fbb8e3ae75eef3b04effaf5d4853756aee97475cd4650641869794e44f410eeb20ace2b18ea592287ab2038519e + 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 + +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.7, debug@npm:^4.4.1": + version: 4.4.3 + resolution: "debug@npm:4.4.3" + dependencies: + ms: ^2.1.3 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 4805abd570e601acdca85b6aa3757186084a45cff9b2fa6eee1f3b173caa776b45f478b2a71a572d616d2010cea9211d0ac4a02a610e4c18ac4324bde3760834 + languageName: node + linkType: hard + +"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:4.3.7": + version: 4.3.7 + resolution: "debug@npm:4.3.7" + dependencies: + ms: ^2.1.3 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 822d74e209cd910ef0802d261b150314bbcf36c582ccdbb3e70f0894823c17e49a50d3e66d96b633524263975ca16b6a833f3e3b7e030c157169a5fabac63160 + 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 + +"decimal.js@npm:^10.4.2": + version: 10.4.3 + resolution: "decimal.js@npm:10.4.3" + checksum: 796404dcfa9d1dbfdc48870229d57f788b48c21c603c3f6554a1c17c10195fc1024de338b0cf9e1efe0c7c167eeb18f04548979bcc5fdfabebb7cc0ae3287bae + languageName: node + linkType: hard + +"decompress-response@npm:^6.0.0": + version: 6.0.0 + resolution: "decompress-response@npm:6.0.0" + dependencies: + mimic-response: ^3.1.0 + checksum: d377cf47e02d805e283866c3f50d3d21578b779731e8c5072d6ce8c13cc31493db1c2f6784da9d1d5250822120cefa44f1deab112d5981015f2e17444b763812 + languageName: node + linkType: hard + +"dedent@npm:0.7.0": + version: 0.7.0 + resolution: "dedent@npm:0.7.0" + checksum: 87de191050d9a40dd70cad01159a0bcf05ecb59750951242070b6abf9569088684880d00ba92a955b4058804f16eeaf91d604f283929b4f614d181cd7ae633d2 + 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-extend@npm:^0.6.0": + version: 0.6.0 + resolution: "deep-extend@npm:0.6.0" + checksum: 7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7 + 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:^5.0.0": + version: 5.0.1 + resolution: "default-browser-id@npm:5.0.1" + checksum: 52c637637bcd76bfe974462a2f1dd75cb04784c2852935575760f82e1fd338e5e80d3c45a9b01fdbb1e450553a830bb163b004d2eca223c5573989f82232a072 + languageName: node + linkType: hard + +"default-browser@npm:^5.2.1": + version: 5.4.0 + resolution: "default-browser@npm:5.4.0" + dependencies: + bundle-name: ^4.1.0 + default-browser-id: ^5.0.0 + checksum: cac0222ca5c9a3387d25337228689652ab33679a6566995c7194a75af7e554e91ec9ac92a70bfaa8e8089eae9f466ae99267bb38601282aade89b200f50a765c + languageName: node + linkType: hard + +"defaults@npm:^1.0.3": + version: 1.0.4 + resolution: "defaults@npm:1.0.4" + dependencies: + clone: ^1.0.2 + checksum: 3a88b7a587fc076b84e60affad8b85245c01f60f38fc1d259e7ac1d89eb9ce6abb19e27215de46b98568dd5bc48471730b327637e6f20b0f1bc85cf00440c80a + languageName: node + linkType: hard + +"defer-to-connect@npm:^2.0.0": + version: 2.0.1 + resolution: "defer-to-connect@npm:2.0.1" + checksum: 8a9b50d2f25446c0bfefb55a48e90afd58f85b21bcf78e9207cd7b804354f6409032a1705c2491686e202e64fc05f147aa5aa45f9aa82627563f045937f5791b + 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:^2.0.0": + version: 2.0.0 + resolution: "define-lazy-prop@npm:2.0.0" + checksum: 0115fdb065e0490918ba271d7339c42453d209d4cb619dfe635870d906731eff3e1ade8028bb461ea27ce8264ec5e22c6980612d332895977e89c1bbc80fcee2 + 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, define-properties@npm:^1.2.1": + 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: b4ccd00597dd46cb2d4a379398f5b19fca84a16f3374e2249201992f36b30f6835949a9429669ee6b41b6e837205a163eadd745e472069e70dfc10f03e5fcc12 + 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 + +"depd@npm:2.0.0, depd@npm:~2.0.0": + version: 2.0.0 + resolution: "depd@npm:2.0.0" + checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a + languageName: node + linkType: hard + +"depd@npm:~1.1.2": + version: 1.1.2 + resolution: "depd@npm:1.1.2" + checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 + languageName: node + linkType: hard + +"dependency-graph@npm:^0.11.0": + version: 0.11.0 + resolution: "dependency-graph@npm:0.11.0" + checksum: 477204beaa9be69e642bc31ffe7a8c383d0cf48fa27acbc91c5df01431ab913e65c154213d2ef83d034c98d77280743ec85e5da018a97a18dd43d3c0b78b28cd + languageName: node + linkType: hard + +"deprecation@npm:^2.0.0": + version: 2.3.1 + resolution: "deprecation@npm:2.3.1" + checksum: f56a05e182c2c195071385455956b0c4106fe14e36245b00c689ceef8e8ab639235176a96977ba7c74afb173317fac2e0ec6ec7a1c6d1e6eaa401c586c714132 + languageName: node + linkType: hard + +"destroy@npm:1.2.0, destroy@npm:~1.2.0": + version: 1.2.0 + resolution: "destroy@npm:1.2.0" + checksum: 0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 + languageName: node + linkType: hard + +"detect-indent@npm:^5.0.0": + version: 5.0.0 + resolution: "detect-indent@npm:5.0.0" + checksum: 61763211daa498e00eec073aba95d544ae5baed19286a0a655697fa4fffc9f4539c8376e2c7df8fa11d6f8eaa16c1e6a689f403ac41ee78a060278cdadefe2ff + languageName: node + linkType: hard + +"detect-indent@npm:^6.0.0": + version: 6.1.0 + resolution: "detect-indent@npm:6.1.0" + checksum: ab953a73c72dbd4e8fc68e4ed4bfd92c97eb6c43734af3900add963fd3a9316f3bc0578b018b24198d4c31a358571eff5f0656e81a1f3b9ad5c547d58b2d093d + languageName: node + linkType: hard + +"detect-newline@npm:3.1.0, detect-newline@npm:^3.0.0": + version: 3.1.0 + resolution: "detect-newline@npm:3.1.0" + checksum: ae6cd429c41ad01b164c59ea36f264a2c479598e61cba7c99da24175a7ab80ddf066420f2bec9a1c57a6bead411b4655ff15ad7d281c000a89791f48cbe939e7 + languageName: node + linkType: hard + +"detect-node@npm:^2.0.4": + version: 2.1.0 + resolution: "detect-node@npm:2.1.0" + checksum: 832184ec458353e41533ac9c622f16c19f7c02d8b10c303dfd3a756f56be93e903616c0bb2d4226183c9351c15fc0b3dba41a17a2308262afabcfa3776e6ae6e + 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 + +"diff@npm:^5.1.0": + version: 5.1.0 + resolution: "diff@npm:5.1.0" + checksum: c7bf0df7c9bfbe1cf8a678fd1b2137c4fb11be117a67bc18a0e03ae75105e8533dbfb1cda6b46beb3586ef5aed22143ef9d70713977d5fb1f9114e21455fba90 + 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 + +"dns-packet@npm:^5.2.2": + version: 5.6.1 + resolution: "dns-packet@npm:5.6.1" + dependencies: + "@leichtgewicht/ip-codec": ^2.0.1 + checksum: 64c06457f0c6e143f7a0946e0aeb8de1c5f752217cfa143ef527467c00a6d78db1835cfdb6bb68333d9f9a4963cf23f410439b5262a8935cce1236f45e344b81 + languageName: node + linkType: hard + +"doctrine@npm:^2.1.0": + version: 2.1.0 + resolution: "doctrine@npm:2.1.0" + dependencies: + esutils: ^2.0.2 + checksum: a45e277f7feaed309fe658ace1ff286c6e2002ac515af0aaf37145b8baa96e49899638c7cd47dccf84c3d32abfc113246625b3ac8f552d1046072adee13b0dc8 + 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-converter@npm:^0.2.0": + version: 0.2.0 + resolution: "dom-converter@npm:0.2.0" + dependencies: + utila: ~0.4 + checksum: ea52fe303f5392e48dea563abef0e6fb3a478b8dbe3c599e99bb5d53981c6c38fc4944e56bb92a8ead6bb989d10b7914722ae11febbd2fd0910e33b9fc4aaa77 + 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 + +"dom-serializer@npm:^2.0.0": + version: 2.0.0 + resolution: "dom-serializer@npm:2.0.0" + dependencies: + domelementtype: ^2.3.0 + domhandler: ^5.0.2 + entities: ^4.2.0 + checksum: cd1810544fd8cdfbd51fa2c0c1128ec3a13ba92f14e61b7650b5de421b88205fd2e3f0cc6ace82f13334114addb90ed1c2f23074a51770a8e9c1273acbc7f3e6 + languageName: node + linkType: hard + +"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0, domelementtype@npm:^2.3.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, domhandler@npm:^4.3.1": + version: 4.3.1 + resolution: "domhandler@npm:4.3.1" + dependencies: + domelementtype: ^2.2.0 + checksum: 4c665ceed016e1911bf7d1dadc09dc888090b64dee7851cccd2fcf5442747ec39c647bb1cb8c8919f8bbdd0f0c625a6bafeeed4b2d656bbecdbae893f43ffaaa + languageName: node + linkType: hard + +"domhandler@npm:^5.0.2, domhandler@npm:^5.0.3": + version: 5.0.3 + resolution: "domhandler@npm:5.0.3" + dependencies: + domelementtype: ^2.3.0 + checksum: 0f58f4a6af63e6f3a4320aa446d28b5790a009018707bce2859dcb1d21144c7876482b5188395a188dfa974238c019e0a1e610d2fc269a12b2c192ea2b0b131c + languageName: node + linkType: hard + +"dompurify@npm:^3.2.5": + version: 3.2.6 + resolution: "dompurify@npm:3.2.6" + dependencies: + "@types/trusted-types": ^2.0.7 + dependenciesMeta: + "@types/trusted-types": + optional: true + checksum: 4d002997dbae13f6bdf0e6be014384129c83b1ee8cd3fca9d96f95b9142d1e96256924466a2fc25e7ffb6ede54290e5c4a7d1bd10f9b14cfa07928dd799c3b42 + languageName: node + linkType: hard + +"domutils@npm:^2.5.2, domutils@npm:^2.8.0": + 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 + +"domutils@npm:^3.0.1": + version: 3.1.0 + resolution: "domutils@npm:3.1.0" + dependencies: + dom-serializer: ^2.0.0 + domelementtype: ^2.3.0 + domhandler: ^5.0.3 + checksum: e5757456ddd173caa411cfc02c2bb64133c65546d2c4081381a3bafc8a57411a41eed70494551aa58030be9e58574fcc489828bebd673863d39924fb4878f416 + languageName: node + linkType: hard + +"dot-case@npm:^3.0.4": + version: 3.0.4 + resolution: "dot-case@npm:3.0.4" + dependencies: + no-case: ^3.0.4 + tslib: ^2.0.3 + checksum: a65e3519414856df0228b9f645332f974f2bf5433370f544a681122eab59e66038fc3349b4be1cdc47152779dac71a5864f1ccda2f745e767c46e9c6543b1169 + languageName: node + linkType: hard + +"dot-prop@npm:^5.1.0": + version: 5.3.0 + resolution: "dot-prop@npm:5.3.0" + dependencies: + is-obj: ^2.0.0 + checksum: d5775790093c234ef4bfd5fbe40884ff7e6c87573e5339432870616331189f7f5d86575c5b5af2dcf0f61172990f4f734d07844b1f23482fff09e3c4bead05ea + languageName: node + linkType: hard + +"dotenv-expand@npm:~10.0.0": + version: 10.0.0 + resolution: "dotenv-expand@npm:10.0.0" + checksum: 2a38b470efe0abcb1ac8490421a55e1d764dc9440fd220942bce40965074f3fb00b585f4346020cb0f0f219966ee6b4ee5023458b3e2953fe5b3214de1b314ee + languageName: node + linkType: hard + +"dotenv@npm:^16.3.1, dotenv@npm:~16.3.1": + version: 16.3.2 + resolution: "dotenv@npm:16.3.2" + checksum: 917b27eeb654b95846484009326b1c52af7a7c25f7b09e2939ed49de8f98cb9895dcc04f13a39cdb078d247985e21147311ccb5bfbf2fd151afb20fa8f96de15 + languageName: node + linkType: hard + +"dunder-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" + dependencies: + call-bind-apply-helpers: ^1.0.1 + es-errors: ^1.3.0 + gopd: ^1.2.0 + checksum: 149207e36f07bd4941921b0ca929e3a28f1da7bd6b6ff8ff7f4e2f2e460675af4576eeba359c635723dc189b64cdd4787e0255897d5b135ccc5d15cb8685fc90 + languageName: node + linkType: hard + +"duplexer@npm:^0.1.1, duplexer@npm:^0.1.2": + version: 0.1.2 + resolution: "duplexer@npm:0.1.2" + checksum: 62ba61a830c56801db28ff6305c7d289b6dc9f859054e8c982abd8ee0b0a14d2e9a8e7d086ffee12e868d43e2bbe8a964be55ddbd8c8957714c87373c7a4f9b0 + languageName: node + linkType: hard + +"duplexify@npm:^3.5.0, duplexify@npm:^3.6.0": + version: 3.7.1 + resolution: "duplexify@npm:3.7.1" + dependencies: + end-of-stream: ^1.0.0 + inherits: ^2.0.1 + readable-stream: ^2.0.0 + stream-shift: ^1.0.0 + checksum: 3c2ed2223d956a5da713dae12ba8295acb61d9acd966ccbba938090d04f4574ca4dca75cca089b5077c2d7e66101f32e6ea9b36a78ca213eff574e7a8b8accf2 + languageName: node + linkType: hard + +"duplexify@npm:^4.1.2": + version: 4.1.2 + resolution: "duplexify@npm:4.1.2" + dependencies: + end-of-stream: ^1.4.1 + inherits: ^2.0.3 + readable-stream: ^3.1.1 + stream-shift: ^1.0.0 + checksum: 964376c61c0e92f6ed0694b3ba97c84f199413dc40ab8dfdaef80b7a7f4982fcabf796214e28ed614a5bc1ec45488a29b81e7d46fa3f5ddf65bcb118c20145ad + 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 + +"ecc-jsbn@npm:~0.1.1": + version: 0.1.2 + resolution: "ecc-jsbn@npm:0.1.2" + dependencies: + jsbn: ~0.1.0 + safer-buffer: ^2.1.0 + checksum: 22fef4b6203e5f31d425f5b711eb389e4c6c2723402e389af394f8411b76a488fa414d309d866e2b577ce3e8462d344205545c88a8143cc21752a5172818888a + languageName: node + linkType: hard + +"ecdsa-sig-formatter@npm:1.0.11": + version: 1.0.11 + resolution: "ecdsa-sig-formatter@npm:1.0.11" + dependencies: + safe-buffer: ^5.0.1 + checksum: 207f9ab1c2669b8e65540bce29506134613dd5f122cccf1e6a560f4d63f2732d427d938f8481df175505aad94583bcb32c688737bb39a6df0625f903d6d93c03 + languageName: node + linkType: hard + +"ee-first@npm:1.1.1": + version: 1.1.1 + resolution: "ee-first@npm:1.1.1" + checksum: 1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f + languageName: node + linkType: hard + +"ejs@npm:^3.1.7": + version: 3.1.9 + resolution: "ejs@npm:3.1.9" + dependencies: + jake: ^10.8.5 + bin: + ejs: bin/cli.js + checksum: af6f10eb815885ff8a8cfacc42c6b6cf87daf97a4884f87a30e0c3271fedd85d76a3a297d9c33a70e735b97ee632887f85e32854b9cdd3a2d97edf931519a35f + languageName: node + linkType: hard + +"electron-to-chromium@npm:^1.4.535": + version: 1.4.544 + resolution: "electron-to-chromium@npm:1.4.544" + checksum: 78e88e4c56fc4faaa9a405de5e0b51305531e9cdf2c71bcc9296c2c59fb68001472e5b924f8701c873bc855ab5174cf0340642712d7af05c1d8e92356529397e + languageName: node + linkType: hard + +"elkjs@npm:^0.9.3": + version: 0.9.3 + resolution: "elkjs@npm:0.9.3" + checksum: 1293e42e0ea034b39d3719f3816b7b3cbaceb52a3114f2c1bd5ddd969bb1e36ae0afef58e77864fff7a1018dc5e96c177e9b0a40c16e4aaac26eb87f5785be4b + 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 + +"encodeurl@npm:~1.0.2": + version: 1.0.2 + resolution: "encodeurl@npm:1.0.2" + checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c + languageName: node + linkType: hard + +"encodeurl@npm:~2.0.0": + version: 2.0.0 + resolution: "encodeurl@npm:2.0.0" + checksum: abf5cd51b78082cf8af7be6785813c33b6df2068ce5191a40ca8b1afe6a86f9230af9a9ce694a5ce4665955e5c1120871826df9c128a642e09c58d592e2807fe + 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 + +"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": + version: 1.4.4 + resolution: "end-of-stream@npm:1.4.4" + dependencies: + once: ^1.4.0 + checksum: 530a5a5a1e517e962854a31693dbb5c0b2fc40b46dad2a56a2deec656ca040631124f4795823acc68238147805f8b021abbe221f4afed5ef3c8e8efc2024908b + languageName: node + linkType: hard + +"enquirer@npm:~2.3.6": + version: 2.3.6 + resolution: "enquirer@npm:2.3.6" + dependencies: + ansi-colors: ^4.1.1 + checksum: 1c0911e14a6f8d26721c91e01db06092a5f7675159f0261d69c403396a385afd13dd76825e7678f66daffa930cfaa8d45f506fb35f818a2788463d022af1b884 + 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.2.0, 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.14.0": + version: 7.14.0 + resolution: "envinfo@npm:7.14.0" + bin: + envinfo: dist/cli.js + checksum: 137c1dd9a4d5781c4a6cdc6b695454ba3c4ba1829f73927198aa4122f11b35b59d7b2cb7e1ceea1364925a30278897548511d22f860c14253a33797d0bebd551 + languageName: node + linkType: hard + +"envinfo@npm:7.8.1": + version: 7.8.1 + resolution: "envinfo@npm:7.8.1" + bin: + envinfo: dist/cli.js + checksum: de736c98d6311c78523628ff127af138451b162e57af5293c1b984ca821d0aeb9c849537d2fde0434011bed33f6bca5310ca2aab8a51a3f28fc719e89045d648 + 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.2 + resolution: "es-abstract@npm:1.22.2" + dependencies: + array-buffer-byte-length: ^1.0.0 + 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.6 + 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.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.1 + safe-array-concat: ^1.0.1 + safe-regex-test: ^1.0.0 + 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.11 + checksum: cc70e592d360d7d729859013dee7a610c6b27ed8630df0547c16b0d16d9fe6505a70ee14d1af08d970fdd132b3f88c9ca7815ce72c9011608abf8ab0e55fc515 + languageName: node + linkType: hard + +"es-define-property@npm:^1.0.1": + version: 1.0.1 + resolution: "es-define-property@npm:1.0.1" + checksum: 0512f4e5d564021c9e3a644437b0155af2679d10d80f21adaf868e64d30efdfbd321631956f20f42d655fedb2e3a027da479fad3fa6048f768eb453a80a5f80a + languageName: node + linkType: hard + +"es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: ec1414527a0ccacd7f15f4a3bc66e215f04f595ba23ca75cdae0927af099b5ec865f9f4d33e9d7e86f512f252876ac77d4281a7871531a50678132429b1271b5 + languageName: node + linkType: hard + +"es-iterator-helpers@npm:^1.0.12": + version: 1.0.15 + resolution: "es-iterator-helpers@npm:1.0.15" + dependencies: + asynciterator.prototype: ^1.0.0 + call-bind: ^1.0.2 + define-properties: ^1.2.1 + es-abstract: ^1.22.1 + es-set-tostringtag: ^2.0.1 + function-bind: ^1.1.1 + get-intrinsic: ^1.2.1 + globalthis: ^1.0.3 + has-property-descriptors: ^1.0.0 + has-proto: ^1.0.1 + has-symbols: ^1.0.3 + internal-slot: ^1.0.5 + iterator.prototype: ^1.1.2 + safe-array-concat: ^1.0.1 + checksum: 50081ae5c549efe62e5c1d244df0194b40b075f7897fc2116b7e1aa437eb3c41f946d2afda18c33f9b31266ec544765932542765af839f76fa6d7b7855d1e0e1 + languageName: node + linkType: hard + +"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": + version: 1.1.1 + resolution: "es-object-atoms@npm:1.1.1" + dependencies: + es-errors: ^1.3.0 + checksum: 214d3767287b12f36d3d7267ef342bbbe1e89f899cfd67040309fc65032372a8e60201410a99a1645f2f90c1912c8c49c8668066f6bdd954bcd614dda2e3da97 + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.0.1, es-set-tostringtag@npm:^2.1.0": + version: 2.1.0 + resolution: "es-set-tostringtag@npm:2.1.0" + dependencies: + es-errors: ^1.3.0 + get-intrinsic: ^1.2.6 + has-tostringtag: ^1.0.2 + hasown: ^2.0.2 + checksum: 789f35de4be3dc8d11fdcb91bc26af4ae3e6d602caa93299a8c45cf05d36cc5081454ae2a6d3afa09cceca214b76c046e4f8151e092e6fc7feeb5efb9e794fc6 + languageName: node + linkType: hard + +"es-shim-unscopables@npm:^1.0.0": + version: 1.0.0 + resolution: "es-shim-unscopables@npm:1.0.0" + dependencies: + has: ^1.0.3 + checksum: 83e95cadbb6ee44d3644dfad60dcad7929edbc42c85e66c3e99aefd68a3a5c5665f2686885cddb47dfeabfd77bd5ea5a7060f2092a955a729bbd8834f0d86fa1 + 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-html@npm:~1.0.3": + version: 1.0.3 + resolution: "escape-html@npm:1.0.3" + checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 + 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 + +"escape-string-regexp@npm:^5.0.0": + version: 5.0.0 + resolution: "escape-string-regexp@npm:5.0.0" + checksum: 20daabe197f3cb198ec28546deebcf24b3dbb1a5a269184381b3116d12f0532e06007f4bc8da25669d6a7f8efb68db0758df4cd981f57bc5b57f521a3e12c59e + 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.7.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-jest@npm:^27.2.1": + version: 27.4.2 + resolution: "eslint-plugin-jest@npm:27.4.2" + dependencies: + "@typescript-eslint/utils": ^5.10.0 + peerDependencies: + "@typescript-eslint/eslint-plugin": ^5.0.0 || ^6.0.0 + eslint: ^7.0.0 || ^8.0.0 + jest: "*" + peerDependenciesMeta: + "@typescript-eslint/eslint-plugin": + optional: true + jest: + optional: true + checksum: 99a8301ae00c37da97866b8b13c89a077716d2c653b26bc417d242e7300a43237c0017fd488c43966fa38585f19050facdbbc71d03ca36a1ce6f2ba930a9143e + languageName: node + linkType: hard + +"eslint-plugin-prettier@npm:^4.2.1": + version: 4.2.1 + resolution: "eslint-plugin-prettier@npm:4.2.1" + dependencies: + prettier-linter-helpers: ^1.0.0 + peerDependencies: + eslint: ">=7.28.0" + prettier: ">=2.0.0" + peerDependenciesMeta: + eslint-config-prettier: + optional: true + checksum: b9e839d2334ad8ec7a5589c5cb0f219bded260839a857d7a486997f9870e95106aa59b8756ff3f37202085ebab658de382b0267cae44c3a7f0eb0bcc03a4f6d6 + languageName: node + linkType: hard + +"eslint-plugin-react@npm:^7.32.2": + version: 7.33.2 + resolution: "eslint-plugin-react@npm:7.33.2" + dependencies: + array-includes: ^3.1.6 + array.prototype.flatmap: ^1.3.1 + array.prototype.tosorted: ^1.1.1 + doctrine: ^2.1.0 + es-iterator-helpers: ^1.0.12 + estraverse: ^5.3.0 + jsx-ast-utils: ^2.4.1 || ^3.0.0 + minimatch: ^3.1.2 + object.entries: ^1.1.6 + object.fromentries: ^2.0.6 + object.hasown: ^1.1.2 + object.values: ^1.1.6 + prop-types: ^15.8.1 + resolve: ^2.0.0-next.4 + semver: ^6.3.1 + string.prototype.matchall: ^4.0.8 + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + checksum: b4c3d76390b0ae6b6f9fed78170604cc2c04b48e6778a637db339e8e3911ec9ef22510b0ae77c429698151d0f1b245f282177f384105b6830e7b29b9c9b26610 + 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.51.0 + resolution: "eslint@npm:8.51.0" + dependencies: + "@eslint-community/eslint-utils": ^4.2.0 + "@eslint-community/regexpp": ^4.6.1 + "@eslint/eslintrc": ^2.1.2 + "@eslint/js": 8.51.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: 214fa5d1fcb67af1b8992ce9584ccd85e1aa7a482f8b8ea5b96edc28fa838a18a3b69456db45fc1ed3ef95f1e9efa9714f737292dc681e572d471d02fda9649c + languageName: node + linkType: hard + +"esm@npm:^3.2.25": + version: 3.2.25 + resolution: "esm@npm:3.2.25" + checksum: 978aabe2de83541c105605a6d60a26ed8e627ef6bb0a7605fe15a95bbdea6b8348bd045255cb22219c054dd09a81a94823df00843d9e97f42419c92015ce3a64 + 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, estraverse@npm:^5.3.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 + +"etag@npm:~1.8.1": + version: 1.8.1 + resolution: "etag@npm:1.8.1" + checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff + languageName: node + linkType: hard + +"event-target-shim@npm:^5.0.0": + version: 5.0.1 + resolution: "event-target-shim@npm:5.0.1" + checksum: 1ffe3bb22a6d51bdeb6bf6f7cf97d2ff4a74b017ad12284cc9e6a279e727dc30a5de6bb613e5596ff4dc3e517841339ad09a7eec44266eccb1aa201a30448166 + languageName: node + linkType: hard + +"eventemitter3@npm:^4.0.0, eventemitter3@npm:^4.0.4": + version: 4.0.7 + resolution: "eventemitter3@npm:4.0.7" + checksum: 1875311c42fcfe9c707b2712c32664a245629b42bb0a5a84439762dd0fd637fc54d078155ea83c2af9e0323c9ac13687e03cfba79b03af9f40c89b4960099374 + languageName: node + linkType: hard + +"events@npm:^3.3.0": + version: 3.3.0 + resolution: "events@npm:3.3.0" + checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780 + languageName: node + linkType: hard + +"execa@npm:5.0.0, execa@npm:^5.0.0": + version: 5.0.0 + resolution: "execa@npm:5.0.0" + 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: a044367ebdcc68ca019810cb134510fc77bbc55c799122258ee0e00e289c132941ab48c2a331a036699c42bc8d479d451ae67c105fce5ce5cc813e7dd92d642b + languageName: node + linkType: hard + +"exenv-es6@npm:^1.1.1": + version: 1.1.1 + resolution: "exenv-es6@npm:1.1.1" + checksum: 7f2aa12025e6f06c48dc286f380cf3183bb19c6017b36d91695034a3e5124a7235c4f8ff24ca2eb88ae801322f0f99605cedfcfd996a5fcbba7669320e2a448e + languageName: node + linkType: hard + +"exit-hook@npm:^4.0.0": + version: 4.0.0 + resolution: "exit-hook@npm:4.0.0" + checksum: 5aa8b4e45fa943e7e174c25329750a0ffefb593ccc2eafd5d67e1d734b114c93cb36b5714548fb1c2a1dd90f3e9cdc606b5e788f428f780708774da444021fdc + 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 + +"express-rate-limit@npm:5.5.1": + version: 5.5.1 + resolution: "express-rate-limit@npm:5.5.1" + checksum: 264820bd5fe350794f90497c5bdc7b323eec4394873cd4b9f9d3654b2c47b285e87270a5a11721fb7fb895d56218e9657ea7bb9a544dd43770c6e7beaad217e8 + languageName: node + linkType: hard + +"express@npm:4.21.0": + version: 4.21.0 + resolution: "express@npm:4.21.0" + dependencies: + accepts: ~1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.3 + content-disposition: 0.5.4 + content-type: ~1.0.4 + cookie: 0.6.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: ~2.0.0 + escape-html: ~1.0.3 + etag: ~1.8.1 + finalhandler: 1.3.1 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: ~1.1.2 + on-finished: 2.4.1 + parseurl: ~1.3.3 + path-to-regexp: 0.1.10 + proxy-addr: ~2.0.7 + qs: 6.13.0 + range-parser: ~1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0 + serve-static: 1.16.2 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: ~1.6.18 + utils-merge: 1.0.1 + vary: ~1.1.2 + checksum: 1c5212993f665809c249bf00ab550b989d1365a5b9171cdfaa26d93ee2ef10cd8add520861ec8d5da74b3194d8374e1d9d53e85ef69b89fd9c4196b87045a5d4 + languageName: node + linkType: hard + +"express@npm:4.21.1": + version: 4.21.1 + resolution: "express@npm:4.21.1" + dependencies: + accepts: ~1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.3 + content-disposition: 0.5.4 + content-type: ~1.0.4 + cookie: 0.7.1 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: ~2.0.0 + escape-html: ~1.0.3 + etag: ~1.8.1 + finalhandler: 1.3.1 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: ~1.1.2 + on-finished: 2.4.1 + parseurl: ~1.3.3 + path-to-regexp: 0.1.10 + proxy-addr: ~2.0.7 + qs: 6.13.0 + range-parser: ~1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0 + serve-static: 1.16.2 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: ~1.6.18 + utils-merge: 1.0.1 + vary: ~1.1.2 + checksum: 5ac2b26d8aeddda5564fc0907227d29c100f90c0ead2ead9d474dc5108e8fb306c2de2083c4e3ba326e0906466f2b73417dbac16961f4075ff9f03785fd940fe + languageName: node + linkType: hard + +"express@npm:^4.21.2": + version: 4.22.1 + resolution: "express@npm:4.22.1" + dependencies: + accepts: ~1.3.8 + array-flatten: 1.1.1 + body-parser: ~1.20.3 + content-disposition: ~0.5.4 + content-type: ~1.0.4 + cookie: ~0.7.1 + cookie-signature: ~1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: ~2.0.0 + escape-html: ~1.0.3 + etag: ~1.8.1 + finalhandler: ~1.3.1 + fresh: ~0.5.2 + http-errors: ~2.0.0 + merge-descriptors: 1.0.3 + methods: ~1.1.2 + on-finished: ~2.4.1 + parseurl: ~1.3.3 + path-to-regexp: ~0.1.12 + proxy-addr: ~2.0.7 + qs: ~6.14.0 + range-parser: ~1.2.1 + safe-buffer: 5.2.1 + send: ~0.19.0 + serve-static: ~1.16.2 + setprototypeof: 1.2.0 + statuses: ~2.0.1 + type-is: ~1.6.18 + utils-merge: 1.0.1 + vary: ~1.1.2 + checksum: 38fd76585f6a2394e02d499f852fc70c94c9b1527bd5812eb5ee45c23b7f1297baaf13c55162253b14c1e36939b8401429d6594095e63d01ca77447dac72894e + languageName: node + linkType: hard + +"exsolve@npm:^1.0.7": + version: 1.0.7 + resolution: "exsolve@npm:1.0.7" + checksum: 3adce048e4b1b08580aaabf38c7f92f78e1a662a1776fc02d7e9500d5ce4a30cd3f8e62206768821aa2c3bc2411a699146ebc5710ccc3d46e91199dbfff89f54 + languageName: node + linkType: hard + +"extend@npm:~3.0.2": + version: 3.0.2 + resolution: "extend@npm:3.0.2" + checksum: a50a8309ca65ea5d426382ff09f33586527882cf532931cb08ca786ea3146c0553310bda688710ff61d7668eba9f96b923fe1420cdf56a2c3eaf30fcab87b515 + languageName: node + linkType: hard + +"external-editor@npm:^3.0.3, external-editor@npm:^3.1.0": + version: 3.1.0 + resolution: "external-editor@npm:3.1.0" + dependencies: + chardet: ^0.7.0 + iconv-lite: ^0.4.24 + tmp: ^0.0.33 + checksum: 1c2a616a73f1b3435ce04030261bed0e22d4737e14b090bb48e58865da92529c9f2b05b893de650738d55e692d071819b45e1669259b2b354bc3154d27a698c7 + languageName: node + linkType: hard + +"extsprintf@npm:1.3.0, extsprintf@npm:^1.2.0": + version: 1.3.0 + resolution: "extsprintf@npm:1.3.0" + checksum: cee7a4a1e34cffeeec18559109de92c27517e5641991ec6bab849aa64e3081022903dd53084f2080d0d2530803aa5ee84f1e9de642c365452f9e67be8f958ce2 + languageName: node + linkType: hard + +"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 + 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-fifo@npm:^1.2.0, fast-fifo@npm:^1.3.2": + version: 1.3.2 + resolution: "fast-fifo@npm:1.3.2" + checksum: 6bfcba3e4df5af7be3332703b69a7898a8ed7020837ec4395bb341bd96cc3a6d86c3f6071dd98da289618cf2234c70d84b2a6f09a33dd6f988b1ff60d8e54275 + languageName: node + linkType: hard + +"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.2, fast-glob@npm:^3.2.9": + 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-patch@npm:^3.1.1": + version: 3.1.1 + resolution: "fast-json-patch@npm:3.1.1" + checksum: c4525b61b2471df60d4b025b4118b036d99778a93431aa44d1084218182841d82ce93056f0f3bbd731a24e6a8e69820128adf1873eb2199a26c62ef58d137833 + 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": + 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 + +"fast-redact@npm:^3.0.0, fast-redact@npm:^3.1.1": + version: 3.5.0 + resolution: "fast-redact@npm:3.5.0" + checksum: ef03f0d1849da074a520a531ad299bf346417b790a643931ab4e01cb72275c8d55b60dc8512fb1f1818647b696790edefaa96704228db9f012da935faa1940af + languageName: node + linkType: hard + +"fast-safe-stringify@npm:2.1.1": + version: 2.1.1 + resolution: "fast-safe-stringify@npm:2.1.1" + checksum: a851cbddc451745662f8f00ddb622d6766f9bd97642dabfd9a405fb0d646d69fc0b9a1243cbf67f5f18a39f40f6fa821737651ff1bceeba06c9992ca2dc5bd3d + languageName: node + linkType: hard + +"fast-uri@npm:^3.0.1": + version: 3.0.6 + resolution: "fast-uri@npm:3.0.6" + checksum: 7161ba2a7944778d679ba8e5f00d6a2bb479a2142df0982f541d67be6c979b17808f7edbb0ce78161c85035974bde3fa52b5137df31da46c0828cb629ba67c4e + 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 + +"faye-websocket@npm:^0.11.3": + version: 0.11.4 + resolution: "faye-websocket@npm:0.11.4" + dependencies: + websocket-driver: ">=0.5.1" + checksum: d49a62caf027f871149fc2b3f3c7104dc6d62744277eb6f9f36e2d5714e847d846b9f7f0d0b7169b25a012e24a594cde11a93034b30732e4c683f20b8a5019fa + 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 + +"figures@npm:3.2.0, figures@npm:^3.0.0": + version: 3.2.0 + resolution: "figures@npm:3.2.0" + dependencies: + escape-string-regexp: ^1.0.5 + checksum: 85a6ad29e9aca80b49b817e7c89ecc4716ff14e3779d9835af554db91bac41c0f289c418923519392a1e582b4d10482ad282021330cd045bb7b80c84152f2a2b + languageName: node + linkType: hard + +"figures@npm:^5.0.0": + version: 5.0.0 + resolution: "figures@npm:5.0.0" + dependencies: + escape-string-regexp: ^5.0.0 + is-unicode-supported: ^1.2.0 + checksum: e6e8b6d1df2f554d4effae4a5ceff5d796f9449f6d4e912d74dab7d5f25916ecda6c305b9084833157d56485a0c78b37164430ddc5675bcee1330e346710669e + 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 + +"filelist@npm:^1.0.4": + version: 1.0.4 + resolution: "filelist@npm:1.0.4" + dependencies: + minimatch: ^5.0.1 + checksum: a303573b0821e17f2d5e9783688ab6fbfce5d52aaac842790ae85e704a6f5e4e3538660a63183d6453834dedf1e0f19a9dadcebfa3e926c72397694ea11f5160 + 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 + +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" + dependencies: + to-regex-range: ^5.0.1 + checksum: b4abfbca3839a3d55e4ae5ec62e131e2e356bf4859ce8480c64c4876100f4df292a63e5bb1618e1d7460282ca2b305653064f01654474aa35c68000980f17798 + languageName: node + linkType: hard + +"finalhandler@npm:1.3.1": + version: 1.3.1 + resolution: "finalhandler@npm:1.3.1" + dependencies: + debug: 2.6.9 + encodeurl: ~2.0.0 + escape-html: ~1.0.3 + on-finished: 2.4.1 + parseurl: ~1.3.3 + statuses: 2.0.1 + unpipe: ~1.0.0 + checksum: a8c58cd97c9cd47679a870f6833a7b417043f5a288cd6af6d0f49b476c874a506100303a128b6d3b654c3d74fa4ff2ffed68a48a27e8630cda5c918f2977dcf4 + languageName: node + linkType: hard + +"finalhandler@npm:~1.3.1": + version: 1.3.2 + resolution: "finalhandler@npm:1.3.2" + dependencies: + debug: 2.6.9 + encodeurl: ~2.0.0 + escape-html: ~1.0.3 + on-finished: ~2.4.1 + parseurl: ~1.3.3 + statuses: ~2.0.2 + unpipe: ~1.0.0 + checksum: 4bce6b3e1f6998497a8ef8418bc307ef09daee05acc5a69a36da665565cbeb86218de1932e42dbf2eebf18f580053d2061eddbdeff9e312de45d46fbf4dd36ec + languageName: node + linkType: hard + +"find-cache-dir@npm:^3.3.1": + version: 3.3.2 + resolution: "find-cache-dir@npm:3.3.2" + dependencies: + commondir: ^1.0.1 + make-dir: ^3.0.2 + pkg-dir: ^4.1.0 + checksum: 1e61c2e64f5c0b1c535bd85939ae73b0e5773142713273818cc0b393ee3555fb0fd44e1a5b161b8b6c3e03e98c2fcc9c227d784850a13a90a8ab576869576817 + 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:^2.0.0": + version: 2.1.0 + resolution: "find-up@npm:2.1.0" + dependencies: + locate-path: ^2.0.0 + checksum: 43284fe4da09f89011f08e3c32cd38401e786b19226ea440b75386c1b12a4cb738c94969808d53a84f564ede22f732c8409e3cfc3f7fb5b5c32378ad0bbf28bd + 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.1 + resolution: "flat-cache@npm:3.1.1" + dependencies: + flatted: ^3.2.9 + keyv: ^4.5.3 + rimraf: ^3.0.2 + checksum: 4958cfe0f46acf84953d4e16676ef5f0d38eab3a92d532a1e8d5f88f11eea8b36d5d598070ff2aeae15f1fde18f8d7d089eefaf9db10b5a587cc1c9072325c7a + languageName: node + linkType: hard + +"flat@npm:^5.0.2": + version: 5.0.2 + resolution: "flat@npm:5.0.2" + bin: + flat: cli.js + checksum: 12a1536ac746db74881316a181499a78ef953632ddd28050b7a3a43c62ef5462e3357c8c29d76072bb635f147f7a9a1f0c02efef6b4be28f8db62ceb3d5c7f5d + languageName: node + linkType: hard + +"flatted@npm:^3.2.9": + version: 3.2.9 + resolution: "flatted@npm:3.2.9" + checksum: f14167fbe26a9d20f6fca8d998e8f1f41df72c8e81f9f2c9d61ed2bea058248f5e1cbd05e7f88c0e5087a6a0b822a1e5e2b446e879f3cfbe0b07ba2d7f80b026 + languageName: node + linkType: hard + +"follow-redirects@npm:^1.0.0": + version: 1.15.11 + resolution: "follow-redirects@npm:1.15.11" + peerDependenciesMeta: + debug: + optional: true + checksum: 20bf55e9504f59e6cc3743ba27edb2ebf41edea1baab34799408f2c050f73f0c612728db21c691276296d2795ea8a812dc532a98e8793619fcab91abe06d017f + languageName: node + linkType: hard + +"follow-redirects@npm:^1.15.6": + version: 1.15.9 + resolution: "follow-redirects@npm:1.15.9" + peerDependenciesMeta: + debug: + optional: true + checksum: 859e2bacc7a54506f2bf9aacb10d165df78c8c1b0ceb8023f966621b233717dab56e8d08baadc3ad3b9db58af290413d585c999694b7c146aaf2616340c3d2a6 + 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 + +"forever-agent@npm:~0.6.1": + version: 0.6.1 + resolution: "forever-agent@npm:0.6.1" + checksum: 766ae6e220f5fe23676bb4c6a99387cec5b7b62ceb99e10923376e27bfea72f3c3aeec2ba5f45f3f7ba65d6616965aa7c20b15002b6860833bb6e394dea546a8 + languageName: node + linkType: hard + +"form-data@npm:^4.0.0, form-data@npm:~4.0.0": + version: 4.0.2 + resolution: "form-data@npm:4.0.2" + dependencies: + asynckit: ^0.4.0 + combined-stream: ^1.0.8 + es-set-tostringtag: ^2.1.0 + mime-types: ^2.1.12 + checksum: e887298b22c13c7c9c5a8ba3716f295a479a13ca78bfd855ef11cbce1bcf22bc0ae2062e94808e21d46e5c667664a1a1a8a7f57d7040193c1fefbfb11af58aab + languageName: node + linkType: hard + +"forwarded@npm:0.2.0": + version: 0.2.0 + resolution: "forwarded@npm:0.2.0" + checksum: fd27e2394d8887ebd16a66ffc889dc983fbbd797d5d3f01087c020283c0f019a7d05ee85669383d8e0d216b116d720fc0cef2f6e9b7eb9f4c90c6e0bc7fd28e6 + 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 + +"fresh@npm:0.5.2, fresh@npm:~0.5.2": + version: 0.5.2 + resolution: "fresh@npm:0.5.2" + checksum: 13ea8b08f91e669a64e3ba3a20eb79d7ca5379a81f1ff7f4310d54e2320645503cc0c78daedc93dfb6191287295f6479544a649c64d8e41a1c0fb0c221552346 + languageName: node + linkType: hard + +"fs-constants@npm:^1.0.0": + version: 1.0.0 + resolution: "fs-constants@npm:1.0.0" + checksum: 18f5b718371816155849475ac36c7d0b24d39a11d91348cfcb308b4494824413e03572c403c86d3a260e049465518c4f0d5bd00f0371cdfcad6d4f30a85b350d + 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-extra@npm:^11.1.0, fs-extra@npm:^11.1.1": + version: 11.2.0 + resolution: "fs-extra@npm:11.2.0" + dependencies: + graceful-fs: ^4.2.0 + jsonfile: ^6.0.1 + universalify: ^2.0.0 + checksum: b12e42fa40ba47104202f57b8480dd098aa931c2724565e5e70779ab87605665594e76ee5fb00545f772ab9ace167fe06d2ab009c416dc8c842c5ae6df7aa7e8 + languageName: node + linkType: hard + +"fs-extra@npm:^8.1.0": + version: 8.1.0 + resolution: "fs-extra@npm:8.1.0" + dependencies: + graceful-fs: ^4.2.0 + jsonfile: ^4.0.0 + universalify: ^0.1.0 + checksum: bf44f0e6cea59d5ce071bba4c43ca76d216f89e402dc6285c128abc0902e9b8525135aa808adad72c9d5d218e9f4bcc63962815529ff2f684ad532172a284880 + languageName: node + linkType: hard + +"fs-extra@npm:^9.1.0": + version: 9.1.0 + resolution: "fs-extra@npm:9.1.0" + dependencies: + at-least-node: ^1.0.0 + graceful-fs: ^4.2.0 + jsonfile: ^6.0.1 + universalify: ^2.0.0 + checksum: ba71ba32e0faa74ab931b7a0031d1523c66a73e225de7426e275e238e312d07313d2da2d33e34a52aa406c8763ade5712eb3ec9ba4d9edce652bcacdc29e6b20 + 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, 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, 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, function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 2b0ff4ce708d99715ad14a6d1f894e2a83242e4a52ccfcefaee5e40050562e5f6dafc1adbb4ce2d4ab47279a45dc736ab91ea5042d843c3c092820dfe032efb1 + 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: + 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, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.3.0": + version: 1.3.0 + resolution: "get-intrinsic@npm:1.3.0" + dependencies: + call-bind-apply-helpers: ^1.0.2 + es-define-property: ^1.0.1 + es-errors: ^1.3.0 + es-object-atoms: ^1.1.1 + function-bind: ^1.1.2 + get-proto: ^1.0.1 + gopd: ^1.2.0 + has-symbols: ^1.1.0 + hasown: ^2.0.2 + math-intrinsics: ^1.1.0 + checksum: 301008e4482bb9a9cb49e132b88fee093bff373b4e6def8ba219b1e96b60158a6084f273ef5cafe832e42cd93462f4accb46a618d35fe59a2b507f2388c5b79d + 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-pkg-repo@npm:^4.2.1": + version: 4.2.1 + resolution: "get-pkg-repo@npm:4.2.1" + dependencies: + "@hutson/parse-repository-url": ^3.0.0 + hosted-git-info: ^4.0.0 + through2: ^2.0.0 + yargs: ^16.2.0 + bin: + get-pkg-repo: src/cli.js + checksum: 5abf169137665e45b09a857b33ad2fdcf2f4a09f0ecbd0ebdd789a7ce78c39186a21f58621127eb724d2d4a3a7ee8e6bd4ac7715efda01ad5200665afc218e0d + languageName: node + linkType: hard + +"get-port@npm:5.1.1": + version: 5.1.1 + resolution: "get-port@npm:5.1.1" + checksum: 0162663ffe5c09e748cd79d97b74cd70e5a5c84b760a475ce5767b357fb2a57cb821cee412d646aa8a156ed39b78aab88974eddaa9e5ee926173c036c0713787 + languageName: node + linkType: hard + +"get-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "get-proto@npm:1.0.1" + dependencies: + dunder-proto: ^1.0.1 + es-object-atoms: ^1.0.0 + checksum: 4fc96afdb58ced9a67558698b91433e6b037aaa6f1493af77498d7c85b141382cf223c0e5946f334fb328ee85dfe6edd06d218eaf09556f4bc4ec6005d7f5f7b + languageName: node + linkType: hard + +"get-stream@npm:6.0.0, get-stream@npm:^6.0.0": + version: 6.0.0 + resolution: "get-stream@npm:6.0.0" + checksum: 587e6a93127f9991b494a566f4971cf7a2645dfa78034818143480a80587027bdd8826cdcf80d0eff4a4a19de0d231d157280f24789fc9cc31492e1dcc1290cf + languageName: node + linkType: hard + +"get-stream@npm:^5.1.0": + version: 5.2.0 + resolution: "get-stream@npm:5.2.0" + dependencies: + pump: ^3.0.0 + checksum: 8bc1a23174a06b2b4ce600df38d6c98d2ef6d84e020c1ddad632ad75bac4e092eeb40e4c09e0761c35fc2dbc5e7fff5dab5e763a383582c4a167dd69a905bd12 + 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 + +"getpass@npm:^0.1.1": + version: 0.1.7 + resolution: "getpass@npm:0.1.7" + dependencies: + assert-plus: ^1.0.0 + checksum: ab18d55661db264e3eac6012c2d3daeafaab7a501c035ae0ccb193c3c23e9849c6e29b6ac762b9c2adae460266f925d55a3a2a3a3c8b94be2f222df94d70c046 + languageName: node + linkType: hard + +"git-hooks-list@npm:1.0.3": + version: 1.0.3 + resolution: "git-hooks-list@npm:1.0.3" + checksum: a1dd03d39c1d727ba08a35dbdbdcc6e96de8c4170c942dc95bf787ca6e34998d39fb5295a00242b58a3d265de0b69a0686d0cf583baa6b7830f268542c4576b9 + languageName: node + linkType: hard + +"git-raw-commits@npm:^3.0.0": + version: 3.0.0 + resolution: "git-raw-commits@npm:3.0.0" + dependencies: + dargs: ^7.0.0 + meow: ^8.1.2 + split2: ^3.2.2 + bin: + git-raw-commits: cli.js + checksum: 198892f307829d22fc8ec1c9b4a63876a1fde847763857bb74bd1b04c6f6bc0d7464340c25d0f34fd0fb395759363aa1f8ce324357027320d80523bf234676ab + languageName: node + linkType: hard + +"git-remote-origin-url@npm:^2.0.0": + version: 2.0.0 + resolution: "git-remote-origin-url@npm:2.0.0" + dependencies: + gitconfiglocal: ^1.0.0 + pify: ^2.3.0 + checksum: 85263a09c044b5f4fe2acc45cbb3c5331ab2bd4484bb53dfe7f3dd593a4bf90a9786a2e00b9884524331f50b3da18e8c924f01c2944087fc7f342282c4437b73 + languageName: node + linkType: hard + +"git-semver-tags@npm:^5.0.0": + version: 5.0.1 + resolution: "git-semver-tags@npm:5.0.1" + dependencies: + meow: ^8.1.2 + semver: ^7.0.0 + bin: + git-semver-tags: cli.js + checksum: c181e1d9e7649fd90e6c347f400f791db08b236265d79874dfa60f09ca893fa7a4fceebf3fd5f01443705e7eac5c73c5235eb96c6bc4a39eb37746a1d7c49ec4 + languageName: node + linkType: hard + +"git-up@npm:^7.0.0": + version: 7.0.0 + resolution: "git-up@npm:7.0.0" + dependencies: + is-ssh: ^1.4.0 + parse-url: ^8.1.0 + checksum: 2faadbab51e94d2ffb220e426e950087cc02c15d664e673bd5d1f734cfa8196fed8b19493f7bf28fe216d087d10e22a7fd9b63687e0ba7d24f0ddcfb0a266d6e + languageName: node + linkType: hard + +"git-url-parse@npm:13.1.0": + version: 13.1.0 + resolution: "git-url-parse@npm:13.1.0" + dependencies: + git-up: ^7.0.0 + checksum: 212a9b0343e9199998b6a532efe2014476a7a1283af393663ca49ac28d4768929aad16d3322e2685236065ee394dbc93e7aa63a48956531e984c56d8b5edb54d + languageName: node + linkType: hard + +"gitconfiglocal@npm:^1.0.0": + version: 1.0.0 + resolution: "gitconfiglocal@npm:1.0.0" + dependencies: + ini: ^1.3.2 + checksum: e6d2764c15bbab6d1d1000d1181bb907f6b3796bb04f63614dba571b18369e0ecb1beaf27ce8da5b24307ef607e3a5f262a67cb9575510b9446aac697d421beb + languageName: node + linkType: hard + +"github-slugger@npm:^2.0.0": + version: 2.0.0 + resolution: "github-slugger@npm:2.0.0" + checksum: 250375cde2058f21454872c2c79f72c4637340c30c51ff158ca4ec71cbc478f33d54477d787a662f9207aeb095a2060f155bc01f15329ba8a5fb6698e0fc81f8 + languageName: node + linkType: hard + +"glob-parent@npm:5.1.2, glob-parent@npm:^5.1.2, 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-regex.js@npm:^1.0.1": + version: 1.2.0 + resolution: "glob-to-regex.js@npm:1.2.0" + peerDependencies: + tslib: 2 + checksum: ed7797dae9469a62f581213fb4e4272a58650896935b3ccd842a3bfafc7845caffc1510e3a02c3fae647d3740b87a51b5bcc7cc621678b9abc663babcfb3088c + languageName: node + linkType: hard + +"glob@npm:7.1.4": + version: 7.1.4 + resolution: "glob@npm:7.1.4" + 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: f52480fc82b1e66e52990f0f2e7306447d12294c83fbbee0395e761ad1178172012a7cc0673dbf4810baac400fc09bf34484c08b5778c216403fd823db281716 + languageName: node + linkType: hard + +"glob@npm:^10.2.2": + version: 10.3.10 + resolution: "glob@npm:10.3.10" + dependencies: + foreground-child: ^3.1.0 + 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/esm/bin.mjs + checksum: 4f2fe2511e157b5a3f525a54092169a5f92405f24d2aed3142f4411df328baca13059f4182f1db1bf933e2c69c0bd89e57ae87edd8950cba8c7ccbe84f721cf3 + languageName: node + linkType: hard + +"glob@npm:^6.0.1": + version: 6.0.4 + resolution: "glob@npm:6.0.4" + dependencies: + inflight: ^1.0.4 + inherits: 2 + minimatch: 2 || 3 + once: ^1.3.0 + path-is-absolute: ^1.0.0 + checksum: c4946c3d015ac81f704d185f2b3a55eb670100693c2cf7bc833d0efd970ec727d860d4839a5178e46a7e594b34a34661bae2f4c3405727c9fd189f84954ca3c0 + languageName: node + linkType: hard + +"glob@npm:^7.1.3, glob@npm:^7.1.4, 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 + +"glob@npm:^8.0.1": + version: 8.1.0 + resolution: "glob@npm:8.1.0" + dependencies: + fs.realpath: ^1.0.0 + inflight: ^1.0.4 + inherits: 2 + minimatch: ^5.0.1 + once: ^1.3.0 + checksum: 92fbea3221a7d12075f26f0227abac435de868dd0736a17170663783296d0dd8d3d532a5672b4488a439bf5d7fb85cdd07c11185d6cd39184f0385cbdfb86a47 + languageName: node + linkType: hard + +"glob@npm:^9.2.0": + version: 9.3.5 + resolution: "glob@npm:9.3.5" + dependencies: + fs.realpath: ^1.0.0 + minimatch: ^8.0.2 + minipass: ^4.2.4 + path-scurry: ^1.6.1 + checksum: 94b093adbc591bc36b582f77927d1fb0dbf3ccc231828512b017601408be98d1fe798fc8c0b19c6f2d1a7660339c3502ce698de475e9d938ccbb69b47b647c84 + 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.23.0 + resolution: "globals@npm:13.23.0" + dependencies: + type-fest: ^0.20.2 + checksum: 194c97cf8d1ef6ba59417234c2386549c4103b6e5f24b1ff1952de61a4753e5d2069435ba629de711a6480b1b1d114a98e2ab27f85e966d5a10c319c3bbd3dc3 + languageName: node + linkType: hard + +"globals@npm:^15.15.0": + version: 15.15.0 + resolution: "globals@npm:15.15.0" + checksum: a2a92199a112db00562a2f85eeef2a7e3943e171f7f7d9b17dfa9231e35fd612588f3c199d1509ab1757273467e413b08c80424cf6e399e96acdaf93deb3ee88 + 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:10.0.0": + version: 10.0.0 + resolution: "globby@npm:10.0.0" + dependencies: + "@types/glob": ^7.1.1 + array-union: ^2.1.0 + dir-glob: ^3.0.1 + fast-glob: ^3.0.3 + glob: ^7.1.3 + ignore: ^5.1.1 + merge2: ^1.2.3 + slash: ^3.0.0 + checksum: fbff58d2fcaedd9207901f6e3b5341ff885b6d499c3a095f7befde0fd03ec1ea634452a82f81e894e46f6a5d704da44b842ba93066f90dced52adf84d4b8d1cc + languageName: node + linkType: hard + +"globby@npm:11.1.0, 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 + +"gopd@npm:^1.0.1, gopd@npm:^1.2.0": + version: 1.2.0 + resolution: "gopd@npm:1.2.0" + checksum: cc6d8e655e360955bdccaca51a12a474268f95bb793fc3e1f2bdadb075f28bfd1fd988dab872daf77a61d78cbaf13744bc8727a17cfb1d150d76047d805375f3 + languageName: node + linkType: hard + +"got@npm:^11.7.0, got@npm:^11.8.2": + version: 11.8.6 + resolution: "got@npm:11.8.6" + dependencies: + "@sindresorhus/is": ^4.0.0 + "@szmarczak/http-timer": ^4.0.5 + "@types/cacheable-request": ^6.0.1 + "@types/responselike": ^1.0.0 + cacheable-lookup: ^5.0.3 + cacheable-request: ^7.0.2 + decompress-response: ^6.0.0 + http2-wrapper: ^1.0.0-beta.5.2 + lowercase-keys: ^2.0.0 + p-cancelable: ^2.0.0 + responselike: ^2.0.0 + checksum: bbc783578a8d5030c8164ef7f57ce41b5ad7db2ed13371e1944bef157eeca5a7475530e07c0aaa71610d7085474d0d96222c9f4268d41db333a17e39b463f45d + languageName: node + linkType: hard + +"graceful-fs@npm:4.2.11, graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.3, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, 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 + +"grapheme-splitter@npm:^1.0.4": + version: 1.0.4 + resolution: "grapheme-splitter@npm:1.0.4" + checksum: 0c22ec54dee1b05cd480f78cf14f732cb5b108edc073572c4ec205df4cd63f30f8db8025afc5debc8835a8ddeacf648a1c7992fe3dcd6ad38f9a476d84906620 + 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 + +"gunzip-maybe@npm:^1.4.2": + version: 1.4.2 + resolution: "gunzip-maybe@npm:1.4.2" + dependencies: + browserify-zlib: ^0.1.4 + is-deflate: ^1.0.0 + is-gzip: ^1.0.0 + peek-stream: ^1.1.0 + pumpify: ^1.3.3 + through2: ^2.0.3 + bin: + gunzip-maybe: bin.js + checksum: bc4d4977c24a2860238df271de75d53dd72a359d19f1248d1c613807dc221d3b8ae09624e3085c8106663e3e1b59db62a85b261d1138c2cc24efad9df577d4e1 + languageName: node + linkType: hard + +"gzip-size@npm:^6.0.0": + version: 6.0.0 + resolution: "gzip-size@npm:6.0.0" + dependencies: + duplexer: ^0.1.2 + checksum: 2df97f359696ad154fc171dcb55bc883fe6e833bca7a65e457b9358f3cb6312405ed70a8da24a77c1baac0639906cd52358dc0ce2ec1a937eaa631b934c94194 + languageName: node + linkType: hard + +"hachure-fill@npm:^0.5.2": + version: 0.5.2 + resolution: "hachure-fill@npm:0.5.2" + checksum: 01cf2ac6b787ec73ced3d6eb393a0f989d55f32431d1e8a1c1c864769d1b8763c9cb6aa1d45fb1c237a065de90167491c6a46193690b688ea6c25f575f84586c + languageName: node + linkType: hard + +"handle-thing@npm:^2.0.0": + version: 2.0.1 + resolution: "handle-thing@npm:2.0.1" + checksum: 68071f313062315cd9dce55710e9496873945f1dd425107007058fc1629f93002a7649fcc3e464281ce02c7e809a35f5925504ab8105d972cf649f1f47cb7d6c + languageName: node + linkType: hard + +"handlebars@npm:4.7.8, handlebars@npm:^4.7.7": + version: 4.7.8 + resolution: "handlebars@npm:4.7.8" + dependencies: + minimist: ^1.2.5 + neo-async: ^2.6.2 + source-map: ^0.6.1 + uglify-js: ^3.1.4 + wordwrap: ^1.0.0 + dependenciesMeta: + uglify-js: + optional: true + bin: + handlebars: bin/handlebars + checksum: 00e68bb5c183fd7b8b63322e6234b5ac8fbb960d712cb3f25587d559c2951d9642df83c04a1172c918c41bcfc81bfbd7a7718bbce93b893e0135fc99edea93ff + 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, has-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: b2316c7302a0e8ba3aaba215f834e96c22c86f192e7310bdf689dd0e6999510c89b00fbc5742571507cebf25764d68c988b3a0da217369a73596191ac0ce694b + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" + dependencies: + has-symbols: ^1.0.3 + checksum: 999d60bb753ad714356b2c6c87b7fb74f32463b8426e159397da4bde5bca7e598ab1073f4d8d4deafac297f2eb311484cd177af242776bf05f0d11565680468d + languageName: node + linkType: hard + +"has-unicode@npm:2.0.1, 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.4 + resolution: "has@npm:1.0.4" + checksum: 8a11ba062e0627c9578a1d08285401e39f1d071a9692ddf793199070edb5648b21c774dd733e2a181edd635bf6862731885f476f4ccf67c998d7a5ff7cef2550 + languageName: node + linkType: hard + +"hasown@npm:^2.0.2": + version: 2.0.2 + resolution: "hasown@npm:2.0.2" + dependencies: + function-bind: ^1.1.2 + checksum: e8516f776a15149ca6c6ed2ae3110c417a00b62260e222590e54aa367cbcd6ed99122020b37b7fbdf05748df57b265e70095d7bf35a47660587619b15ffb93db + languageName: node + linkType: hard + +"he@npm:^1.2.0": + version: 1.2.0 + resolution: "he@npm:1.2.0" + bin: + he: bin/he + checksum: 3d4d6babccccd79c5c5a3f929a68af33360d6445587d628087f39a965079d84f18ce9c3d3f917ee1e3978916fc833bb8b29377c3b403f919426f91bc6965e7a7 + languageName: node + linkType: hard + +"highlight-words-core@npm:^1.2.0": + version: 1.2.2 + resolution: "highlight-words-core@npm:1.2.2" + checksum: 737758a8a572c82919552b031df300016164b7d0db6a819d24bc6c7ca2279d3cd6d03497728930d6402423c7a3fc2f42c628a9b01b025c704a0b56a635377511 + 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:^3.0.6": + version: 3.0.8 + resolution: "hosted-git-info@npm:3.0.8" + dependencies: + lru-cache: ^6.0.0 + checksum: 5af7a69581acb84206a7b8e009f4680c36396814e92c8a83973dfb3b87e44e44d1f7b8eaf3e4a953686482770ecb78406a4ce4666bfdfe447762434127871d8d + languageName: node + linkType: hard + +"hosted-git-info@npm:^4.0.0, 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 + +"hosted-git-info@npm:^6.0.0": + version: 6.1.1 + resolution: "hosted-git-info@npm:6.1.1" + dependencies: + lru-cache: ^7.5.1 + checksum: fcd3ca2eaa05f3201425ccbb8aa47f88cdda4a3a6d79453f8e269f7171356278bd1db08f059d8439eb5eaa91c6a8a20800fc49cca6e9e4e899b202a332d5ba6b + languageName: node + linkType: hard + +"hpack.js@npm:^2.1.6": + version: 2.1.6 + resolution: "hpack.js@npm:2.1.6" + dependencies: + inherits: ^2.0.1 + obuf: ^1.0.0 + readable-stream: ^2.0.1 + wbuf: ^1.1.0 + checksum: 2de144115197967ad6eeee33faf41096c6ba87078703c5cb011632dcfbffeb45784569e0cf02c317bd79c48375597c8ec88c30fff5bb0b023e8f654fb6e9c06e + 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, html-escaper@npm:^2.0.2": + version: 2.0.2 + resolution: "html-escaper@npm:2.0.2" + checksum: d2df2da3ad40ca9ee3a39c5cc6475ef67c8f83c234475f24d8e9ce0dc80a2c82df8e1d6fa78ddd1e9022a586ea1bd247a615e80a5cd9273d90111ddda7d9e974 + languageName: node + linkType: hard + +"html-minifier-terser@npm:^6.0.2": + version: 6.1.0 + resolution: "html-minifier-terser@npm:6.1.0" + dependencies: + camel-case: ^4.1.2 + clean-css: ^5.2.2 + commander: ^8.3.0 + he: ^1.2.0 + param-case: ^3.0.4 + relateurl: ^0.2.7 + terser: ^5.10.0 + bin: + html-minifier-terser: cli.js + checksum: ac52c14006476f773204c198b64838477859dc2879490040efab8979c0207424da55d59df7348153f412efa45a0840a1ca3c757bf14767d23a15e3e389d37a93 + languageName: node + linkType: hard + +"html-webpack-plugin@npm:^5.6.3": + version: 5.6.3 + resolution: "html-webpack-plugin@npm:5.6.3" + dependencies: + "@types/html-minifier-terser": ^6.0.0 + html-minifier-terser: ^6.0.2 + lodash: ^4.17.21 + pretty-error: ^4.0.0 + tapable: ^2.0.0 + peerDependencies: + "@rspack/core": 0.x || 1.x + webpack: ^5.20.0 + peerDependenciesMeta: + "@rspack/core": + optional: true + webpack: + optional: true + checksum: 59e7d971b0cfd9ba34c7acaa3c161e43c62596474dd8cd35d7b690498ff5891f21296de0aa1d2e7810348caa657e938461267155dda47913b5eeca7124406270 + languageName: node + linkType: hard + +"htmlparser2@npm:^6.1.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 + +"htmlparser2@npm:^8.0.0": + version: 8.0.2 + resolution: "htmlparser2@npm:8.0.2" + dependencies: + domelementtype: ^2.3.0 + domhandler: ^5.0.3 + domutils: ^3.0.1 + entities: ^4.4.0 + checksum: 29167a0f9282f181da8a6d0311b76820c8a59bc9e3c87009e21968264c2987d2723d6fde5a964d4b7b6cba663fca96ffb373c06d8223a85f52a6089ced942700 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.0.0, 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-deceiver@npm:^1.2.7": + version: 1.2.7 + resolution: "http-deceiver@npm:1.2.7" + checksum: 64d7d1ae3a6933eb0e9a94e6f27be4af45a53a96c3c34e84ff57113787105a89fff9d1c3df263ef63add823df019b0e8f52f7121e32393bb5ce9a713bf100b41 + languageName: node + linkType: hard + +"http-errors@npm:2.0.0": + version: 2.0.0 + resolution: "http-errors@npm:2.0.0" + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + checksum: 9b0a3782665c52ce9dc658a0d1560bcb0214ba5699e4ea15aefb2a496e2ca83db03ebc42e1cce4ac1f413e4e0d2d736a3fd755772c556a9a06853ba2a0b7d920 + languageName: node + linkType: hard + +"http-errors@npm:~1.6.2": + version: 1.6.3 + resolution: "http-errors@npm:1.6.3" + dependencies: + depd: ~1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: ">= 1.4.0 < 2" + checksum: a9654ee027e3d5de305a56db1d1461f25709ac23267c6dc28cdab8323e3f96caa58a9a6a5e93ac15d7285cee0c2f019378c3ada9026e7fe19c872d695f27de7c + languageName: node + linkType: hard + +"http-errors@npm:~2.0.0, http-errors@npm:~2.0.1": + version: 2.0.1 + resolution: "http-errors@npm:2.0.1" + dependencies: + depd: ~2.0.0 + inherits: ~2.0.4 + setprototypeof: ~1.2.0 + statuses: ~2.0.2 + toidentifier: ~1.0.1 + checksum: 155d1a100a06e4964597013109590b97540a177b69c3600bbc93efc746465a99a2b718f43cdf76b3791af994bbe3a5711002046bf668cdc007ea44cea6df7ccd + languageName: node + linkType: hard + +"http-parser-js@npm:>=0.5.1": + version: 0.5.10 + resolution: "http-parser-js@npm:0.5.10" + checksum: 1038177c5f114860345ce7c19223d2cdd9a103265bd897bab13343c9eff4deef60f7956a674485f1234ffc9b19fb4b97f0c20a5848cfc9ccbf5d3c438d89ae89 + 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 + +"http-proxy-middleware@npm:^2.0.9": + version: 2.0.9 + resolution: "http-proxy-middleware@npm:2.0.9" + dependencies: + "@types/http-proxy": ^1.17.8 + http-proxy: ^1.18.1 + is-glob: ^4.0.1 + is-plain-obj: ^3.0.0 + micromatch: ^4.0.2 + peerDependencies: + "@types/express": ^4.17.13 + peerDependenciesMeta: + "@types/express": + optional: true + checksum: 0ea88609b9c13fa03b89f8e6b85bd5c537027ec6990005dd81a7fbb3e73fcf8d6a6e3db2b57b1c6cddbcda80965704584dc6291d0e721b2700198c4e59ee0d0b + languageName: node + linkType: hard + +"http-proxy@npm:^1.18.1": + version: 1.18.1 + resolution: "http-proxy@npm:1.18.1" + dependencies: + eventemitter3: ^4.0.0 + follow-redirects: ^1.0.0 + requires-port: ^1.0.0 + checksum: f5bd96bf83e0b1e4226633dbb51f8b056c3e6321917df402deacec31dd7fe433914fc7a2c1831cf7ae21e69c90b3a669b8f434723e9e8b71fd68afe30737b6a5 + languageName: node + linkType: hard + +"http-signature@npm:~1.4.0": + version: 1.4.0 + resolution: "http-signature@npm:1.4.0" + dependencies: + assert-plus: ^1.0.0 + jsprim: ^2.0.2 + sshpk: ^1.18.0 + checksum: f07f4cc0481e4461c68b9b7d1a25bf2ec4cef8e0061812b989c1e64f504b4b11f75f88022102aea05d25d47a87789599f1a310b1f8a56945a50c93e54c7ee076 + languageName: node + linkType: hard + +"http-status-codes@npm:2.2.0": + version: 2.2.0 + resolution: "http-status-codes@npm:2.2.0" + checksum: 31e1d730856210445da0907d9b484629e69e4fe92ac032478a7aa4d89e5b215e2b4e75d7ebce40d0537b6850bd281b2f65c7cc36cc2677e5de056d6cea1045ce + languageName: node + linkType: hard + +"http-status-codes@npm:2.3.0": + version: 2.3.0 + resolution: "http-status-codes@npm:2.3.0" + checksum: dae3b99e0155441b6df28e8265ff27c56a45f82c6092f736414233e9ccf063d5ea93c1e1279e8b499c4642e2538b37995c76b1640ed3f615d0e2883d3a1dcfd5 + languageName: node + linkType: hard + +"http2-wrapper@npm:^1.0.0-beta.5.2": + version: 1.0.3 + resolution: "http2-wrapper@npm:1.0.3" + dependencies: + quick-lru: ^5.1.1 + resolve-alpn: ^1.0.0 + checksum: 74160b862ec699e3f859739101ff592d52ce1cb207b7950295bf7962e4aa1597ef709b4292c673bece9c9b300efad0559fc86c71b1409c7a1e02b7229456003e + languageName: node + linkType: hard + +"https-proxy-agent@npm:5.0.1, 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 + +"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 + +"hyperdyperid@npm:^1.2.0": + version: 1.2.0 + resolution: "hyperdyperid@npm:1.2.0" + checksum: 210029d1c86926f09109f6317d143f8b056fc38e8dd11b0c3e3205fc6c6ff8429fb55b4b9c2bce065462719ed9d34366eced387aaa0035d93eb76b306a8547ef + languageName: node + linkType: hard + +"iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.24, iconv-lite@npm:~0.4.24": + version: 0.4.24 + resolution: "iconv-lite@npm:0.4.24" + dependencies: + safer-buffer: ">= 2.1.2 < 3" + checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 + 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 + +"ieee754@npm:^1.1.13, ieee754@npm:^1.2.1": + version: 1.2.1 + resolution: "ieee754@npm:1.2.1" + checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e + languageName: node + linkType: hard + +"ignore-walk@npm:^5.0.1": + version: 5.0.1 + resolution: "ignore-walk@npm:5.0.1" + dependencies: + minimatch: ^5.0.1 + checksum: 1a4ef35174653a1aa6faab3d9f8781269166536aee36a04946f6e2b319b2475c1903a75ed42f04219274128242f49d0a10e20c4354ee60d9548e97031451150b + languageName: node + linkType: hard + +"ignore-walk@npm:^6.0.0": + version: 6.0.3 + resolution: "ignore-walk@npm:6.0.3" + dependencies: + minimatch: ^9.0.0 + checksum: d8ba534beb3a3fa48ddd32c79bbedb14a831ff7fab548674765d661d8f8d0df4b0827e3ad86e35cb15ff027655bfd6a477bd8d5d0411e229975a7c716f1fc9de + languageName: node + linkType: hard + +"ignore@npm:^5.0.4, ignore@npm:^5.1.1, ignore@npm:^5.2.0": + 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-local@npm:3.1.0, 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 + +"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.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3, inherits@npm:~2.0.4": + 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.2, ini@npm:^1.3.8, ini@npm:~1.3.0": + version: 1.3.8 + resolution: "ini@npm:1.3.8" + checksum: dfd98b0ca3a4fc1e323e38a6c8eb8936e31a97a918d3b377649ea15bdb15d481207a0dda1021efbd86b464cae29a0d33c1d7dcaf6c5672bee17fa849bc50a1b3 + languageName: node + linkType: hard + +"init-package-json@npm:5.0.0": + version: 5.0.0 + resolution: "init-package-json@npm:5.0.0" + dependencies: + npm-package-arg: ^10.0.0 + promzard: ^1.0.0 + read: ^2.0.0 + read-package-json: ^6.0.0 + semver: ^7.3.5 + validate-npm-package-license: ^3.0.4 + validate-npm-package-name: ^5.0.0 + checksum: ad601c717d5ea3ff5a416cbe7d39417bb3914596dce7a386bffe856229435ebef06eb600736326effdd4e57a02d41164aa525d31d51ec49812c8e8c215d1d7c8 + languageName: node + linkType: hard + +"inquirer@npm:^8.2.4": + version: 8.2.4 + resolution: "inquirer@npm:8.2.4" + dependencies: + ansi-escapes: ^4.2.1 + chalk: ^4.1.1 + cli-cursor: ^3.1.0 + cli-width: ^3.0.0 + external-editor: ^3.0.3 + figures: ^3.0.0 + lodash: ^4.17.21 + mute-stream: 0.0.8 + ora: ^5.4.1 + run-async: ^2.4.0 + rxjs: ^7.5.5 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + through: ^2.3.6 + wrap-ansi: ^7.0.0 + checksum: dfcb6529d3af443dfea2241cb471508091b51f5121a088fdb8728b23ec9b349ef0a5e13a0ef2c8e19457b0bed22f7cbbcd561f7a4529d084c562a58c605e2655 + languageName: node + linkType: hard + +"inquirer@npm:^9.1.4": + version: 9.2.11 + resolution: "inquirer@npm:9.2.11" + dependencies: + "@ljharb/through": ^2.3.9 + ansi-escapes: ^4.3.2 + chalk: ^5.3.0 + cli-cursor: ^3.1.0 + cli-width: ^4.1.0 + external-editor: ^3.1.0 + figures: ^5.0.0 + lodash: ^4.17.21 + mute-stream: 1.0.0 + ora: ^5.4.1 + run-async: ^3.0.0 + rxjs: ^7.8.1 + string-width: ^4.2.3 + strip-ansi: ^6.0.1 + wrap-ansi: ^6.2.0 + checksum: af59b422eb6005dac90f6c5e8295013d0611ac5471ff4fbf4ad3e228136e0f41db73af2d5a68e36770f9e31ac203ae1589d35c3e970acbc6110bb5df905928f9 + 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, internmap@npm:^1.0.0": + version: 1.0.1 + resolution: "internmap@npm:1.0.1" + checksum: 9d00f8c0cf873a24a53a5a937120dab634c41f383105e066bb318a61864e6292d24eb9516e8e7dccfb4420ec42ca474a0f28ac9a6cc82536898fa09bbbe53813 + languageName: node + linkType: hard + +"ip@npm:^2.0.0": + version: 2.0.1 + resolution: "ip@npm:2.0.1" + checksum: d765c9fd212b8a99023a4cde6a558a054c298d640fec1020567494d257afd78ca77e37126b1a3ef0e053646ced79a816bf50621d38d5e768cdde0431fa3b0d35 + languageName: node + linkType: hard + +"ipaddr.js@npm:1.9.1": + version: 1.9.1 + resolution: "ipaddr.js@npm:1.9.1" + checksum: f88d3825981486f5a1942414c8d77dd6674dd71c065adcfa46f578d677edcb99fda25af42675cb59db492fdf427b34a5abfcde3982da11a8fd83a500b41cfe77 + languageName: node + linkType: hard + +"ipaddr.js@npm:^2.1.0": + version: 2.3.0 + resolution: "ipaddr.js@npm:2.3.0" + checksum: 275602ad56e765d6c4187c1ab1a17d415da7a263e8d3278da5bdb6db147b29c56fac7e98a3f68b05d25e0b515601f1e750c2dd8ec9a871eb93ea094643b84916 + 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-arrayish@npm:^0.3.1": + version: 0.3.2 + resolution: "is-arrayish@npm:0.3.2" + checksum: 977e64f54d91c8f169b59afcd80ff19227e9f5c791fa28fa2e5bce355cbaf6c2c356711b734656e80c9dd4a854dd7efcf7894402f1031dfc5de5d620775b4d5f + languageName: node + linkType: hard + +"is-async-function@npm:^2.0.0": + version: 2.0.0 + resolution: "is-async-function@npm:2.0.0" + dependencies: + has-tostringtag: ^1.0.0 + checksum: e3471d95e6c014bf37cad8a93f2f4b6aac962178e0a5041e8903147166964fdc1c5c1d2ef87e86d77322c370ca18f2ea004fa7420581fa747bcaf7c223069dbd + 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-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: ^2.0.0 + checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c + 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-ci@npm:3.0.1": + version: 3.0.1 + resolution: "is-ci@npm:3.0.1" + dependencies: + ci-info: ^3.2.0 + bin: + is-ci: bin.js + checksum: 192c66dc7826d58f803ecae624860dccf1899fc1f3ac5505284c0a5cf5f889046ffeb958fa651e5725d5705c5bcb14f055b79150ea5fcad7456a9569de60260e + languageName: node + linkType: hard + +"is-core-module@npm:^2.13.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1, is-core-module@npm:^2.9.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, is-date-object@npm:^1.0.5": + 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-deflate@npm:^1.0.0": + version: 1.0.0 + resolution: "is-deflate@npm:1.0.0" + checksum: c2f9f2d3db79ac50c5586697d1e69a55282a2b0cc5e437b3c470dd47f24e40b6216dcd7e024511e21381607bf57afa019343e3bd0e08a119032818b596004262 + languageName: node + linkType: hard + +"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": + 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-finalizationregistry@npm:^1.0.2": + version: 1.0.2 + resolution: "is-finalizationregistry@npm:1.0.2" + dependencies: + call-bind: ^1.0.2 + checksum: 4f243a8e06228cd45bdab8608d2cb7abfc20f6f0189c8ac21ea8d603f1f196eabd531ce0bb8e08cbab047e9845ef2c191a3761c9a17ad5cabf8b35499c4ad35d + 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-generator-function@npm:^1.0.10": + version: 1.0.10 + resolution: "is-generator-function@npm:1.0.10" + dependencies: + has-tostringtag: ^1.0.0 + checksum: d54644e7dbaccef15ceb1e5d91d680eb5068c9ee9f9eb0a9e04173eb5542c9b51b5ab52c5537f5703e48d5fddfd376817c1ca07a84a407b7115b769d4bdde72b + languageName: node + linkType: hard + +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: ^2.1.1 + checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 + languageName: node + linkType: hard + +"is-gzip@npm:^1.0.0": + version: 1.0.0 + resolution: "is-gzip@npm:1.0.0" + checksum: 0d28931c1f445fa29c900cf9f48e06e9d1d477a3bf7bd7332e7ce68f1333ccd8cb381de2f0f62a9a262d9c0912608a9a71b4a40e788e201b3dbd67072bb20d86 + 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-interactive@npm:^1.0.0": + version: 1.0.0 + resolution: "is-interactive@npm:1.0.0" + checksum: 824808776e2d468b2916cdd6c16acacebce060d844c35ca6d82267da692e92c3a16fdba624c50b54a63f38bdc4016055b6f443ce57d7147240de4f8cdabaf6f9 + 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-map@npm:^2.0.1": + version: 2.0.2 + resolution: "is-map@npm:2.0.2" + checksum: ace3d0ecd667bbdefdb1852de601268f67f2db725624b1958f279316e13fecb8fa7df91fd60f690d7417b4ec180712f5a7ee967008e27c65cfd475cc84337728 + 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-network-error@npm:^1.0.0": + version: 1.3.0 + resolution: "is-network-error@npm:1.3.0" + checksum: 56dc0b8ed9c0bb72202058f172ad0c3121cf68772e8cbba343d3775f6e2ec7877d423cbcea45f4cedcd345de8693de1b52dfe0c6fc15d652c4aa98c2abf0185a + 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-obj@npm:^2.0.0": + version: 2.0.0 + resolution: "is-obj@npm:2.0.0" + checksum: c9916ac8f4621962a42f5e80e7ffdb1d79a3fab7456ceaeea394cd9e0858d04f985a9ace45be44433bf605673c8be8810540fe4cc7f4266fc7526ced95af5a08 + 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:2.1.0": + version: 2.1.0 + resolution: "is-plain-obj@npm:2.1.0" + checksum: cec9100678b0a9fe0248a81743041ed990c2d4c99f893d935545cfbc42876cbe86d207f3b895700c690ad2fa520e568c44afc1605044b535a7820c1d40e38daa + languageName: node + linkType: hard + +"is-plain-obj@npm:^1.0.0, 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-obj@npm:^3.0.0": + version: 3.0.0 + resolution: "is-plain-obj@npm:3.0.0" + checksum: a6ebdf8e12ab73f33530641972a72a4b8aed6df04f762070d823808303e4f76d87d5ea5bd76f96a7bbe83d93f04ac7764429c29413bd9049853a69cb630fb21c + 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-promise@npm:^2.1.0": + version: 2.2.2 + resolution: "is-promise@npm:2.2.2" + checksum: 18bf7d1c59953e0ad82a1ed963fb3dc0d135c8f299a14f89a17af312fc918373136e56028e8831700e1933519630cc2fd4179a777030330fde20d34e96f40c78 + 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-set@npm:^2.0.1": + version: 2.0.2 + resolution: "is-set@npm:2.0.2" + checksum: b64343faf45e9387b97a6fd32be632ee7b269bd8183701f3b3f5b71a7cf00d04450ed8669d0bd08753e08b968beda96fca73a10fd0ff56a32603f64deba55a57 + 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-ssh@npm:^1.4.0": + version: 1.4.0 + resolution: "is-ssh@npm:1.4.0" + dependencies: + protocols: ^2.0.1 + checksum: 75eaa17b538bee24b661fbeb0f140226ac77e904a6039f787bea418431e2162f1f9c4c4ccad3bd169e036cd701cc631406e8c505d9fa7e20164e74b47f86f40f + languageName: node + linkType: hard + +"is-stream@npm:2.0.0, is-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "is-stream@npm:2.0.0" + checksum: 4dc47738e26bc4f1b3be9070b6b9e39631144f204fc6f87db56961220add87c10a999ba26cf81699f9ef9610426f69cb08a4713feff8deb7d8cadac907826935 + 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-text-path@npm:^1.0.1": + version: 1.0.1 + resolution: "is-text-path@npm:1.0.1" + dependencies: + text-extensions: ^1.0.0 + checksum: fb5d78752c22b3f73a7c9540768f765ffcfa38c9e421e2b9af869565307fa1ae5e3d3a2ba016a43549742856846566d327da406e94a5846ec838a288b1704fd2 + languageName: node + linkType: hard + +"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: + which-typed-array: ^1.1.11 + checksum: 4c89c4a3be07186caddadf92197b17fda663a9d259ea0d44a85f171558270d36059d1c386d34a12cba22dfade5aba497ce22778e866adc9406098c8fc4771796 + languageName: node + linkType: hard + +"is-typedarray@npm:~1.0.0": + version: 1.0.0 + resolution: "is-typedarray@npm:1.0.0" + checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 + languageName: node + linkType: hard + +"is-unicode-supported@npm:^0.1.0": + version: 0.1.0 + resolution: "is-unicode-supported@npm:0.1.0" + checksum: a2aab86ee7712f5c2f999180daaba5f361bdad1efadc9610ff5b8ab5495b86e4f627839d085c6530363c6d6d4ecbde340fb8e54bdb83da4ba8e0865ed5513c52 + languageName: node + linkType: hard + +"is-unicode-supported@npm:^1.2.0": + version: 1.3.0 + resolution: "is-unicode-supported@npm:1.3.0" + checksum: 20a1fc161afafaf49243551a5ac33b6c4cf0bbcce369fcd8f2951fbdd000c30698ce320de3ee6830497310a8f41880f8066d440aa3eb0a853e2aa4836dd89abc + languageName: node + linkType: hard + +"is-weakmap@npm:^2.0.1": + version: 2.0.1 + resolution: "is-weakmap@npm:2.0.1" + checksum: 1222bb7e90c32bdb949226e66d26cb7bce12e1e28e3e1b40bfa6b390ba3e08192a8664a703dff2a00a84825f4e022f9cd58c4599ff9981ab72b1d69479f4f7f6 + 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-weakset@npm:^2.0.1": + version: 2.0.2 + resolution: "is-weakset@npm:2.0.2" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.1.1 + checksum: 5d8698d1fa599a0635d7ca85be9c26d547b317ed8fd83fc75f03efbe75d50001b5eececb1e9971de85fcde84f69ae6f8346bc92d20d55d46201d328e4c74a367 + 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 + +"is-wsl@npm:^3.1.0": + version: 3.1.0 + resolution: "is-wsl@npm:3.1.0" + dependencies: + is-inside-container: ^1.0.0 + checksum: f9734c81f2f9cf9877c5db8356bfe1ff61680f1f4c1011e91278a9c0564b395ae796addb4bf33956871041476ec82c3e5260ed57b22ac91794d4ae70a1d2f0a9 + 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 + +"isstream@npm:~0.1.2": + version: 0.1.2 + resolution: "isstream@npm:0.1.2" + checksum: 1eb2fe63a729f7bdd8a559ab552c69055f4f48eb5c2f03724430587c6f450783c8f1cd936c1c952d0a927925180fcc892ebd5b174236cf1065d4bd5bdb37e963 + 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.1 + resolution: "istanbul-lib-instrument@npm:6.0.1" + 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: fb23472e739cfc9b027cefcd7d551d5e7ca7ff2817ae5150fab99fe42786a7f7b56a29a2aa8309c37092e18297b8003f9c274f50ca4360949094d17fbac81472 + 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 + +"iterator.prototype@npm:^1.1.2": + version: 1.1.2 + resolution: "iterator.prototype@npm:1.1.2" + dependencies: + define-properties: ^1.2.1 + get-intrinsic: ^1.2.1 + has-symbols: ^1.0.3 + reflect.getprototypeof: ^1.0.4 + set-function-name: ^2.0.1 + checksum: d8a507e2ccdc2ce762e8a1d3f4438c5669160ac72b88b648e59a688eec6bc4e64b22338e74000518418d9e693faf2a092d2af21b9ec7dbf7763b037a54701168 + languageName: node + linkType: hard + +"jackspeak@npm:^2.3.5": + version: 2.3.6 + resolution: "jackspeak@npm:2.3.6" + dependencies: + "@isaacs/cliui": ^8.0.2 + "@pkgjs/parseargs": ^0.11.0 + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 57d43ad11eadc98cdfe7496612f6bbb5255ea69fe51ea431162db302c2a11011642f50cfad57288bd0aea78384a0612b16e131944ad8ecd09d619041c8531b54 + languageName: node + linkType: hard + +"jake@npm:^10.8.5": + version: 10.8.7 + resolution: "jake@npm:10.8.7" + dependencies: + async: ^3.2.3 + chalk: ^4.0.2 + filelist: ^1.0.4 + minimatch: ^3.1.2 + bin: + jake: bin/cli.js + checksum: a23fd2273fb13f0d0d845502d02c791fd55ef5c6a2d207df72f72d8e1eac6d2b8ffa6caf660bc8006b3242e0daaa88a3ecc600194d72b5c6016ad56e9cd43553 + 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.4.3 < 30, jest-diff@npm:^29.4.1, 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:^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, jest@npm:^29.3.1": + 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:4.1.0, 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 + +"js-yaml@npm:^3.10.0, 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 + +"jsbn@npm:~0.1.0": + version: 0.1.1 + resolution: "jsbn@npm:0.1.1" + checksum: e5ff29c1b8d965017ef3f9c219dacd6e40ad355c664e277d31246c90545a02e6047018c16c60a00f36d561b3647215c41894f5d869ada6908a2e0ce4200c88f2 + 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": + version: 2.3.1 + resolution: "json-parse-even-better-errors@npm:2.3.1" + checksum: 798ed4cf3354a2d9ccd78e86d2169515a0097a5c133337807cdf7f1fc32e1391d207ccfc276518cc1d7d8d4db93288b8a50ba4293d212ad1336e52a8ec0a941f + languageName: node + linkType: hard + +"json-parse-even-better-errors@npm:^3.0.0": + version: 3.0.0 + resolution: "json-parse-even-better-errors@npm:3.0.0" + checksum: f1970b5220c7fa23d888565510752c3d5e863f93668a202fcaa719739fa41485dfc6a1db212f702ebd3c873851cc067aebc2917e3f79763cae2fdb95046f38f3 + 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-schema@npm:0.4.0, json-schema@npm:^0.4.0": + version: 0.4.0 + resolution: "json-schema@npm:0.4.0" + checksum: 66389434c3469e698da0df2e7ac5a3281bcff75e797a5c127db7c5b56270e01ae13d9afa3c03344f76e32e81678337a8c912bdbb75101c62e487dc3778461d72 + 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, 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 + +"json-stringify-safe@npm:^5.0.1, json-stringify-safe@npm:~5.0.1": + version: 5.0.1 + resolution: "json-stringify-safe@npm:5.0.1" + checksum: 48ec0adad5280b8a96bb93f4563aa1667fd7a36334f79149abd42446d0989f2ddc58274b479f4819f1f00617957e6344c886c55d05a4e15ebb4ab931e4a6a8ee + languageName: node + linkType: hard + +"json5@npm:^2.1.2, json5@npm:^2.2.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 + +"jsonc-parser@npm:3.2.0": + version: 3.2.0 + resolution: "jsonc-parser@npm:3.2.0" + checksum: 946dd9a5f326b745aa326d48a7257e3f4a4b62c5e98ec8e49fa2bdd8d96cef7e6febf1399f5c7016114fd1f68a1c62c6138826d5d90bc650448e3cf0951c53c7 + languageName: node + linkType: hard + +"jsonfile@npm:^4.0.0": + version: 4.0.0 + resolution: "jsonfile@npm:4.0.0" + dependencies: + graceful-fs: ^4.1.6 + dependenciesMeta: + graceful-fs: + optional: true + checksum: 6447d6224f0d31623eef9b51185af03ac328a7553efcee30fa423d98a9e276ca08db87d71e17f2310b0263fd3ffa6c2a90a6308367f661dc21580f9469897c9e + 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 + +"jsonparse@npm:^1.2.0, jsonparse@npm:^1.3.1": + version: 1.3.1 + resolution: "jsonparse@npm:1.3.1" + checksum: 6514a7be4674ebf407afca0eda3ba284b69b07f9958a8d3113ef1005f7ec610860c312be067e450c569aab8b89635e332cee3696789c750692bb60daba627f4d + 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 + +"jsonwebtoken@npm:9.0.2": + version: 9.0.2 + resolution: "jsonwebtoken@npm:9.0.2" + dependencies: + jws: ^3.2.2 + lodash.includes: ^4.3.0 + lodash.isboolean: ^3.0.3 + lodash.isinteger: ^4.0.4 + lodash.isnumber: ^3.0.3 + lodash.isplainobject: ^4.0.6 + lodash.isstring: ^4.0.1 + lodash.once: ^4.0.0 + ms: ^2.1.1 + semver: ^7.5.4 + checksum: fc739a6a8b33f1974f9772dca7f8493ca8df4cc31c5a09dcfdb7cff77447dcf22f4236fb2774ef3fe50df0abeb8e1c6f4c41eba82f500a804ab101e2fbc9d61a + languageName: node + linkType: hard + +"jsprim@npm:^2.0.2": + version: 2.0.2 + resolution: "jsprim@npm:2.0.2" + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + checksum: d175f6b1991e160cb0aa39bc857da780e035611986b5492f32395411879fdaf4e513d98677f08f7352dac93a16b66b8361c674b86a3fa406e2e7af6b26321838 + languageName: node + linkType: hard + +"jsx-ast-utils@npm:^2.4.1 || ^3.0.0": + version: 3.3.5 + resolution: "jsx-ast-utils@npm:3.3.5" + dependencies: + array-includes: ^3.1.6 + array.prototype.flat: ^1.3.1 + object.assign: ^4.1.4 + object.values: ^1.1.6 + checksum: f4b05fa4d7b5234230c905cfa88d36dc8a58a6666975a3891429b1a8cdc8a140bca76c297225cb7a499fad25a2c052ac93934449a2c31a44fc9edd06c773780a + languageName: node + linkType: hard + +"jwa@npm:^1.4.1": + version: 1.4.1 + resolution: "jwa@npm:1.4.1" + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: ^5.0.1 + checksum: ff30ea7c2dcc61f3ed2098d868bf89d43701605090c5b21b5544b512843ec6fd9e028381a4dda466cbcdb885c2d1150f7c62e7168394ee07941b4098e1035e2f + languageName: node + linkType: hard + +"jws@npm:^3.2.2": + version: 3.2.2 + resolution: "jws@npm:3.2.2" + dependencies: + jwa: ^1.4.1 + safe-buffer: ^5.0.1 + checksum: f0213fe5b79344c56cd443428d8f65c16bf842dc8cb8f5aed693e1e91d79c20741663ad6eff07a6d2c433d1831acc9814e8d7bada6a0471fbb91d09ceb2bf5c2 + languageName: node + linkType: hard + +"katex@npm:^0.16.22": + version: 0.16.22 + resolution: "katex@npm:0.16.22" + dependencies: + commander: ^8.3.0 + bin: + katex: cli.js + checksum: 66a609b6f3e1a3e8634a03228dcd31cb88b7f39d057cfe5271417bc8eb64b85f256accdbd68f453b5714e4e9546192bad554f75c8b9adb91d6b0a7a93505376b + languageName: node + linkType: hard + +"keyv@npm:^4.0.0, keyv@npm:^4.5.3": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: 3.0.1 + checksum: 74a24395b1c34bd44ad5cb2b49140d087553e170625240b86755a6604cd65aa16efdbdeae5cdb17ba1284a0fbb25ad06263755dbc71b8d8b06f74232ce3cdd72 + languageName: node + linkType: hard + +"khroma@npm:^2.1.0": + version: 2.1.0 + resolution: "khroma@npm:2.1.0" + checksum: b34ba39d3a9a52d388110bded8cb1c12272eb69c249d8eb26feab12d18a96a9bc4ceec4851d2afa43de4569f7d5ea78fa305965a3d0e96a38e02fe77c53677da + 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:4.1.5": + version: 4.1.5 + resolution: "kleur@npm:4.1.5" + checksum: 1dc476e32741acf0b1b5b0627ffd0d722e342c1b0da14de3e8ae97821327ca08f9fb944542fb3c126d90ac5f27f9d804edbe7c585bf7d12ef495d115e0f22c12 + 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 + +"kolorist@npm:^1.8.0": + version: 1.8.0 + resolution: "kolorist@npm:1.8.0" + checksum: b056de671acc8a17f1e78d6d46c47dae3e06481eabc9fed213dd9079a7454fd3a7ea1226ec718df81c9208877f7475d038ac27a400958fec278d975839e33643 + languageName: node + linkType: hard + +"langium@npm:3.3.1": + version: 3.3.1 + resolution: "langium@npm:3.3.1" + dependencies: + chevrotain: ~11.0.3 + chevrotain-allstar: ~0.3.0 + vscode-languageserver: ~9.0.1 + vscode-languageserver-textdocument: ~1.0.11 + vscode-uri: ~3.0.8 + checksum: b5fcf1cd8d9e8fd9f79425afae5926546f57a30506be20cf7638880a01b2b04ccfe1cd5cae599a7733ad4d38af0bf2ed9bd9e1a95cc5f3de1725628fa7883446 + languageName: node + linkType: hard + +"launch-editor@npm:^2.6.1": + version: 2.12.0 + resolution: "launch-editor@npm:2.12.0" + dependencies: + picocolors: ^1.1.1 + shell-quote: ^1.8.3 + checksum: b1aa1b92ef4e720d1edd7f80affb90b2fa1cc2c41641cf80158940698c18a4b6a67e2a7cb060547712e858f0ec1a7c8c39f605e0eb299f516a6184f4e680ffc8 + languageName: node + linkType: hard + +"layout-base@npm:^1.0.0": + version: 1.0.2 + resolution: "layout-base@npm:1.0.2" + checksum: e4c312765ac4fa13b49c940e701461309c7a0aa07f784f81d31f626b945dced90a8abf83222388a5af16b7074271f745501a90ef5a3af676abb2e7eb16d55b2e + languageName: node + linkType: hard + +"layout-base@npm:^2.0.0": + version: 2.0.1 + resolution: "layout-base@npm:2.0.1" + checksum: ef93baf044f67c3680f4f3a6d628bf4c7faba0f70f3e0abb16e4811bed087045208560347ca749e123d169cbf872505ad84e11fb21b0be925997227e042c7f43 + languageName: node + linkType: hard + +"lerna@npm:^7.1.4": + version: 7.4.2 + resolution: "lerna@npm:7.4.2" + dependencies: + "@lerna/child-process": 7.4.2 + "@lerna/create": 7.4.2 + "@npmcli/run-script": 6.0.2 + "@nx/devkit": ">=16.5.1 < 17" + "@octokit/plugin-enterprise-rest": 6.0.1 + "@octokit/rest": 19.0.11 + byte-size: 8.1.1 + chalk: 4.1.0 + clone-deep: 4.0.1 + cmd-shim: 6.0.1 + columnify: 1.6.0 + conventional-changelog-angular: 7.0.0 + conventional-changelog-core: 5.0.1 + conventional-recommended-bump: 7.0.1 + cosmiconfig: ^8.2.0 + dedent: 0.7.0 + envinfo: 7.8.1 + execa: 5.0.0 + fs-extra: ^11.1.1 + get-port: 5.1.1 + get-stream: 6.0.0 + git-url-parse: 13.1.0 + glob-parent: 5.1.2 + globby: 11.1.0 + graceful-fs: 4.2.11 + has-unicode: 2.0.1 + import-local: 3.1.0 + ini: ^1.3.8 + init-package-json: 5.0.0 + inquirer: ^8.2.4 + is-ci: 3.0.1 + is-stream: 2.0.0 + jest-diff: ">=29.4.3 < 30" + js-yaml: 4.1.0 + libnpmaccess: 7.0.2 + libnpmpublish: 7.3.0 + load-json-file: 6.2.0 + lodash: ^4.17.21 + make-dir: 4.0.0 + minimatch: 3.0.5 + multimatch: 5.0.0 + node-fetch: 2.6.7 + npm-package-arg: 8.1.1 + npm-packlist: 5.1.1 + npm-registry-fetch: ^14.0.5 + npmlog: ^6.0.2 + nx: ">=16.5.1 < 17" + p-map: 4.0.0 + p-map-series: 2.1.0 + p-pipe: 3.1.0 + p-queue: 6.6.2 + p-reduce: 2.1.0 + p-waterfall: 2.1.1 + pacote: ^15.2.0 + pify: 5.0.0 + read-cmd-shim: 4.0.0 + read-package-json: 6.0.4 + resolve-from: 5.0.0 + rimraf: ^4.4.1 + semver: ^7.3.8 + signal-exit: 3.0.7 + slash: 3.0.0 + ssri: ^9.0.1 + strong-log-transformer: 2.1.0 + tar: 6.1.11 + temp-dir: 1.0.0 + typescript: ">=3 < 6" + upath: 2.0.1 + uuid: ^9.0.0 + validate-npm-package-license: 3.0.4 + validate-npm-package-name: 5.0.0 + write-file-atomic: 5.0.1 + write-pkg: 4.0.0 + yargs: 16.2.0 + yargs-parser: 20.2.4 + bin: + lerna: dist/cli.js + checksum: c53425005809f6eac967a9b09753cc4fe802023df7da2c14217f25e8ba33615d18fb9bd45e09cb27123ad00e143a0420a7be308632cb2a431dfc1f6ef655ab73 + 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.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: 0475bed3d559eeca7e8cae5cf3f2afe1eb787e286659063f82f3b53890d2e15ad913054b43893c626b75a6c887f193e90ed7ed314200606c220201c50abae9de + languageName: node + linkType: hard + +"libnpmaccess@npm:7.0.2": + version: 7.0.2 + resolution: "libnpmaccess@npm:7.0.2" + dependencies: + npm-package-arg: ^10.1.0 + npm-registry-fetch: ^14.0.3 + checksum: 73d49f39391173276c46c12e32f503709338efd867d255d062ae9bc9e9f464d61240747f42bdd6dc6003a5dc275a27352ebfc11ed4cb424091463f302d823f23 + languageName: node + linkType: hard + +"libnpmpublish@npm:7.3.0": + version: 7.3.0 + resolution: "libnpmpublish@npm:7.3.0" + dependencies: + ci-info: ^3.6.1 + normalize-package-data: ^5.0.0 + npm-package-arg: ^10.1.0 + npm-registry-fetch: ^14.0.3 + proc-log: ^3.0.0 + semver: ^7.3.7 + sigstore: ^1.4.0 + ssri: ^10.0.1 + checksum: 03bedb65eb2293cfe5039f925ec1041deea698c5ac802bb74f6a0d44ee70529c38c32eea7c722f3a1f1219b54314021ad7f4764f93b66d619bea62ce0759faa0 + languageName: node + linkType: hard + +"license-webpack-plugin@npm:^4.0.2": + version: 4.0.2 + resolution: "license-webpack-plugin@npm:4.0.2" + dependencies: + webpack-sources: ^3.0.0 + peerDependenciesMeta: + webpack: + optional: true + webpack-sources: + optional: true + checksum: e88ebdb9c8bdfc0926dd7211d7fe2ee8697a44bb00a96bb5e6ca844b6acb7d24dd54eb17ec485e2e0140c3cc86709d1c2bd46e091ab52af076e1e421054c8322 + 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 + +"lines-and-columns@npm:~2.0.3": + version: 2.0.3 + resolution: "lines-and-columns@npm:2.0.3" + checksum: 5955363dfd7d3d7c476d002eb47944dbe0310d57959e2112dce004c0dc76cecfd479cf8c098fd479ff344acdf04ee0e82b455462a26492231ac152f6c48d17a1 + languageName: node + linkType: hard + +"load-json-file@npm:6.2.0": + version: 6.2.0 + resolution: "load-json-file@npm:6.2.0" + dependencies: + graceful-fs: ^4.1.15 + parse-json: ^5.0.0 + strip-bom: ^4.0.0 + type-fest: ^0.6.0 + checksum: 4429e430ebb99375fc7cd936348e4f7ba729486080ced4272091c1e386a7f5f738ea3337d8ffd4b01c2f5bc3ddde92f2c780045b66838fe98bdb79f901884643 + 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-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 + +"local-pkg@npm:^1.1.1": + version: 1.1.2 + resolution: "local-pkg@npm:1.1.2" + dependencies: + mlly: ^1.7.4 + pkg-types: ^2.3.0 + quansync: ^0.2.11 + checksum: 69ee8af3236a5f65e17cdcc1e835167d1ff661be42735a39c5d0a2e91252744835a2cb3184a02cbb4275f299955a7e3c4bf7711e9e7b81dd8e0d39bb46375034 + languageName: node + linkType: hard + +"locate-path@npm:^2.0.0": + version: 2.0.0 + resolution: "locate-path@npm:2.0.0" + dependencies: + p-locate: ^2.0.0 + path-exists: ^3.0.0 + checksum: 02d581edbbbb0fa292e28d96b7de36b5b62c2fa8b5a7e82638ebb33afa74284acf022d3b1e9ae10e3ffb7658fbc49163fcd5e76e7d1baaa7801c3e05a81da755 + 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 + +"lockfile@npm:1.0.4": + version: 1.0.4 + resolution: "lockfile@npm:1.0.4" + dependencies: + signal-exit: ^3.0.2 + checksum: 8de35aace8acbe883cbca3cc3959e88904d57c79dccd4afffc64aea8f9cf7b4c63598d08b8add66fbf381f8fb3ce4fd4c518cd231c797c266b6c790eb7b33abc + languageName: node + linkType: hard + +"lodash-es@npm:4.17.21, lodash-es@npm:^4.17.21": + version: 4.17.21 + resolution: "lodash-es@npm:4.17.21" + checksum: 05cbffad6e2adbb331a4e16fbd826e7faee403a1a04873b82b42c0f22090f280839f85b95393f487c1303c8a3d2a010048bf06151a6cbe03eee4d388fb0a12d2 + languageName: node + linkType: hard + +"lodash.curry@npm:^4.1.1": + version: 4.1.1 + resolution: "lodash.curry@npm:4.1.1" + checksum: 9192b70fe7df4d1ff780c0260bee271afa9168c93fe4fa24bc861900240531b59781b5fdaadf4644fea8f4fbcd96f0700539ab294b579ffc1022c6c15dcc462a + 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.flatten@npm:^4.4.0": + version: 4.4.0 + resolution: "lodash.flatten@npm:4.4.0" + checksum: 0ac34a393d4b795d4b7421153d27c13ae67e08786c9cbb60ff5b732210d46f833598eee3fb3844bb10070e8488efe390ea53bb567377e0cb47e9e630bf0811cb + languageName: node + linkType: hard + +"lodash.includes@npm:^4.3.0": + version: 4.3.0 + resolution: "lodash.includes@npm:4.3.0" + checksum: 71092c130515a67ab3bd928f57f6018434797c94def7f46aafa417771e455ce3a4834889f4267b17887d7f75297dfabd96231bf704fd2b8c5096dc4a913568b6 + languageName: node + linkType: hard + +"lodash.invokemap@npm:^4.6.0": + version: 4.6.0 + resolution: "lodash.invokemap@npm:4.6.0" + checksum: 646ceebbefbcb6da301f8c2868254680fd0bcdc6ada470495d9ae49c9c32938829c1b38a38c95d0258409a9655f85db404b16e648381c7450b7ed3d9c52d8808 + languageName: node + linkType: hard + +"lodash.isboolean@npm:^3.0.3": + version: 3.0.3 + resolution: "lodash.isboolean@npm:3.0.3" + checksum: b70068b4a8b8837912b54052557b21fc4774174e3512ed3c5b94621e5aff5eb6c68089d0a386b7e801d679cd105d2e35417978a5e99071750aa2ed90bffd0250 + languageName: node + linkType: hard + +"lodash.isinteger@npm:^4.0.4": + version: 4.0.4 + resolution: "lodash.isinteger@npm:4.0.4" + checksum: 6034821b3fc61a2ffc34e7d5644bb50c5fd8f1c0121c554c21ac271911ee0c0502274852845005f8651d51e199ee2e0cfebfe40aaa49c7fe617f603a8a0b1691 + languageName: node + linkType: hard + +"lodash.ismatch@npm:^4.4.0": + version: 4.4.0 + resolution: "lodash.ismatch@npm:4.4.0" + checksum: a393917578842705c7fc1a30fb80613d1ac42d20b67eb26a2a6004d6d61ee90b419f9eb320508ddcd608e328d91eeaa2651411727eaa9a12534ed6ccb02fc705 + languageName: node + linkType: hard + +"lodash.isnumber@npm:^3.0.3": + version: 3.0.3 + resolution: "lodash.isnumber@npm:3.0.3" + checksum: 913784275b565346255e6ae6a6e30b760a0da70abc29f3e1f409081585875105138cda4a429ff02577e1bc0a7ae2a90e0a3079a37f3a04c3d6c5aaa532f4cab2 + languageName: node + linkType: hard + +"lodash.isplainobject@npm:^4.0.6": + version: 4.0.6 + resolution: "lodash.isplainobject@npm:4.0.6" + checksum: 29c6351f281e0d9a1d58f1a4c8f4400924b4c79f18dfc4613624d7d54784df07efaff97c1ff2659f3e085ecf4fff493300adc4837553104cef2634110b0d5337 + languageName: node + linkType: hard + +"lodash.isstring@npm:^4.0.1": + version: 4.0.1 + resolution: "lodash.isstring@npm:4.0.1" + checksum: eaac87ae9636848af08021083d796e2eea3d02e80082ab8a9955309569cb3a463ce97fd281d7dc119e402b2e7d8c54a23914b15d2fc7fff56461511dc8937ba0 + 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.once@npm:^4.0.0": + version: 4.1.1 + resolution: "lodash.once@npm:4.1.1" + checksum: d768fa9f9b4e1dc6453be99b753906f58990e0c45e7b2ca5a3b40a33111e5d17f6edf2f768786e2716af90a8e78f8f91431ab8435f761fef00f9b0c256f6d245 + languageName: node + linkType: hard + +"lodash.pullall@npm:^4.2.0": + version: 4.2.0 + resolution: "lodash.pullall@npm:4.2.0" + checksum: 7a5fbaedf186ec197ce1e0b9ba1d88a89773ebaf6a8291c7d273838cac59cb3b339cf36ef00e94172862ee84d2304c38face161846f08f5581d0553dcbdcd090 + languageName: node + linkType: hard + +"lodash.uniqby@npm:^4.7.0": + version: 4.7.0 + resolution: "lodash.uniqby@npm:4.7.0" + checksum: 659264545a95726d1493123345aad8cbf56e17810fa9a0b029852c6d42bc80517696af09d99b23bef1845d10d95e01b8b4a1da578f22aeba7a30d3e0022a4938 + languageName: node + linkType: hard + +"lodash@npm:4, lodash@npm:4.17.21, lodash@npm:^4.17.15, 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 + +"log-symbols@npm:^4.1.0": + version: 4.1.0 + resolution: "log-symbols@npm:4.1.0" + dependencies: + chalk: ^4.1.0 + is-unicode-supported: ^0.1.0 + checksum: fce1497b3135a0198803f9f07464165e9eb83ed02ceb2273930a6f8a508951178d8cf4f0378e9d28300a2ed2bc49050995d2bd5f53ab716bb15ac84d58c6ef74 + 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 + +"lowdb@npm:1.0.0": + version: 1.0.0 + resolution: "lowdb@npm:1.0.0" + dependencies: + graceful-fs: ^4.1.3 + is-promise: ^2.1.0 + lodash: 4 + pify: ^3.0.0 + steno: ^0.4.1 + checksum: 7ae89e3d6e00963129f72c4d4e1fe8e4cda5c08a46b4f4e525109483147e799df90c07d95aeced1c270cc10f4a24c6660fe1601cc4b3a6e2c3f922ad64517eab + languageName: node + linkType: hard + +"lower-case@npm:^2.0.2": + version: 2.0.2 + resolution: "lower-case@npm:2.0.2" + dependencies: + tslib: ^2.0.3 + checksum: 83a0a5f159ad7614bee8bf976b96275f3954335a84fad2696927f609ddae902802c4f3312d86668722e668bef41400254807e1d3a7f2e8c3eede79691aa1f010 + languageName: node + linkType: hard + +"lowercase-keys@npm:^2.0.0": + version: 2.0.0 + resolution: "lowercase-keys@npm:2.0.0" + checksum: 24d7ebd56ccdf15ff529ca9e08863f3c54b0b9d1edb97a3ae1af34940ae666c01a1e6d200707bce730a8ef76cb57cc10e65f245ecaaf7e6bc8639f2fb460ac23 + languageName: node + linkType: hard + +"lru-cache@npm:7.18.3, lru-cache@npm:^7.4.4, lru-cache@npm:^7.5.1, 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:^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:^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, 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-dir@npm:^2.1.0": + version: 2.1.0 + resolution: "make-dir@npm:2.1.0" + dependencies: + pify: ^4.0.1 + semver: ^5.6.0 + checksum: 043548886bfaf1820323c6a2997e6d2fa51ccc2586ac14e6f14634f7458b4db2daf15f8c310e2a0abd3e0cddc64df1890d8fc7263033602c47bb12cbfcf86aab + languageName: node + linkType: hard + +"make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": + version: 3.1.0 + resolution: "make-dir@npm:3.1.0" + dependencies: + semver: ^6.0.0 + checksum: 484200020ab5a1fdf12f393fe5f385fc8e4378824c940fba1729dcd198ae4ff24867bc7a5646331e50cead8abff5d9270c456314386e629acec6dff4b8016b78 + 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.0, make-fetch-happen@npm:^11.0.1, make-fetch-happen@npm:^11.0.3, make-fetch-happen@npm:^11.1.1": + 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.0.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.7.4 + resolution: "markdown-to-jsx@npm:7.7.4" + peerDependencies: + react: ">= 0.14.0" + checksum: e7aaef2a85a7825c5f4cbf394fbd9ed51c45a29288e7b7e88cde63eef3f233448ecf3b9367f9eba2a5eea35db21b7ec06f96ac4a4c035643059c065ed4e6083b + languageName: node + linkType: hard + +"marked-gfm-heading-id@npm:^4.1.2": + version: 4.1.2 + resolution: "marked-gfm-heading-id@npm:4.1.2" + dependencies: + github-slugger: ^2.0.0 + peerDependencies: + marked: ">=13 <17" + checksum: 47020ae9e4433371a6059fecb6698044b95a07232904c59cc2ca52995ade692724cddc2c0ee9c3db42f65ed37ceb6957afce3d9bd0d30b7d17afba45c03cdd1b + languageName: node + linkType: hard + +"marked-mangle@npm:^1.1.11": + version: 1.1.11 + resolution: "marked-mangle@npm:1.1.11" + peerDependencies: + marked: ">=4 <17" + checksum: e2872cbe62dc60347eaef2494049a3fb65bcef3f1097407dd8e3f946856085d3ce05b516ba0d2307cbf91019fd38ad25704200c9dc601a0da29d64c76c803027 + languageName: node + linkType: hard + +"marked@npm:^16.2.1": + version: 16.3.0 + resolution: "marked@npm:16.3.0" + bin: + marked: bin/marked.js + checksum: a20056f643144552a0609d320ebf9fc080eecd840a821e3e315f75f8d306ce083ec62297f7a64fc60bfb073e74a96310a599376349dc26782b684651334dc95a + languageName: node + linkType: hard + +"math-intrinsics@npm:^1.1.0": + version: 1.1.0 + resolution: "math-intrinsics@npm:1.1.0" + checksum: 0e513b29d120f478c85a70f49da0b8b19bc638975eca466f2eeae0071f3ad00454c621bf66e16dd435896c208e719fc91ad79bbfba4e400fe0b372e7c1c9c9a2 + languageName: node + linkType: hard + +"mathjax-full@npm:^3.2.2": + version: 3.2.2 + resolution: "mathjax-full@npm:3.2.2" + dependencies: + esm: ^3.2.25 + mhchemparser: ^4.1.0 + mj-context-menu: ^0.6.1 + speech-rule-engine: ^4.0.6 + checksum: 6fbccb9338e1fbf686202d924666d79ac9eb658157c1c8102ba018672188978c4cacfb1b6f65adf7d2d51dc79535ff3e32ba86b15e66d3011dda2ab99562d90d + languageName: node + linkType: hard + +"media-typer@npm:0.3.0": + version: 0.3.0 + resolution: "media-typer@npm:0.3.0" + checksum: af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba1 + languageName: node + linkType: hard + +"memfs@npm:^4.43.1": + version: 4.51.1 + resolution: "memfs@npm:4.51.1" + dependencies: + "@jsonjoy.com/json-pack": ^1.11.0 + "@jsonjoy.com/util": ^1.9.0 + glob-to-regex.js: ^1.0.1 + thingies: ^2.5.0 + tree-dump: ^1.0.3 + tslib: ^2.0.0 + checksum: 7ace7ce363bd6683a1c3bca07b57049537692233252557bbc341332e51e62ec88c0693dd957f113b830983888899b661a457ba4be2709ba9b03b59b77cdec018 + languageName: node + linkType: hard + +"memoize-one@npm:^4.0.0": + version: 4.0.3 + resolution: "memoize-one@npm:4.0.3" + checksum: addd18c046542f57440ba70bf8ebd48663d17626cade681f777522ef70900a87ec72c5041bed8ece4f6d40a2cb58803bae388b50a4b740d64f36bcda20c147b7 + 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:^8.1.2": + version: 8.1.2 + resolution: "meow@npm:8.1.2" + dependencies: + "@types/minimist": ^1.2.0 + camelcase-keys: ^6.2.2 + decamelize-keys: ^1.1.0 + hard-rejection: ^2.1.0 + minimist-options: 4.1.0 + normalize-package-data: ^3.0.0 + read-pkg-up: ^7.0.1 + redent: ^3.0.0 + trim-newlines: ^3.0.0 + type-fest: ^0.18.0 + yargs-parser: ^20.2.3 + checksum: bc23bf1b4423ef6a821dff9734406bce4b91ea257e7f10a8b7f896f45b59649f07adc0926e2917eacd8cf1df9e4cd89c77623cf63dfd0f8bf54de07a32ee5a85 + languageName: node + linkType: hard + +"merge-descriptors@npm:1.0.3": + version: 1.0.3 + resolution: "merge-descriptors@npm:1.0.3" + checksum: 52117adbe0313d5defa771c9993fe081e2d2df9b840597e966aadafde04ae8d0e3da46bac7ca4efc37d4d2b839436582659cd49c6a43eacb3fe3050896a105d1 + 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.2.3, 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 + +"mermaid@npm:^11.12.1": + version: 11.12.1 + resolution: "mermaid@npm:11.12.1" + dependencies: + "@braintree/sanitize-url": ^7.1.1 + "@iconify/utils": ^3.0.1 + "@mermaid-js/parser": ^0.6.3 + "@types/d3": ^7.4.3 + cytoscape: ^3.29.3 + cytoscape-cose-bilkent: ^4.1.0 + cytoscape-fcose: ^2.2.0 + d3: ^7.9.0 + d3-sankey: ^0.12.3 + dagre-d3-es: 7.0.13 + dayjs: ^1.11.18 + dompurify: ^3.2.5 + katex: ^0.16.22 + khroma: ^2.1.0 + lodash-es: ^4.17.21 + marked: ^16.2.1 + roughjs: ^4.6.6 + stylis: ^4.3.6 + ts-dedent: ^2.2.0 + uuid: ^11.1.0 + checksum: db20ce808562e040c311c810f40c0fdcfe566ebc80df5b1cd47699bcd5d00369e0b3884269e024b1e479eb4ab292cc855efa6850211d4c4de3bb704a810eb2fd + languageName: node + linkType: hard + +"methods@npm:~1.1.2": + version: 1.1.2 + resolution: "methods@npm:1.1.2" + checksum: 0917ff4041fa8e2f2fda5425a955fe16ca411591fbd123c0d722fcf02b73971ed6f764d85f0a6f547ce49ee0221ce2c19a5fa692157931cecb422984f1dcd13a + languageName: node + linkType: hard + +"mhchemparser@npm:^4.1.0": + version: 4.2.1 + resolution: "mhchemparser@npm:4.2.1" + checksum: 6dd7e3926befc74d26cf7b44b9e5ff7295e142bffc48a60bd225d5a30d525354afb70d23fc4fdb8f46178099ab98a66a57a6131dcb0f410264cfd2b9ad4af4b7 + languageName: node + linkType: hard + +"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4": + 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, mime-db@npm:>= 1.43.0 < 2": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f + languageName: node + linkType: hard + +"mime-db@npm:^1.54.0": + version: 1.54.0 + resolution: "mime-db@npm:1.54.0" + checksum: e99aaf2f23f5bd607deb08c83faba5dd25cf2fec90a7cc5b92d8260867ee08dab65312e1a589e60093dc7796d41e5fae013268418482f1db4c7d52d0a0960ac9 + languageName: node + linkType: hard + +"mime-types@npm:^2.1.12, mime-types@npm:~2.1.17, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: 1.52.0 + checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 + languageName: node + linkType: hard + +"mime-types@npm:^3.0.1": + version: 3.0.2 + resolution: "mime-types@npm:3.0.2" + dependencies: + mime-db: ^1.54.0 + checksum: 70b74794f408419e4b6a8e3c93ccbed79b6a6053973a3957c5cc04ff4ad8d259f0267da179e3ecae34c3edfb4bfd7528db23a101e32d21ad8e196178c8b7b75a + languageName: node + linkType: hard + +"mime@npm:1.6.0": + version: 1.6.0 + resolution: "mime@npm:1.6.0" + bin: + mime: cli.js + checksum: fef25e39263e6d207580bdc629f8872a3f9772c923c7f8c7e793175cee22777bbe8bba95e5d509a40aaa292d8974514ce634ae35769faa45f22d17edda5e8557 + languageName: node + linkType: hard + +"mime@npm:2.6.0": + version: 2.6.0 + resolution: "mime@npm:2.6.0" + bin: + mime: cli.js + checksum: 1497ba7b9f6960694268a557eae24b743fd2923da46ec392b042469f4b901721ba0adcf8b0d3c2677839d0e243b209d76e5edcbd09cfdeffa2dfb6bb4df4b862 + languageName: node + linkType: hard + +"mime@npm:3.0.0": + version: 3.0.0 + resolution: "mime@npm:3.0.0" + bin: + mime: cli.js + checksum: f43f9b7bfa64534e6b05bd6062961681aeb406a5b53673b53b683f27fcc4e739989941836a355eef831f4478923651ecc739f4a5f6e20a76487b432bfd4db928 + 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-response@npm:^1.0.0": + version: 1.0.1 + resolution: "mimic-response@npm:1.0.1" + checksum: 034c78753b0e622bc03c983663b1cdf66d03861050e0c8606563d149bc2b02d63f62ce4d32be4ab50d0553ae0ffe647fc34d1f5281184c6e1e8cf4d85e8d9823 + languageName: node + linkType: hard + +"mimic-response@npm:^3.1.0": + version: 3.1.0 + resolution: "mimic-response@npm:3.1.0" + checksum: 25739fee32c17f433626bf19f016df9036b75b3d84a3046c7d156e72ec963dd29d7fc8a302f55a3d6c5a4ff24259676b15d915aad6480815a969ff2ec0836867 + languageName: node + linkType: hard + +"min-indent@npm:^1.0.0": + version: 1.0.1 + resolution: "min-indent@npm:1.0.1" + checksum: bfc6dd03c5eaf623a4963ebd94d087f6f4bbbfd8c41329a7f09706b0cb66969c4ddd336abeb587bc44bc6f08e13bf90f0b374f9d71f9f01e04adc2cd6f083ef1 + 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 + +"minimalistic-assert@npm:^1.0.0": + version: 1.0.1 + resolution: "minimalistic-assert@npm:1.0.1" + checksum: cc7974a9268fbf130fb055aff76700d7e2d8be5f761fb5c60318d0ed010d839ab3661a533ad29a5d37653133385204c503bfac995aaa4236f4e847461ea32ba7 + languageName: node + linkType: hard + +"minimatch@npm:2 || 3, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, 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:3.0.5, minimatch@npm:~3.0.4": + version: 3.0.5 + resolution: "minimatch@npm:3.0.5" + dependencies: + brace-expansion: ^1.1.7 + checksum: a3b84b426eafca947741b864502cee02860c4e7b145de11ad98775cfcf3066fef422583bc0ffce0952ddf4750c1ccf4220b1556430d4ce10139f66247d87d69e + languageName: node + linkType: hard + +"minimatch@npm:7.4.6": + version: 7.4.6 + resolution: "minimatch@npm:7.4.6" + dependencies: + brace-expansion: ^2.0.1 + checksum: 1a6c8d22618df9d2a88aabeef1de5622eb7b558e9f8010be791cb6b0fa6e102d39b11c28d75b855a1e377b12edc7db8ff12a99c20353441caa6a05e78deb5da9 + languageName: node + linkType: hard + +"minimatch@npm:^5.0.1": + version: 5.1.6 + resolution: "minimatch@npm:5.1.6" + dependencies: + brace-expansion: ^2.0.1 + checksum: 7564208ef81d7065a370f788d337cd80a689e981042cb9a1d0e6580b6c6a8c9279eba80010516e258835a988363f99f54a6f711a315089b8b42694f5da9d0d77 + languageName: node + linkType: hard + +"minimatch@npm:^8.0.2": + version: 8.0.4 + resolution: "minimatch@npm:8.0.4" + dependencies: + brace-expansion: ^2.0.1 + checksum: 2e46cffb86bacbc524ad45a6426f338920c529dd13f3a732cc2cf7618988ee1aae88df4ca28983285aca9e0f45222019ac2d14ebd17c1edadd2ee12221ab801a + languageName: node + linkType: hard + +"minimatch@npm:^9.0.0, 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.5, minimist@npm:^1.2.6, 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-json-stream@npm:^1.0.1": + version: 1.0.1 + resolution: "minipass-json-stream@npm:1.0.1" + dependencies: + jsonparse: ^1.3.1 + minipass: ^3.0.0 + checksum: 791b696a27d1074c4c08dab1bf5a9f3201145c2933e428f45d880467bce12c60de4703203d2928de4b162d0ae77b0bb4b55f96cb846645800aa0eb4919b3e796 + 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, minipass@npm:^3.1.1": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: ^4.0.0 + checksum: a30d083c8054cee83cdcdc97f97e4641a3f58ae743970457b1489ce38ee1167b3aaf7d815cd39ec7a99b9c40397fd4f686e83750e73e652b21cb516f6d845e48 + languageName: node + linkType: hard + +"minipass@npm:^4.2.4": + version: 4.2.8 + resolution: "minipass@npm:4.2.8" + checksum: 7f4914d5295a9a30807cae5227a37a926e6d910c03f315930fde52332cf0575dfbc20295318f91f0baf0e6bb11a6f668e30cde8027dea7a11b9d159867a3c830 + 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.4 + resolution: "minipass@npm:7.0.4" + checksum: 87585e258b9488caf2e7acea242fd7856bbe9a2c84a7807643513a338d66f368c7d518200ad7b70a508664d408aa000517647b2930c259a8b1f9f0984f344a21 + 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 + +"mj-context-menu@npm:^0.6.1": + version: 0.6.1 + resolution: "mj-context-menu@npm:0.6.1" + checksum: 7a036026538662cac9619b760fade98681618c3ddf417cb36eddb7c28a937baf257c56fd0b6318738419e738ba01a00bcb3790b324885fd6edbae03fb0a2c986 + languageName: node + linkType: hard + +"mkdirp@npm:1.0.4, 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 + +"mkdirp@npm:~0.5.1": + version: 0.5.6 + resolution: "mkdirp@npm:0.5.6" + dependencies: + minimist: ^1.2.6 + bin: + mkdirp: bin/cmd.js + checksum: 0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 + languageName: node + linkType: hard + +"mlly@npm:^1.7.4": + version: 1.7.4 + resolution: "mlly@npm:1.7.4" + dependencies: + acorn: ^8.14.0 + pathe: ^2.0.1 + pkg-types: ^1.3.0 + ufo: ^1.5.4 + checksum: a290da940d208f9d77ceed7ed1db3397e37ff083d28bf75e3c92097a8e58967a2b2e2bea33fdcdc63005e2987854cd081dd0621461d89eee4b61c977b5fa020c + languageName: node + linkType: hard + +"modify-values@npm:^1.0.1": + version: 1.0.1 + resolution: "modify-values@npm:1.0.1" + checksum: 8296610c608bc97b03c2cf889c6cdf4517e32fa2d836440096374c2209f6b7b3e256c209493a0b32584b9cb32d528e99d0dd19dcd9a14d2d915a312d391cc7e9 + languageName: node + linkType: hard + +"mrmime@npm:^1.0.0": + version: 1.0.1 + resolution: "mrmime@npm:1.0.1" + checksum: cc979da44bbbffebaa8eaf7a45117e851f2d4cb46a3ada6ceb78130466a04c15a0de9a9ce1c8b8ba6f6e1b8618866b1352992bf1757d241c0ddca558b9f28a77 + 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.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d + languageName: node + linkType: hard + +"multicast-dns@npm:^7.2.5": + version: 7.2.5 + resolution: "multicast-dns@npm:7.2.5" + dependencies: + dns-packet: ^5.2.2 + thunky: ^1.0.2 + bin: + multicast-dns: cli.js + checksum: 00b8a57df152d4cd0297946320a94b7c3cdf75a46a2247f32f958a8927dea42958177f9b7fdae69fab2e4e033fb3416881af1f5e9055a3e1542888767139e2fb + languageName: node + linkType: hard + +"multimatch@npm:5.0.0": + version: 5.0.0 + resolution: "multimatch@npm:5.0.0" + dependencies: + "@types/minimatch": ^3.0.3 + array-differ: ^3.0.0 + array-union: ^2.1.0 + arrify: ^2.0.1 + minimatch: ^3.0.4 + checksum: 82c8030a53af965cab48da22f1b0f894ef99e16ee680dabdfbd38d2dfacc3c8208c475203d747afd9e26db44118ed0221d5a0d65268c864f06d6efc7ac6df812 + languageName: node + linkType: hard + +"mute-stream@npm:0.0.8": + version: 0.0.8 + resolution: "mute-stream@npm:0.0.8" + checksum: ff48d251fc3f827e5b1206cda0ffdaec885e56057ee86a3155e1951bc940fd5f33531774b1cc8414d7668c10a8907f863f6561875ee6e8768931a62121a531a1 + languageName: node + linkType: hard + +"mute-stream@npm:1.0.0, mute-stream@npm:^1.0.0, mute-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "mute-stream@npm:1.0.0" + checksum: 36fc968b0e9c9c63029d4f9dc63911950a3bdf55c9a87f58d3a266289b67180201cade911e7699f8b2fa596b34c9db43dad37649e3f7fdd13c3bb9edb0017ee7 + languageName: node + linkType: hard + +"mv@npm:2.1.1": + version: 2.1.1 + resolution: "mv@npm:2.1.1" + dependencies: + mkdirp: ~0.5.1 + ncp: ~2.0.0 + rimraf: ~2.4.0 + checksum: 59d4b5ebff6c265b452d6630ae8873d573c82e36fdc1ed9c34c7901a0bf2d3d357022f49db8e9bded127b743f709c7ef7befec249a2b3967578d649a8029aa06 + languageName: node + linkType: hard + +"nanoid@npm:^3.3.6": + version: 3.3.9 + resolution: "nanoid@npm:3.3.9" + bin: + nanoid: bin/nanoid.cjs + checksum: 42b1dc3e05d6d4f846e65538dd6fbdf78419d8ef60c531f0faf3264cc90600041ebb53c4276013947e03dc3c9a1ac1fce5bb9e1c3a634db608e95349d7e9d3b6 + languageName: node + linkType: hard + +"natural-compare-lite@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare-lite@npm:1.4.0" + checksum: 5222ac3986a2b78dd6069ac62cbb52a7bf8ffc90d972ab76dfe7b01892485d229530ed20d0c62e79a6b363a663b273db3bde195a1358ce9e5f779d4453887225 + 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 + +"ncp@npm:~2.0.0": + version: 2.0.0 + resolution: "ncp@npm:2.0.0" + bin: + ncp: ./bin/ncp + checksum: ea9b19221da1d1c5529bdb9f8e85c9d191d156bcaae408cce5e415b7fbfd8744c288e792bd7faf1fe3b70fd44c74e22f0d43c39b209bc7ac1fb8016f70793a16 + 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 + +"negotiator@npm:^0.6.3, negotiator@npm:~0.6.4": + version: 0.6.4 + resolution: "negotiator@npm:0.6.4" + checksum: 7ded10aa02a0707d1d12a9973fdb5954f98547ca7beb60e31cb3a403cc6e8f11138db7a3b0128425cf836fc85d145ec4ce983b2bdf83dca436af879c2d683510 + 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 + +"no-case@npm:^3.0.4": + version: 3.0.4 + resolution: "no-case@npm:3.0.4" + dependencies: + lower-case: ^2.0.2 + tslib: ^2.0.3 + checksum: 0b2ebc113dfcf737d48dde49cfebf3ad2d82a8c3188e7100c6f375e30eafbef9e9124aadc3becef237b042fd5eb0aad2fd78669c20972d045bbe7fea8ba0be5c + languageName: node + linkType: hard + +"node-addon-api@npm:^3.2.1": + version: 3.2.1 + resolution: "node-addon-api@npm:3.2.1" + dependencies: + node-gyp: latest + checksum: 2369986bb0881ccd9ef6bacdf39550e07e089a9c8ede1cbc5fc7712d8e2faa4d50da0e487e333d4125f8c7a616c730131d1091676c9d499af1d74560756b4a18 + languageName: node + linkType: hard + +"node-fetch@npm:2.6.7, node-fetch@npm:^2.6.7, node-fetch@npm:cjs": + version: 2.6.7 + resolution: "node-fetch@npm:2.6.7" + dependencies: + whatwg-url: ^5.0.0 + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: 8d816ffd1ee22cab8301c7756ef04f3437f18dace86a1dae22cf81db8ef29c0bf6655f3215cb0cdb22b420b6fe141e64b26905e7f33f9377a7fa59135ea3e10b + languageName: node + linkType: hard + +"node-forge@npm:^1": + version: 1.3.3 + resolution: "node-forge@npm:1.3.3" + checksum: 045b650d61eeba57588744b7be4671044e83871e2c4dc5d4a38a8eb5af7e55fa790c93ba9db1d1ee14a567d25fde41e97a5132e076cff738622e0916c77b48d2 + languageName: node + linkType: hard + +"node-gyp-build@npm:^4.3.0": + version: 4.6.1 + resolution: "node-gyp-build@npm:4.6.1" + bin: + node-gyp-build: bin.js + node-gyp-build-optional: optional.js + node-gyp-build-test: build-test.js + checksum: c3676d337b36803bc7792e35bf7fdcda7cdcb7e289b8f9855a5535702a82498eb976842fefcf487258c58005ca32ce3d537fbed91280b04409161dcd7232a882 + languageName: node + linkType: hard + +"node-gyp@npm:^9.0.0, 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-machine-id@npm:1.1.12": + version: 1.1.12 + resolution: "node-machine-id@npm:1.1.12" + checksum: e23088a0fb4a77a1d6484b7f09a22992fd3e0054d4f2e427692b4c7081e6cf30118ba07b6113b6c89f1ce46fd26ec5ab1d76dcaf6c10317717889124511283a5 + 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, normalize-package-data@npm:^2.5.0": + 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.0, normalize-package-data@npm:^3.0.3": + 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-package-data@npm:^5.0.0": + version: 5.0.0 + resolution: "normalize-package-data@npm:5.0.0" + dependencies: + hosted-git-info: ^6.0.0 + is-core-module: ^2.8.1 + semver: ^7.3.5 + validate-npm-package-license: ^3.0.4 + checksum: a459f05eaf7c2b643c61234177f08e28064fde97da15800e3d3ac0404e28450d43ac46fc95fbf6407a9bf20af4c58505ad73458a912dc1517f8c1687b1d68c27 + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 + languageName: node + linkType: hard + +"normalize-url@npm:^6.0.1": + version: 6.1.0 + resolution: "normalize-url@npm:6.1.0" + checksum: 4a4944631173e7d521d6b80e4c85ccaeceb2870f315584fa30121f505a6dfd86439c5e3fdd8cd9e0e291290c41d0c3599f0cb12ab356722ed242584c30348e50 + languageName: node + linkType: hard + +"npm-bundled@npm:^1.1.2": + version: 1.1.2 + resolution: "npm-bundled@npm:1.1.2" + dependencies: + npm-normalize-package-bin: ^1.0.1 + checksum: 6e599155ef28d0b498622f47f1ba189dfbae05095a1ed17cb3a5babf961e965dd5eab621f0ec6f0a98de774e5836b8f5a5ee639010d64f42850a74acec3d4d09 + languageName: node + linkType: hard + +"npm-bundled@npm:^3.0.0": + version: 3.0.0 + resolution: "npm-bundled@npm:3.0.0" + dependencies: + npm-normalize-package-bin: ^3.0.0 + checksum: 110859c2d6dcd7941dac0932a29171cbde123060486a4b6e897aaf5e025abeb3d9ffcdfe9e9271992e6396b2986c2c534f1029a45a7c196f1257fa244305dbf8 + languageName: node + linkType: hard + +"npm-install-checks@npm:^6.0.0": + version: 6.3.0 + resolution: "npm-install-checks@npm:6.3.0" + dependencies: + semver: ^7.1.1 + checksum: 6c20dadb878a0d2f1f777405217b6b63af1299d0b43e556af9363ee6eefaa98a17dfb7b612a473a473e96faf7e789c58b221e0d8ffdc1d34903c4f71618df3b4 + languageName: node + linkType: hard + +"npm-normalize-package-bin@npm:^1.0.1": + version: 1.0.1 + resolution: "npm-normalize-package-bin@npm:1.0.1" + checksum: ae7f15155a1e3ace2653f12ddd1ee8eaa3c84452fdfbf2f1943e1de264e4b079c86645e2c55931a51a0a498cba31f70022a5219d5665fbcb221e99e58bc70122 + languageName: node + linkType: hard + +"npm-normalize-package-bin@npm:^3.0.0": + version: 3.0.1 + resolution: "npm-normalize-package-bin@npm:3.0.1" + checksum: de416d720ab22137a36292ff8a333af499ea0933ef2320a8c6f56a73b0f0448227fec4db5c890d702e26d21d04f271415eab6580b5546456861cc0c19498a4bf + languageName: node + linkType: hard + +"npm-package-arg@npm:8.1.1": + version: 8.1.1 + resolution: "npm-package-arg@npm:8.1.1" + dependencies: + hosted-git-info: ^3.0.6 + semver: ^7.0.0 + validate-npm-package-name: ^3.0.0 + checksum: 406c59f92d8fac5acbd1df62f4af8075e925af51131b6bc66245641ea71ddb0e60b3e2c56fafebd4e8ffc3ba0453e700a221a36a44740dc9f7488cec97ae4c55 + languageName: node + linkType: hard + +"npm-package-arg@npm:^10.0.0, npm-package-arg@npm:^10.1.0": + version: 10.1.0 + resolution: "npm-package-arg@npm:10.1.0" + dependencies: + hosted-git-info: ^6.0.0 + proc-log: ^3.0.0 + semver: ^7.3.5 + validate-npm-package-name: ^5.0.0 + checksum: 8fe4b6a742502345e4836ed42fdf26c544c9f75563c476c67044a481ada6e81f71b55462489c7e1899d516e4347150e58028036a90fa11d47e320bcc9365fd30 + languageName: node + linkType: hard + +"npm-packlist@npm:5.1.1": + version: 5.1.1 + resolution: "npm-packlist@npm:5.1.1" + dependencies: + glob: ^8.0.1 + ignore-walk: ^5.0.1 + npm-bundled: ^1.1.2 + npm-normalize-package-bin: ^1.0.1 + bin: + npm-packlist: bin/index.js + checksum: 28dab153744ceb4695b82a9032d14aa2bfb855d38344a09052673d07860a4d8725f808ed23996e6f2792c48e11f5d147632c159f798d2c24dac92b51a884f0c6 + languageName: node + linkType: hard + +"npm-packlist@npm:^7.0.0": + version: 7.0.4 + resolution: "npm-packlist@npm:7.0.4" + dependencies: + ignore-walk: ^6.0.0 + checksum: 5ffa1f8f0b32141a60a66713fa3ed03b8ee4800b1ed6b59194d03c3c85da88f3fc21e1de29b665f322678bae85198732b16aa76c0a7cb0e283f9e0db50752233 + languageName: node + linkType: hard + +"npm-pick-manifest@npm:^8.0.0": + version: 8.0.2 + resolution: "npm-pick-manifest@npm:8.0.2" + dependencies: + npm-install-checks: ^6.0.0 + npm-normalize-package-bin: ^3.0.0 + npm-package-arg: ^10.0.0 + semver: ^7.3.5 + checksum: c9f71b57351a3a241a7e56148332f2f341a09dff2a1b1f4ffb1517eac25f1888ac7fbce4939e522cbd533577448c307d05fff0c32430cc03c8c6179fac320cd4 + languageName: node + linkType: hard + +"npm-registry-fetch@npm:^14.0.0, npm-registry-fetch@npm:^14.0.3, npm-registry-fetch@npm:^14.0.5": + version: 14.0.5 + resolution: "npm-registry-fetch@npm:14.0.5" + dependencies: + make-fetch-happen: ^11.0.0 + minipass: ^5.0.0 + minipass-fetch: ^3.0.0 + minipass-json-stream: ^1.0.1 + minizlib: ^2.1.2 + npm-package-arg: ^10.0.0 + proc-log: ^3.0.0 + checksum: c63649642955b424bc1baaff5955027144af312ae117ba8c24829e74484f859482591fe89687c6597d83e930c8054463eef23020ac69146097a72cc62ff10986 + 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 + +"npmlog@npm:^6.0.0, npmlog@npm:^6.0.2": + 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 + +"nth-check@npm:^2.0.1": + version: 2.1.1 + resolution: "nth-check@npm:2.1.1" + dependencies: + boolbase: ^1.0.0 + checksum: 5afc3dafcd1573b08877ca8e6148c52abd565f1d06b1eb08caf982e3fa289a82f2cae697ffb55b5021e146d60443f1590a5d6b944844e944714a5b549675bcd3 + 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 + +"nx@npm:16.10.0, nx@npm:>=16.5.1 < 17": + version: 16.10.0 + resolution: "nx@npm:16.10.0" + dependencies: + "@nrwl/tao": 16.10.0 + "@nx/nx-darwin-arm64": 16.10.0 + "@nx/nx-darwin-x64": 16.10.0 + "@nx/nx-freebsd-x64": 16.10.0 + "@nx/nx-linux-arm-gnueabihf": 16.10.0 + "@nx/nx-linux-arm64-gnu": 16.10.0 + "@nx/nx-linux-arm64-musl": 16.10.0 + "@nx/nx-linux-x64-gnu": 16.10.0 + "@nx/nx-linux-x64-musl": 16.10.0 + "@nx/nx-win32-arm64-msvc": 16.10.0 + "@nx/nx-win32-x64-msvc": 16.10.0 + "@parcel/watcher": 2.0.4 + "@yarnpkg/lockfile": ^1.1.0 + "@yarnpkg/parsers": 3.0.0-rc.46 + "@zkochan/js-yaml": 0.0.6 + axios: ^1.0.0 + chalk: ^4.1.0 + cli-cursor: 3.1.0 + cli-spinners: 2.6.1 + cliui: ^8.0.1 + dotenv: ~16.3.1 + dotenv-expand: ~10.0.0 + enquirer: ~2.3.6 + figures: 3.2.0 + flat: ^5.0.2 + fs-extra: ^11.1.0 + glob: 7.1.4 + ignore: ^5.0.4 + jest-diff: ^29.4.1 + js-yaml: 4.1.0 + jsonc-parser: 3.2.0 + lines-and-columns: ~2.0.3 + minimatch: 3.0.5 + node-machine-id: 1.1.12 + npm-run-path: ^4.0.1 + open: ^8.4.0 + semver: 7.5.3 + string-width: ^4.2.3 + strong-log-transformer: ^2.1.0 + tar-stream: ~2.2.0 + tmp: ~0.2.1 + tsconfig-paths: ^4.1.2 + tslib: ^2.3.0 + v8-compile-cache: 2.3.0 + yargs: ^17.6.2 + yargs-parser: 21.1.1 + peerDependencies: + "@swc-node/register": ^1.6.7 + "@swc/core": ^1.3.85 + dependenciesMeta: + "@nx/nx-darwin-arm64": + optional: true + "@nx/nx-darwin-x64": + optional: true + "@nx/nx-freebsd-x64": + optional: true + "@nx/nx-linux-arm-gnueabihf": + optional: true + "@nx/nx-linux-arm64-gnu": + optional: true + "@nx/nx-linux-arm64-musl": + optional: true + "@nx/nx-linux-x64-gnu": + optional: true + "@nx/nx-linux-x64-musl": + optional: true + "@nx/nx-win32-arm64-msvc": + optional: true + "@nx/nx-win32-x64-msvc": + optional: true + peerDependenciesMeta: + "@swc-node/register": + optional: true + "@swc/core": + optional: true + bin: + nx: bin/nx.js + checksum: 961b290f65dba76cf6cda62377930ac70fb5546d2992fde19ab028c7b4c37b76fc14eaa89f1d071b95e6d701932a2fd77678849172115045fd835ef9758e93bb + languageName: node + linkType: hard + +"object-assign@npm:^4, 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.13.3": + version: 1.13.4 + resolution: "object-inspect@npm:1.13.4" + checksum: 582810c6a8d2ef988ea0a39e69e115a138dad8f42dd445383b394877e5816eb4268489f316a6f74ee9c4e0a984b3eab1028e3e79d62b1ed67c726661d55c7a8b + 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 + +"object.entries@npm:^1.1.6": + version: 1.1.7 + resolution: "object.entries@npm:1.1.7" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + checksum: da287d434e7e32989586cd734382364ba826a2527f2bc82e6acbf9f9bfafa35d51018b66ec02543ffdfa2a5ba4af2b6f1ca6e588c65030cb4fd9c67d6ced594c + languageName: node + linkType: hard + +"object.fromentries@npm:^2.0.6": + version: 2.0.7 + resolution: "object.fromentries@npm:2.0.7" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + checksum: 7341ce246e248b39a431b87a9ddd331ff52a454deb79afebc95609f94b1f8238966cf21f52188f2a353f0fdf83294f32f1ebf1f7826aae915ebad21fd0678065 + languageName: node + linkType: hard + +"object.hasown@npm:^1.1.2": + version: 1.1.3 + resolution: "object.hasown@npm:1.1.3" + dependencies: + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + checksum: 76bc17356f6124542fb47e5d0e78d531eafa4bba3fc2d6fc4b1a8ce8b6878912366c0d99f37ce5c84ada8fd79df7aa6ea1214fddf721f43e093ad2df51f27da1 + languageName: node + linkType: hard + +"object.values@npm:^1.1.6": + version: 1.1.7 + resolution: "object.values@npm:1.1.7" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + checksum: f3e4ae4f21eb1cc7cebb6ce036d4c67b36e1c750428d7b7623c56a0db90edced63d08af8a316d81dfb7c41a3a5fa81b05b7cc9426e98d7da986b1682460f0777 + languageName: node + linkType: hard + +"obuf@npm:^1.0.0, obuf@npm:^1.1.2": + version: 1.1.2 + resolution: "obuf@npm:1.1.2" + checksum: 41a2ba310e7b6f6c3b905af82c275bf8854896e2e4c5752966d64cbcd2f599cfffd5932006bcf3b8b419dfdacebb3a3912d5d94e10f1d0acab59876c8757f27f + languageName: node + linkType: hard + +"on-exit-leak-free@npm:^0.2.0": + version: 0.2.0 + resolution: "on-exit-leak-free@npm:0.2.0" + checksum: d22b0f0538069110626b578db6e68b6ee0e85b1ee9cc5ef9b4de1bba431431d6a8da91a61e09d2ad46f22a96f968e5237833cb9d0b69bc4d294f7ec82f609b05 + languageName: node + linkType: hard + +"on-exit-leak-free@npm:^2.1.0": + version: 2.1.2 + resolution: "on-exit-leak-free@npm:2.1.2" + checksum: 6ce7acdc7b9ceb51cf029b5239cbf41937ee4c8dcd9d4e475e1777b41702564d46caa1150a744e00da0ac6d923ab83471646a39a4470f97481cf6e2d8d253c3f + languageName: node + linkType: hard + +"on-finished@npm:2.4.1, on-finished@npm:^2.4.1, on-finished@npm:~2.4.1": + version: 2.4.1 + resolution: "on-finished@npm:2.4.1" + dependencies: + ee-first: 1.1.1 + checksum: d20929a25e7f0bb62f937a425b5edeb4e4cde0540d77ba146ec9357f00b0d497cdb3b9b05b9c8e46222407d1548d08166bff69cc56dfa55ba0e4469228920ff0 + languageName: node + linkType: hard + +"on-headers@npm:~1.0.2": + version: 1.0.2 + resolution: "on-headers@npm:1.0.2" + checksum: 2bf13467215d1e540a62a75021e8b318a6cfc5d4fc53af8e8f84ad98dbcea02d506c6d24180cd62e1d769c44721ba542f3154effc1f7579a8288c9f7873ed8e5 + languageName: node + linkType: hard + +"on-headers@npm:~1.1.0": + version: 1.1.0 + resolution: "on-headers@npm:1.1.0" + checksum: 98aa64629f986fb8cc4517dd8bede73c980e31208cba97f4442c330959f60ced3dc6214b83420491f5111fc7c4f4343abe2ea62c85f505cf041d67850f238776 + languageName: node + linkType: hard + +"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: 1 + checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 + languageName: node + linkType: hard + +"onetime@npm:^5.1.0, 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 + +"open@npm:^10.0.3": + version: 10.2.0 + resolution: "open@npm:10.2.0" + dependencies: + default-browser: ^5.2.1 + define-lazy-prop: ^3.0.0 + is-inside-container: ^1.0.0 + wsl-utils: ^0.1.0 + checksum: 64e2e1fb1dc5ab82af06c990467237b8fd349b1b9ecc6324d12df337a005d039cec11f758abea148be68878ccd616977005682c48ef3c5c7ba48bd3e5d6a3dbb + languageName: node + linkType: hard + +"open@npm:^8.4.0": + version: 8.4.2 + resolution: "open@npm:8.4.2" + dependencies: + define-lazy-prop: ^2.0.0 + is-docker: ^2.1.1 + is-wsl: ^2.2.0 + checksum: 6388bfff21b40cb9bd8f913f9130d107f2ed4724ea81a8fd29798ee322b361ca31fa2cdfb491a5c31e43a3996cfe9566741238c7a741ada8d7af1cb78d85cf26 + languageName: node + linkType: hard + +"opener@npm:^1.5.2": + version: 1.5.2 + resolution: "opener@npm:1.5.2" + bin: + opener: bin/opener-bin.js + checksum: 33b620c0d53d5b883f2abc6687dd1c5fd394d270dbe33a6356f2d71e0a2ec85b100d5bac94694198ccf5c30d592da863b2292c5539009c715a9c80c697b4f6cc + 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 + +"ora@npm:^5.4.1": + version: 5.4.1 + resolution: "ora@npm:5.4.1" + dependencies: + bl: ^4.1.0 + chalk: ^4.1.0 + cli-cursor: ^3.1.0 + cli-spinners: ^2.5.0 + is-interactive: ^1.0.0 + is-unicode-supported: ^0.1.0 + log-symbols: ^4.1.0 + strip-ansi: ^6.0.0 + wcwidth: ^1.0.1 + checksum: 28d476ee6c1049d68368c0dc922e7225e3b5600c3ede88fade8052837f9ed342625fdaa84a6209302587c8ddd9b664f71f0759833cbdb3a4cf81344057e63c63 + languageName: node + linkType: hard + +"os-tmpdir@npm:~1.0.2": + version: 1.0.2 + resolution: "os-tmpdir@npm:1.0.2" + checksum: 5666560f7b9f10182548bf7013883265be33620b1c1b4a4d405c25be2636f970c5488ff3e6c48de75b55d02bde037249fe5dbfbb4c0fb7714953d56aed062e6d + languageName: node + linkType: hard + +"os@npm:~0.1.1": + version: 0.1.2 + resolution: "os@npm:0.1.2" + checksum: dc2d99759eef13f5dc47ddb12c67b9760a7196fd83a35a7aec2d75b82f91163ca1d4e8872238f8c2a35f4cddd5adf5ce6638a234c0563c748d3cd1d69a9f7153 + languageName: node + linkType: hard + +"p-cancelable@npm:^2.0.0": + version: 2.1.1 + resolution: "p-cancelable@npm:2.1.1" + checksum: 3dba12b4fb4a1e3e34524535c7858fc82381bbbd0f247cc32dedc4018592a3950ce66b106d0880b4ec4c2d8d6576f98ca885dc1d7d0f274d1370be20e9523ddf + languageName: node + linkType: hard + +"p-finally@npm:^1.0.0": + version: 1.0.0 + resolution: "p-finally@npm:1.0.0" + checksum: 93a654c53dc805dd5b5891bab16eb0ea46db8f66c4bfd99336ae929323b1af2b70a8b0654f8f1eae924b2b73d037031366d645f1fd18b3d30cbd15950cc4b1d4 + languageName: node + linkType: hard + +"p-limit@npm:^1.1.0": + version: 1.3.0 + resolution: "p-limit@npm:1.3.0" + dependencies: + p-try: ^1.0.0 + checksum: 281c1c0b8c82e1ac9f81acd72a2e35d402bf572e09721ce5520164e9de07d8274451378a3470707179ad13240535558f4b277f02405ad752e08c7d5b0d54fbfd + 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:^2.0.0": + version: 2.0.0 + resolution: "p-locate@npm:2.0.0" + dependencies: + p-limit: ^1.1.0 + checksum: e2dceb9b49b96d5513d90f715780f6f4972f46987dc32a0e18bc6c3fc74a1a5d73ec5f81b1398af5e58b99ea1ad03fd41e9181c01fa81b4af2833958696e3081 + 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-series@npm:2.1.0": + version: 2.1.0 + resolution: "p-map-series@npm:2.1.0" + checksum: 69d4efbb6951c0dd62591d5a18c3af0af78496eae8b55791e049da239d70011aa3af727dece3fc9943e0bb3fd4fa64d24177cfbecc46efaf193179f0feeac486 + languageName: node + linkType: hard + +"p-map@npm:4.0.0, 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-pipe@npm:3.1.0": + version: 3.1.0 + resolution: "p-pipe@npm:3.1.0" + checksum: ee9a2609685f742c6ceb3122281ec4453bbbcc80179b13e66fd139dcf19b1c327cf6c2fdfc815b548d6667e7eaefe5396323f6d49c4f7933e4cef47939e3d65c + languageName: node + linkType: hard + +"p-queue@npm:6.6.2": + version: 6.6.2 + resolution: "p-queue@npm:6.6.2" + dependencies: + eventemitter3: ^4.0.4 + p-timeout: ^3.2.0 + checksum: 832642fcc4ab6477b43e6d7c30209ab10952969ed211c6d6f2931be8a4f9935e3578c72e8cce053dc34f2eb6941a408a2c516a54904e989851a1a209cf19761c + languageName: node + linkType: hard + +"p-reduce@npm:2.1.0, p-reduce@npm:^2.0.0, p-reduce@npm:^2.1.0": + version: 2.1.0 + resolution: "p-reduce@npm:2.1.0" + checksum: 99b26d36066a921982f25c575e78355824da0787c486e3dd9fc867460e8bf17d5fb3ce98d006b41bdc81ffc0aa99edf5faee53d11fe282a20291fb721b0cb1c7 + languageName: node + linkType: hard + +"p-retry@npm:^6.2.0": + version: 6.2.1 + resolution: "p-retry@npm:6.2.1" + dependencies: + "@types/retry": 0.12.2 + is-network-error: ^1.0.0 + retry: ^0.13.1 + checksum: 73acd269544b1359b7f2aa5f907f6f8cd4947c596bc43cc25fecce2678e2f190095179407eb874f0e09fc5956ae7952c39ebb08c3d9334f59d41ae0b2d73ee6b + languageName: node + linkType: hard + +"p-timeout@npm:^3.2.0": + version: 3.2.0 + resolution: "p-timeout@npm:3.2.0" + dependencies: + p-finally: ^1.0.0 + checksum: 3dd0eaa048780a6f23e5855df3dd45c7beacff1f820476c1d0d1bcd6648e3298752ba2c877aa1c92f6453c7dd23faaf13d9f5149fc14c0598a142e2c5e8d649c + languageName: node + linkType: hard + +"p-try@npm:^1.0.0": + version: 1.0.0 + resolution: "p-try@npm:1.0.0" + checksum: 3b5303f77eb7722144154288bfd96f799f8ff3e2b2b39330efe38db5dd359e4fb27012464cd85cb0a76e9b7edd1b443568cb3192c22e7cffc34989df0bafd605 + 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 + +"p-waterfall@npm:2.1.1": + version: 2.1.1 + resolution: "p-waterfall@npm:2.1.1" + dependencies: + p-reduce: ^2.0.0 + checksum: 8588bb8b004ee37e559c7e940a480c1742c42725d477b0776ff30b894920a3e48bddf8f60aa0ae82773e500a8fc99d75e947c450e0c2ce187aff72cc1b248f6d + languageName: node + linkType: hard + +"package-json@npm:^7.0.0": + version: 7.0.0 + resolution: "package-json@npm:7.0.0" + dependencies: + got: ^11.8.2 + registry-auth-token: ^4.0.0 + registry-url: ^5.0.0 + semver: ^7.3.5 + checksum: c03699b057f665c5bf2d6af76190b8fb32aaf69c70a78faf7c073c03c3d0d5e168d4a96f386739a4d179e925e66289bf0b93a446fbb3f97b05451a3cd2a3bd90 + languageName: node + linkType: hard + +"package-manager-detector@npm:^1.3.0": + version: 1.3.0 + resolution: "package-manager-detector@npm:1.3.0" + checksum: 9646354808f83d619cd266505ad0273105cf07f89e5f1876df3acd00e7536d5af56523bb60c452271b9ea649ebc7369d43aeb5d4da3389b30d5ecf315b25aa86 + languageName: node + linkType: hard + +"pacote@npm:^15.2.0": + version: 15.2.0 + resolution: "pacote@npm:15.2.0" + dependencies: + "@npmcli/git": ^4.0.0 + "@npmcli/installed-package-contents": ^2.0.1 + "@npmcli/promise-spawn": ^6.0.1 + "@npmcli/run-script": ^6.0.0 + cacache: ^17.0.0 + fs-minipass: ^3.0.0 + minipass: ^5.0.0 + npm-package-arg: ^10.0.0 + npm-packlist: ^7.0.0 + npm-pick-manifest: ^8.0.0 + npm-registry-fetch: ^14.0.0 + proc-log: ^3.0.0 + promise-retry: ^2.0.1 + read-package-json: ^6.0.0 + read-package-json-fast: ^3.0.0 + sigstore: ^1.3.0 + ssri: ^10.0.0 + tar: ^6.1.11 + bin: + pacote: lib/bin.js + checksum: c731572be2bf226b117eba076d242bd4cd8be7aa01e004af3374a304ad7ab330539e22644bc33de12d2a7d45228ccbcbf4d710f59c84414f3d09a1a95ee6f0bf + languageName: node + linkType: hard + +"pako@npm:~0.2.0": + version: 0.2.9 + resolution: "pako@npm:0.2.9" + checksum: 055f9487cd57fbb78df84315873bbdd089ba286f3499daed47d2effdc6253e981f5db6898c23486de76d4a781559f890d643bd3a49f70f1b4a18019c98aa5125 + languageName: node + linkType: hard + +"param-case@npm:^3.0.4": + version: 3.0.4 + resolution: "param-case@npm:3.0.4" + dependencies: + dot-case: ^3.0.4 + tslib: ^2.0.3 + checksum: b34227fd0f794e078776eb3aa6247442056cb47761e9cd2c4c881c86d84c64205f6a56ef0d70b41ee7d77da02c3f4ed2f88e3896a8fefe08bdfb4deca037c687 + 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.0.0, 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-path@npm:^7.0.0": + version: 7.0.0 + resolution: "parse-path@npm:7.0.0" + dependencies: + protocols: ^2.0.0 + checksum: 244b46523a58181d251dda9b888efde35d8afb957436598d948852f416d8c76ddb4f2010f9fc94218b4be3e5c0f716aa0d2026194a781e3b8981924142009302 + 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 + +"parse-url@npm:^8.1.0": + version: 8.1.0 + resolution: "parse-url@npm:8.1.0" + dependencies: + parse-path: ^7.0.0 + checksum: b93e21ab4c93c7d7317df23507b41be7697694d4c94f49ed5c8d6288b01cba328fcef5ba388e147948eac20453dee0df9a67ab2012415189fff85973bdffe8d9 + 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 + +"parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": + version: 1.3.3 + resolution: "parseurl@npm:1.3.3" + checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 + languageName: node + linkType: hard + +"pascal-case@npm:^3.1.2": + version: 3.1.2 + resolution: "pascal-case@npm:3.1.2" + dependencies: + no-case: ^3.0.4 + tslib: ^2.0.3 + checksum: ba98bfd595fc91ef3d30f4243b1aee2f6ec41c53b4546bfa3039487c367abaa182471dcfc830a1f9e1a0df00c14a370514fa2b3a1aacc68b15a460c31116873e + 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-data-parser@npm:0.1.0, path-data-parser@npm:^0.1.0": + version: 0.1.0 + resolution: "path-data-parser@npm:0.1.0" + checksum: a23a214adb38074576a8873d25e8dea7e090b8396d86f58f83f3f6c6298ff56b06adc694147b67f0ed22f14dc478efa1d525710d3ec7b2d7b1efbac57e3fafe6 + languageName: node + linkType: hard + +"path-exists@npm:^3.0.0": + version: 3.0.0 + resolution: "path-exists@npm:3.0.0" + checksum: 96e92643aa34b4b28d0de1cd2eba52a1c5313a90c6542d03f62750d82480e20bfa62bc865d5cfc6165f5fcd5aeb0851043c40a39be5989646f223300021bae0a + 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-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, path-scurry@npm:^1.6.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-to-regexp@npm:0.1.10": + version: 0.1.10 + resolution: "path-to-regexp@npm:0.1.10" + checksum: ab7a3b7a0b914476d44030340b0a65d69851af2a0f33427df1476100ccb87d409c39e2182837a96b98fb38c4ef2ba6b87bdad62bb70a2c153876b8061760583c + languageName: node + linkType: hard + +"path-to-regexp@npm:~0.1.12": + version: 0.1.12 + resolution: "path-to-regexp@npm:0.1.12" + checksum: ab237858bee7b25ecd885189f175ab5b5161e7b712b360d44f5c4516b8d271da3e4bf7bf0a7b9153ecb04c7d90ce8ff5158614e1208819cf62bac2b08452722e + 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 + +"pathe@npm:^2.0.1, pathe@npm:^2.0.3": + version: 2.0.3 + resolution: "pathe@npm:2.0.3" + checksum: 0602bdd4acb54d91044e0c56f1fb63467ae7d44ab3afea1f797947b0eb2b4d1d91cf0d58d065fdb0a8ab0c4acbbd8d3a5b424983eaf10dd5285d37a16f6e3ee9 + languageName: node + linkType: hard + +"peek-stream@npm:^1.1.0": + version: 1.1.3 + resolution: "peek-stream@npm:1.1.3" + dependencies: + buffer-from: ^1.0.0 + duplexify: ^3.5.0 + through2: ^2.0.3 + checksum: a0e09d6d1a8a01158a3334f20d6b1cdd91747eba24eb06a1d742eefb620385593121a76d4378cc81f77cdce6a66df0575a41041b1189c510254aec91878afc99 + languageName: node + linkType: hard + +"performance-now@npm:^2.1.0": + version: 2.1.0 + resolution: "performance-now@npm:2.1.0" + checksum: 534e641aa8f7cba160f0afec0599b6cecefbb516a2e837b512be0adbe6c1da5550e89c78059c7fabc5c9ffdf6627edabe23eb7c518c4500067a898fa65c2b550 + 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 + +"picocolors@npm:^1.1.1": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045 + languageName: node + linkType: hard + +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, 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:5.0.0": + version: 5.0.0 + resolution: "pify@npm:5.0.0" + checksum: 443e3e198ad6bfa8c0c533764cf75c9d5bc976387a163792fb553ffe6ce923887cf14eebf5aea9b7caa8eab930da8c33612990ae85bd8c2bc18bedb9eae94ecb + languageName: node + linkType: hard + +"pify@npm:^2.3.0": + version: 2.3.0 + resolution: "pify@npm:2.3.0" + checksum: 9503aaeaf4577acc58642ad1d25c45c6d90288596238fb68f82811c08104c800e5a7870398e9f015d82b44ecbcbef3dc3d4251a1cbb582f6e5959fe09884b2ba + 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 + +"pify@npm:^4.0.1": + version: 4.0.1 + resolution: "pify@npm:4.0.1" + checksum: 9c4e34278cb09987685fa5ef81499c82546c033713518f6441778fbec623fc708777fe8ac633097c72d88470d5963094076c7305cafc7ad340aae27cfacd856b + languageName: node + linkType: hard + +"pino-abstract-transport@npm:1.1.0, pino-abstract-transport@npm:v1.1.0": + version: 1.1.0 + resolution: "pino-abstract-transport@npm:1.1.0" + dependencies: + readable-stream: ^4.0.0 + split2: ^4.0.0 + checksum: cc84caabee5647b5753ae484d5f63a1bca0f6e1791845e2db2b6d830a561c2b5dd1177720f68d78994c8a93aecc69f2729e6ac2bc871a1bf5bb4b0ec17210668 + languageName: node + linkType: hard + +"pino-abstract-transport@npm:v0.5.0": + version: 0.5.0 + resolution: "pino-abstract-transport@npm:0.5.0" + dependencies: + duplexify: ^4.1.2 + split2: ^4.0.0 + checksum: c503f867de3189f8217ab9cf794e8a631dddd0029a829f0f985f5511308152ebd53e363764fbc5570b3d1c715b341e3923456ce16ad84cd41be2b9a074ada234 + languageName: node + linkType: hard + +"pino-std-serializers@npm:^4.0.0": + version: 4.0.0 + resolution: "pino-std-serializers@npm:4.0.0" + checksum: 89d487729b58c9d3273a0ee851ead068d6d2e2ccc1af8e1c1d28f1b3442423679bec7ec04d9a2aba36f94f335e82be9f4de19dc4fbc161e71c136aaa15b85ad3 + languageName: node + linkType: hard + +"pino-std-serializers@npm:^6.0.0": + version: 6.2.2 + resolution: "pino-std-serializers@npm:6.2.2" + checksum: aeb0662edc46ec926de9961ed4780a4f0586bb7c37d212cd469c069639e7816887a62c5093bc93f260a4e0900322f44fc8ab1343b5a9fa2864a888acccdb22a4 + languageName: node + linkType: hard + +"pino@npm:7.11.0": + version: 7.11.0 + resolution: "pino@npm:7.11.0" + dependencies: + atomic-sleep: ^1.0.0 + fast-redact: ^3.0.0 + on-exit-leak-free: ^0.2.0 + pino-abstract-transport: v0.5.0 + pino-std-serializers: ^4.0.0 + process-warning: ^1.0.0 + quick-format-unescaped: ^4.0.3 + real-require: ^0.1.0 + safe-stable-stringify: ^2.1.0 + sonic-boom: ^2.2.1 + thread-stream: ^0.15.1 + bin: + pino: bin.js + checksum: b919e7dbe41de978bb050dcef94fd687c012eb78d344a18f75f04ce180d5810fc162be1f136722d70cd005ed05832c4023a38b9acbc1076ae63c9f5ec5ca515c + languageName: node + linkType: hard + +"pino@npm:8.17.2": + version: 8.17.2 + resolution: "pino@npm:8.17.2" + dependencies: + atomic-sleep: ^1.0.0 + fast-redact: ^3.1.1 + on-exit-leak-free: ^2.1.0 + pino-abstract-transport: v1.1.0 + pino-std-serializers: ^6.0.0 + process-warning: ^3.0.0 + quick-format-unescaped: ^4.0.3 + real-require: ^0.2.0 + safe-stable-stringify: ^2.3.1 + sonic-boom: ^3.7.0 + thread-stream: ^2.0.0 + bin: + pino: bin.js + checksum: fc769d3d7b1333de94d51815fbe2abc4a1cc07cb0252a399313e54e26c13da2c0a69b227c296bd95ed52660d7eaa993662a9bf270b7370d0f7553fdd38716b63 + 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.1.0, 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 + +"pkg-types@npm:^1.3.0": + version: 1.3.1 + resolution: "pkg-types@npm:1.3.1" + dependencies: + confbox: ^0.1.8 + mlly: ^1.7.4 + pathe: ^2.0.1 + checksum: 4fa4edb2bb845646cdbd04c5c6bc43cdbc8f02ed4d1c28bfcafb6e65928aece789bcf1335e4cac5f65dfdc376e4bd7435bd509a35e9ec73ef2c076a1b88e289c + languageName: node + linkType: hard + +"pkg-types@npm:^2.3.0": + version: 2.3.0 + resolution: "pkg-types@npm:2.3.0" + dependencies: + confbox: ^0.2.2 + exsolve: ^1.0.7 + pathe: ^2.0.3 + checksum: 33c30b442662a0f2b62fd16f39ae2beeb4cdf3511699e574765b7451e179937847de6e696bbab50bfbd41d2c2e4a99b61ebc7078abf91ea8573a7f16cc11d26a + languageName: node + linkType: hard + +"pkginfo@npm:0.4.1": + version: 0.4.1 + resolution: "pkginfo@npm:0.4.1" + checksum: 0f13694f3682345647b7cb887fb6fe258df51b635f252324cd75eeb8181b4381cb8b9d91dc2d869849e857192b403bea65038d2f7c05b524eeae69ece5048209 + languageName: node + linkType: hard + +"points-on-curve@npm:0.2.0, points-on-curve@npm:^0.2.0": + version: 0.2.0 + resolution: "points-on-curve@npm:0.2.0" + checksum: 05e87d6839e3d869cfac0e63c2b1ca700fc8f1083e3f9ae80841cc50379fd31204f9e1f221407df1a90afcb8bfa98404aee0b0fa00330b7b3b328d33be21cf47 + languageName: node + linkType: hard + +"points-on-path@npm:^0.2.1": + version: 0.2.1 + resolution: "points-on-path@npm:0.2.1" + dependencies: + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + checksum: 5564dd84d15699579bf07bd33adfd0dc1a5e717c0d36ee11f0832b6b6890941e25e9ea68d15f7858698a9b5ec509f60e6472a0346624bb9dd9c2100cf568ac8f + 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-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": + version: 8.4.31 + resolution: "postcss@npm:8.4.31" + dependencies: + nanoid: ^3.3.6 + picocolors: ^1.0.0 + source-map-js: ^1.0.2 + checksum: 1d8611341b073143ad90486fcdfeab49edd243377b1f51834dc4f6d028e82ce5190e4f11bb2633276864503654fb7cab28e67abdc0fbf9d1f88cad4a0ff0beea + 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:^2.8.5": + version: 2.8.8 + resolution: "prettier@npm:2.8.8" + bin: + prettier: bin-prettier.js + checksum: b49e409431bf129dd89238d64299ba80717b57ff5a6d1c1a8b1a28b590d998a34e083fa13573bc732bb8d2305becb4c9a4407f8486c81fa7d55100eb08263cf8 + languageName: node + linkType: hard + +"prettier@npm:~2.6.0": + version: 2.6.2 + resolution: "prettier@npm:2.6.2" + bin: + prettier: bin-prettier.js + checksum: 48d08dde8e9fb1f5bccdd205baa7f192e9fc8bc98f86e1b97d919de804e28c806b0e6cc685e4a88211aa7987fa9668f30baae19580d87ced3ed0f2ec6572106f + languageName: node + linkType: hard + +"pretty-error@npm:^4.0.0": + version: 4.0.0 + resolution: "pretty-error@npm:4.0.0" + dependencies: + lodash: ^4.17.20 + renderkid: ^3.0.0 + checksum: a5b9137365690104ded6947dca2e33360bf55e62a4acd91b1b0d7baa3970e43754c628cc9e16eafbdd4e8f8bcb260a5865475d4fc17c3106ff2d61db4e72cdf3 + 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 + +"proc-log@npm:^3.0.0": + version: 3.0.0 + resolution: "proc-log@npm:3.0.0" + checksum: 02b64e1b3919e63df06f836b98d3af002b5cd92655cab18b5746e37374bfb73e03b84fe305454614b34c25b485cc687a9eebdccf0242cda8fda2475dd2c97e02 + 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-warning@npm:1.0.0, process-warning@npm:^1.0.0": + version: 1.0.0 + resolution: "process-warning@npm:1.0.0" + checksum: c708a03241deec3cabaeee39c4f9ee8c4d71f1c5ef9b746c8252cdb952a6059068cfcdaf348399775244cbc441b6ae5e26a9c87ed371f88335d84f26d19180f9 + languageName: node + linkType: hard + +"process-warning@npm:^3.0.0": + version: 3.0.0 + resolution: "process-warning@npm:3.0.0" + checksum: 1fc2eb4524041de3c18423334cc8b4e36bec5ad5472640ca1a936122c6e01da0864c1a4025858ef89aea93eabe7e77db93ccea225b10858617821cb6a8719efe + languageName: node + linkType: hard + +"process@npm:^0.11.10": + version: 0.11.10 + resolution: "process@npm:0.11.10" + checksum: bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c3 + languageName: node + linkType: hard + +"promise-inflight@npm:^1.0.1": + version: 1.0.1 + resolution: "promise-inflight@npm:1.0.1" + checksum: 22749483091d2c594261517f4f80e05226d4d5ecc1fc917e1886929da56e22b5718b7f2a75f3807e7a7d471bc3be2907fe92e6e8f373ddf5c64bae35b5af3981 + 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 + +"promzard@npm:^1.0.0": + version: 1.0.2 + resolution: "promzard@npm:1.0.2" + dependencies: + read: ^3.0.1 + checksum: 08dee9179e79d4a6446f707cce46fb3e8e8d93ec8b8d722ddc1ec4043c4c07e2e88dc90c64326a58f83d1a7e2b0d6b3bdf11b8b2687b9c74bfb410bafe630ad8 + languageName: node + linkType: hard + +"prop-types@npm:^15.5.8, prop-types@npm:^15.6.1, 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 + +"protocols@npm:^2.0.0, protocols@npm:^2.0.1": + version: 2.0.1 + resolution: "protocols@npm:2.0.1" + checksum: 4a9bef6aa0449a0245ded319ac3cbfd032c3e76ebb562777037a3a832c99253d0e8bc2847f7be350236df620a11f7d4fe683ea7f59a2cc14c69f746b6259eda4 + languageName: node + linkType: hard + +"proxy-addr@npm:~2.0.7": + version: 2.0.7 + resolution: "proxy-addr@npm:2.0.7" + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + checksum: 29c6990ce9364648255454842f06f8c46fcd124d3e6d7c5066df44662de63cdc0bad032e9bf5a3d653ff72141cc7b6019873d685708ac8210c30458ad99f2b74 + languageName: node + linkType: hard + +"proxy-from-env@npm:^1.1.0": + version: 1.1.0 + resolution: "proxy-from-env@npm:1.1.0" + checksum: ed7fcc2ba0a33404958e34d95d18638249a68c430e30fcb6c478497d72739ba64ce9810a24f53a7d921d0c065e5b78e3822759800698167256b04659366ca4d4 + 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 + +"pump@npm:^2.0.0": + version: 2.0.1 + resolution: "pump@npm:2.0.1" + dependencies: + end-of-stream: ^1.1.0 + once: ^1.3.1 + checksum: e9f26a17be00810bff37ad0171edb35f58b242487b0444f92fb7d78bc7d61442fa9b9c5bd93a43fd8fd8ddd3cc75f1221f5e04c790f42907e5baab7cf5e2b931 + languageName: node + linkType: hard + +"pump@npm:^3.0.0": + version: 3.0.0 + resolution: "pump@npm:3.0.0" + dependencies: + end-of-stream: ^1.1.0 + once: ^1.3.1 + checksum: e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 + languageName: node + linkType: hard + +"pumpify@npm:^1.3.3": + version: 1.5.1 + resolution: "pumpify@npm:1.5.1" + dependencies: + duplexify: ^3.6.0 + inherits: ^2.0.3 + pump: ^2.0.0 + checksum: 26ca412ec8d665bd0d5e185c1b8f627728eff603440d75d22a58e421e3c66eaf86ec6fc6a6efc54808ecef65979279fa8e99b109a23ec1fa8d79f37e6978c9bd + 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.4 + resolution: "pure-rand@npm:6.0.4" + checksum: e1c4e69f8bf7303e5252756d67c3c7551385cd34d94a1f511fe099727ccbab74c898c03a06d4c4a24a89b51858781057b83ebbfe740d984240cdc04fead36068 + languageName: node + linkType: hard + +"qs@npm:6.13.0": + version: 6.13.0 + resolution: "qs@npm:6.13.0" + dependencies: + side-channel: ^1.0.6 + checksum: e9404dc0fc2849245107108ce9ec2766cde3be1b271de0bf1021d049dc5b98d1a2901e67b431ac5509f865420a7ed80b7acb3980099fe1c118a1c5d2e1432ad8 + languageName: node + linkType: hard + +"qs@npm:~6.14.0": + version: 6.14.0 + resolution: "qs@npm:6.14.0" + dependencies: + side-channel: ^1.1.0 + checksum: 189b52ad4e9a0da1a16aff4c58b2a554a8dad9bd7e287c7da7446059b49ca2e33a49e570480e8be406b87fccebf134f51c373cbce36c8c83859efa0c9b71d635 + languageName: node + linkType: hard + +"quansync@npm:^0.2.11": + version: 0.2.11 + resolution: "quansync@npm:0.2.11" + checksum: af484ed433f752c092d278232f68a6643e2cf0193f95ec60c84245e1f3662ef64da90f8fb1bc57dd407362ff181f246a9304ba53725dd7122f45c4a839f85a61 + 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-format-unescaped@npm:^4.0.3": + version: 4.0.4 + resolution: "quick-format-unescaped@npm:4.0.4" + checksum: 7bc32b99354a1aa46c089d2a82b63489961002bb1d654cee3e6d2d8778197b68c2d854fd23d8422436ee1fdfd0abaddc4d4da120afe700ade68bd357815b26fd + languageName: node + linkType: hard + +"quick-lru@npm:^4.0.1": + version: 4.0.1 + resolution: "quick-lru@npm:4.0.1" + checksum: bea46e1abfaa07023e047d3cf1716a06172c4947886c053ede5c50321893711577cb6119360f810cc3ffcd70c4d7db4069c3cee876b358ceff8596e062bd1154 + 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 + +"range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": + version: 1.2.1 + resolution: "range-parser@npm:1.2.1" + checksum: 0a268d4fea508661cf5743dfe3d5f47ce214fd6b7dec1de0da4d669dd4ef3d2144468ebe4179049eff253d9d27e719c88dae55be64f954e80135a0cada804ec9 + languageName: node + linkType: hard + +"raw-body@npm:2.5.2": + version: 2.5.2 + resolution: "raw-body@npm:2.5.2" + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + checksum: ba1583c8d8a48e8fbb7a873fdbb2df66ea4ff83775421bfe21ee120140949ab048200668c47d9ae3880012f6e217052690628cf679ddfbd82c9fc9358d574676 + languageName: node + linkType: hard + +"raw-body@npm:~2.5.3": + version: 2.5.3 + resolution: "raw-body@npm:2.5.3" + dependencies: + bytes: ~3.1.2 + http-errors: ~2.0.1 + iconv-lite: ~0.4.24 + unpipe: ~1.0.0 + checksum: 16aa51e504318ebeef7f84a4d884c0f273cb0b7f3f14ea88788f92f5f488870617c97d4f886e84f119f21a2d6cdda3c4554821f8b18ed6be0d731ecb5a063d2a + languageName: node + linkType: hard + +"rc@npm:1.2.8, rc@npm:^1.2.8": + version: 1.2.8 + resolution: "rc@npm:1.2.8" + dependencies: + deep-extend: ^0.6.0 + ini: ~1.3.0 + minimist: ^1.2.0 + strip-json-comments: ~2.0.1 + bin: + rc: ./cli.js + checksum: 2e26e052f8be2abd64e6d1dabfbd7be03f80ec18ccbc49562d31f617d0015fbdbcf0f9eed30346ea6ab789e0fdfe4337f033f8016efdbee0df5354751842080e + languageName: node + linkType: hard + +"react-base16-styling@npm:^0.9.1": + version: 0.9.1 + resolution: "react-base16-styling@npm:0.9.1" + dependencies: + "@babel/runtime": ^7.16.7 + "@types/base16": ^1.0.2 + "@types/lodash": ^4.14.178 + base16: ^1.0.0 + color: ^3.2.1 + csstype: ^3.0.10 + lodash.curry: ^4.1.1 + checksum: 1e61e1158ee5250ad68860840368f9228685680df15385c0fc4d5c63dd0925f27f4f1d1762134de623fe005e75ef9543191aa648cde2c16d0153341d00ceeecb + 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-highlight-words@npm:^0.20.0": + version: 0.20.0 + resolution: "react-highlight-words@npm:0.20.0" + dependencies: + highlight-words-core: ^1.2.0 + memoize-one: ^4.0.0 + prop-types: ^15.5.8 + peerDependencies: + react: ^0.14.0 || ^15.0.0 || ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 6794b6fe409ee81390e342ccdb951696e06354d8591b4cac050a6d64dbc77dfc7bb636fee0aabcfda841e57778aa5108fe351e7c1dc27b28abedd36aec8141e7 + 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-json-tree@npm:^0.18.0": + version: 0.18.0 + resolution: "react-json-tree@npm:0.18.0" + dependencies: + "@babel/runtime": ^7.20.6 + "@types/lodash": ^4.14.191 + react-base16-styling: ^0.9.1 + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: e59244b1f7866a3fec7b5fe83d68833583568e9ae217c261b09077de196a51cc96642e8b1d6826d963aaf910a496e1cf432240ee142ce7efa965345915bb57ac + languageName: node + linkType: hard + +"react-paginate@npm:^6.3.2": + version: 6.5.0 + resolution: "react-paginate@npm:6.5.0" + dependencies: + prop-types: ^15.6.1 + peerDependencies: + react: ^16.0.0 + checksum: 39397de9a330e9ed16b2422d5893f47e16b5f7f188bf59ce4f60beeb16cfdba0ba76c7f0ca1b733d7282821a4e984ae64fb1a7086ecc22b416af95c1ff974fec + languageName: node + linkType: hard + +"react-toastify@npm:^9.0.8": + version: 9.1.3 + resolution: "react-toastify@npm:9.1.3" + dependencies: + clsx: ^1.1.1 + peerDependencies: + react: ">=16" + react-dom: ">=16" + checksum: e8bd92c5cbf831b43a042644ab9bc69abe6ceb3ce91ba71f5cd2d8b6a2c9885ca52770e1f1ba64c5632607f6df962db344a26c7fba57606faf5aa0e7bfc8535f + 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-cmd-shim@npm:4.0.0": + version: 4.0.0 + resolution: "read-cmd-shim@npm:4.0.0" + checksum: 2fb5a8a38984088476f559b17c6a73324a5db4e77e210ae0aab6270480fd85c355fc990d1c79102e25e555a8201606ed12844d6e3cd9f35d6a1518791184e05b + languageName: node + linkType: hard + +"read-package-json-fast@npm:^3.0.0": + version: 3.0.2 + resolution: "read-package-json-fast@npm:3.0.2" + dependencies: + json-parse-even-better-errors: ^3.0.0 + npm-normalize-package-bin: ^3.0.0 + checksum: 8d406869f045f1d76e2a99865a8fd1c1af9c1dc06200b94d2b07eef87ed734b22703a8d72e1cd36ea36cc48e22020bdd187f88243c7dd0563f72114d38c17072 + languageName: node + linkType: hard + +"read-package-json@npm:6.0.4, read-package-json@npm:^6.0.0": + version: 6.0.4 + resolution: "read-package-json@npm:6.0.4" + dependencies: + glob: ^10.2.2 + json-parse-even-better-errors: ^3.0.0 + normalize-package-data: ^5.0.0 + npm-normalize-package-bin: ^3.0.0 + checksum: ce40c4671299753f1349aebe44693cd250d6936c4bacfb31cd884c87f24a0174ba5f651ee2866cf5e57365451cba38bc1db9c2a371e4ba7502fb46dcad50f1d7 + languageName: node + linkType: hard + +"read-pkg-up@npm:^3.0.0": + version: 3.0.0 + resolution: "read-pkg-up@npm:3.0.0" + dependencies: + find-up: ^2.0.0 + read-pkg: ^3.0.0 + checksum: 16175573f2914ab9788897bcbe2a62b5728d0075e62285b3680cebe97059e2911e0134a062cf6e51ebe3e3775312bc788ac2039ed6af38ec68d2c10c6f2b30fb + languageName: node + linkType: hard + +"read-pkg-up@npm:^7.0.1": + version: 7.0.1 + resolution: "read-pkg-up@npm:7.0.1" + dependencies: + find-up: ^4.1.0 + read-pkg: ^5.2.0 + type-fest: ^0.8.1 + checksum: e4e93ce70e5905b490ca8f883eb9e48b5d3cebc6cd4527c25a0d8f3ae2903bd4121c5ab9c5a3e217ada0141098eeb661313c86fa008524b089b8ed0b7f165e44 + 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:^5.2.0": + version: 5.2.0 + resolution: "read-pkg@npm:5.2.0" + dependencies: + "@types/normalize-package-data": ^2.4.0 + normalize-package-data: ^2.5.0 + parse-json: ^5.0.0 + type-fest: ^0.6.0 + checksum: eb696e60528b29aebe10e499ba93f44991908c57d70f2d26f369e46b8b9afc208ef11b4ba64f67630f31df8b6872129e0a8933c8c53b7b4daf0eace536901222 + languageName: node + linkType: hard + +"read@npm:^2.0.0": + version: 2.1.0 + resolution: "read@npm:2.1.0" + dependencies: + mute-stream: ~1.0.0 + checksum: e745999138022b56d32daf7cce9b7552b2ec648e4e2578d076a410575a0a400faf74f633dd74ef1b1c42563397d322c1ad5a0068471c38978b02ef97056c2991 + languageName: node + linkType: hard + +"read@npm:^3.0.1": + version: 3.0.1 + resolution: "read@npm:3.0.1" + dependencies: + mute-stream: ^1.0.0 + checksum: 65fdc31c18f457b08a4f6eea3624cbbe82f82d5f297f256062278627ed897381d1637dd494ba7419dd3c5ed73fb21a4cef1342748c6e108b0f8fc7f627a0b281 + languageName: node + linkType: hard + +"readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:~2.3.6": + 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.0.0, readable-stream@npm:^3.0.2, readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, 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 + +"readable-stream@npm:^4.0.0": + version: 4.4.2 + resolution: "readable-stream@npm:4.4.2" + dependencies: + abort-controller: ^3.0.0 + buffer: ^6.0.3 + events: ^3.3.0 + process: ^0.11.10 + string_decoder: ^1.3.0 + checksum: 6f4063763dbdb52658d22d3f49ca976420e1fbe16bbd241f744383715845350b196a2f08b8d6330f8e219153dff34b140aeefd6296da828e1041a7eab1f20d5e + languageName: node + linkType: hard + +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: ^2.2.1 + checksum: 1ced032e6e45670b6d7352d71d21ce7edf7b9b928494dcaba6f11fba63180d9da6cd7061ebc34175ffda6ff529f481818c962952004d273178acd70f7059b320 + languageName: node + linkType: hard + +"real-require@npm:^0.1.0": + version: 0.1.0 + resolution: "real-require@npm:0.1.0" + checksum: 96745583ed4f82cd5c6a6af012fd1d3c6fc2f13ae1bcff1a3c4f8094696013a1a07c82c5aa66a403d7d4f84949fc2203bc927c7ad120caad125941ca2d7e5e8e + languageName: node + linkType: hard + +"real-require@npm:^0.2.0": + version: 0.2.0 + resolution: "real-require@npm:0.2.0" + checksum: fa060f19f2f447adf678d1376928c76379dce5f72bd334da301685ca6cdcb7b11356813332cc243c88470796bc2e2b1e2917fc10df9143dd93c2ea608694971d + languageName: node + linkType: hard + +"redent@npm:^3.0.0": + version: 3.0.0 + resolution: "redent@npm:3.0.0" + dependencies: + indent-string: ^4.0.0 + strip-indent: ^3.0.0 + checksum: fa1ef20404a2d399235e83cc80bd55a956642e37dd197b4b612ba7327bf87fa32745aeb4a1634b2bab25467164ab4ed9c15be2c307923dd08b0fe7c52431ae6b + languageName: node + linkType: hard + +"reflect.getprototypeof@npm:^1.0.4": + version: 1.0.4 + resolution: "reflect.getprototypeof@npm:1.0.4" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + get-intrinsic: ^1.2.1 + globalthis: ^1.0.3 + which-builtin-type: ^1.1.3 + checksum: 16e2361988dbdd23274b53fb2b1b9cefeab876c3941a2543b4cadac6f989e3db3957b07a44aac46cfceb3e06e2871785ec2aac992d824f76292f3b5ee87f66f2 + languageName: node + linkType: hard + +"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: b80958ef40f125275824c2c47d5081dfaefebd80bff26c76761e9236767c748a4a95a69c053fe29d2df881177f2ca85df4a71fe70a82360388b31159ef19adcf + 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, 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 + set-function-name: ^2.0.0 + checksum: 869edff00288442f8d7fa4c9327f91d85f3b3acf8cbbef9ea7a220345cf23e9241b6def9263d2c1ebcf3a316b0aa52ad26a43a84aa02baca3381717b3e307f47 + 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 + +"registry-auth-token@npm:^4.0.0": + version: 4.2.2 + resolution: "registry-auth-token@npm:4.2.2" + dependencies: + rc: 1.2.8 + checksum: c5030198546ecfdcbcb0722cbc3e260c4f5f174d8d07bdfedd4620e79bfdf17a2db735aa230d600bd388fce6edd26c0a9ed2eb7e9b4641ec15213a28a806688b + languageName: node + linkType: hard + +"registry-url@npm:^5.0.0": + version: 5.1.0 + resolution: "registry-url@npm:5.1.0" + dependencies: + rc: ^1.2.8 + checksum: bcea86c84a0dbb66467b53187fadebfea79017cddfb4a45cf27530d7275e49082fe9f44301976eb0164c438e395684bcf3dae4819b36ff9d1640d8cc60c73df9 + 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 + +"relateurl@npm:^0.2.7": + version: 0.2.7 + resolution: "relateurl@npm:0.2.7" + checksum: 5891e792eae1dfc3da91c6fda76d6c3de0333a60aa5ad848982ebb6dccaa06e86385fb1235a1582c680a3d445d31be01c6bfc0804ebbcab5aaf53fa856fde6b6 + languageName: node + linkType: hard + +"renderkid@npm:^3.0.0": + version: 3.0.0 + resolution: "renderkid@npm:3.0.0" + dependencies: + css-select: ^4.1.3 + dom-converter: ^0.2.0 + htmlparser2: ^6.1.0 + lodash: ^4.17.21 + strip-ansi: ^6.0.1 + checksum: 77162b62d6f33ab81f337c39efce0439ff0d1f6d441e29c35183151f83041c7850774fb904da163d6c844264d440d10557714e6daa0b19e4561a5cd4ef305d41 + 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-alpn@npm:^1.0.0": + version: 1.2.1 + resolution: "resolve-alpn@npm:1.2.1" + checksum: f558071fcb2c60b04054c99aebd572a2af97ef64128d59bef7ab73bd50d896a222a056de40ffc545b633d99b304c259ea9d0c06830d5c867c34f0bfa60b8eae0 + 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:5.0.0, resolve-from@npm:^5.0.0": + version: 5.0.0 + resolution: "resolve-from@npm:5.0.0" + checksum: 4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf + 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.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.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: d13bf66d4e2ee30d291491f16f2fa44edd4e0cefb85d53249dd6f93e70b2b8c20ec62f01b18662e3cd40e50a7528f18c4087a99490048992a3bb954cf3201a5b + languageName: node + linkType: hard + +"resolve@npm:^2.0.0-next.4": + version: 2.0.0-next.4 + resolution: "resolve@npm:2.0.0-next.4" + dependencies: + is-core-module: ^2.9.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: c438ac9a650f2030fd074219d7f12ceb983b475da2d89ad3d6dd05fbf6b7a0a8cd37d4d10b43cb1f632bc19f22246ab7f36ebda54d84a29bfb2910a0680906d3 + 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.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: 9d3b3c67aefd12cecbe5f10ca4d1f51ea190891096497c43f301b086883b426466918c3a64f1bbf1788fabb52b579d58809614006c5d0b49186702b3b8fb746a + languageName: node + linkType: hard + +"resolve@patch:resolve@^2.0.0-next.4#~builtin": + version: 2.0.0-next.4 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.4#~builtin::version=2.0.0-next.4&hash=c3c19d" + dependencies: + is-core-module: ^2.9.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: 4bf9f4f8a458607af90518ff73c67a4bc1a38b5a23fef2bb0ccbd45e8be89820a1639b637b0ba377eb2be9eedfb1739a84cde24fe4cd670c8207d8fea922b011 + languageName: node + linkType: hard + +"responselike@npm:^2.0.0": + version: 2.0.1 + resolution: "responselike@npm:2.0.1" + dependencies: + lowercase-keys: ^2.0.0 + checksum: b122535466e9c97b55e69c7f18e2be0ce3823c5d47ee8de0d9c0b114aa55741c6db8bfbfce3766a94d1272e61bfb1ebf0a15e9310ac5629fbb7446a861b4fd3a + languageName: node + linkType: hard + +"restore-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "restore-cursor@npm:3.1.0" + dependencies: + onetime: ^5.1.0 + signal-exit: ^3.0.2 + checksum: f877dd8741796b909f2a82454ec111afb84eb45890eb49ac947d87991379406b3b83ff9673a46012fca0d7844bb989f45cc5b788254cf1a39b6b5a9659de0630 + 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 + +"retry@npm:^0.13.1": + version: 0.13.1 + resolution: "retry@npm:0.13.1" + checksum: 47c4d5be674f7c13eee4cfe927345023972197dbbdfba5d3af7e461d13b44de1bfd663bfc80d2f601f8ef3fc8164c16dd99655a221921954a65d044a2fc1233b + 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.0, 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:^4.4.1": + version: 4.4.1 + resolution: "rimraf@npm:4.4.1" + dependencies: + glob: ^9.2.0 + bin: + rimraf: dist/cjs/src/bin.js + checksum: b786adc02651e2e24bbedb04bbdea80652fc9612632931ff2d9f898c5e4708fe30956186597373c568bd5230a4dc2fadfc816ccacba8a1daded3a006a6b74f1a + languageName: node + linkType: hard + +"rimraf@npm:~2.4.0": + version: 2.4.5 + resolution: "rimraf@npm:2.4.5" + dependencies: + glob: ^6.0.1 + bin: + rimraf: ./bin.js + checksum: 036793b4055d65344ad7bea73c3f4095640af7455478fe56c19783619463e6bb4374ab3556b9e6d4d6d3dd210eb677b0955ece38813e734c294fd2687201151d + 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 + +"roughjs@npm:^4.6.6": + version: 4.6.6 + resolution: "roughjs@npm:4.6.6" + dependencies: + hachure-fill: ^0.5.2 + path-data-parser: ^0.1.0 + points-on-curve: ^0.2.0 + points-on-path: ^0.2.1 + checksum: ec4b8266ac4a50c7369e337d8ddff3b2d970506229cac5425ddca56f4e6b29fca07dded4300e9e392bb608da4ba618d349fd241283affb25055cab7c2fe48f8f + languageName: node + linkType: hard + +"run-applescript@npm:^7.0.0": + version: 7.1.0 + resolution: "run-applescript@npm:7.1.0" + checksum: 8659fb5f2717b2b37a68cbfe5f678254cf24b5a82a6df3372b180c80c7c137dcd757a4166c3887e459f59a090ca414e8ea7ca97cf3ee5123db54b3b4006d7b7a + languageName: node + linkType: hard + +"run-async@npm:^2.4.0": + version: 2.4.1 + resolution: "run-async@npm:2.4.1" + checksum: a2c88aa15df176f091a2878eb840e68d0bdee319d8d97bbb89112223259cebecb94bc0defd735662b83c2f7a30bed8cddb7d1674eb48ae7322dc602b22d03797 + languageName: node + linkType: hard + +"run-async@npm:^3.0.0": + version: 3.0.0 + resolution: "run-async@npm:3.0.0" + checksum: 280c03d5a88603f48103fc6fd69f07fb0c392a1e0d319c34ec96a2516030e07ba06f79231a563c78698b882649c2fc1fda601bc84705f57d50efcd1fa506cfc0 + 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 + +"rxjs@npm:^7.5.5, rxjs@npm:^7.8.1": + version: 7.8.1 + resolution: "rxjs@npm:7.8.1" + dependencies: + tslib: ^2.1.0 + checksum: de4b53db1063e618ec2eca0f7965d9137cabe98cf6be9272efe6c86b47c17b987383df8574861bcced18ebd590764125a901d5506082be84a8b8e364bf05f119 + languageName: node + linkType: hard + +"safe-array-concat@npm:^1.0.1": + 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.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.2, 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 + +"safe-stable-stringify@npm:^2.1.0, safe-stable-stringify@npm:^2.3.1": + version: 2.5.0 + resolution: "safe-stable-stringify@npm:2.5.0" + checksum: d3ce103ed43c6c2f523e39607208bfb1c73aa48179fc5be53c3aa97c118390bffd4d55e012f5393b982b65eb3e0ee954dd57b547930d3f242b0053dcdb923d17 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0, safer-buffer@npm:~2.1.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 + languageName: node + linkType: hard + +"sanitize-html@npm:~2.12.1": + version: 2.12.1 + resolution: "sanitize-html@npm:2.12.1" + dependencies: + deepmerge: ^4.2.2 + escape-string-regexp: ^4.0.0 + htmlparser2: ^8.0.0 + is-plain-object: ^5.0.0 + parse-srcset: ^1.0.2 + postcss: ^8.3.11 + checksum: fb96ea7170d51b5af2607f5cfd84464c78fc6f47e339407f55783e781c6a0288a8d40bbf97ea6a8758924ba9b2d33dcc4846bb94caacacd90d7f2de10ed8541a + 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.6.5, 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": + 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, schema-utils@npm:^4.2.0": + version: 4.3.3 + resolution: "schema-utils@npm:4.3.3" + dependencies: + "@types/json-schema": ^7.0.9 + ajv: ^8.9.0 + ajv-formats: ^2.1.1 + ajv-keywords: ^5.1.0 + checksum: 4e20404962fd45d5feb5942f7c9ab334a3d3dab94e15001049bd49e2959015f2c59089353953d4976fe664462c79121dea50392968182d4e2c4b75803f822fa3 + languageName: node + linkType: hard + +"select-hose@npm:^2.0.0": + version: 2.0.0 + resolution: "select-hose@npm:2.0.0" + checksum: d7e5fcc695a4804209d232a1b18624a5134be334d4e1114b0721f7a5e72bd73da483dcf41528c1af4f4f4892ad7cfd6a1e55c8ffb83f9c9fe723b738db609dbb + languageName: node + linkType: hard + +"selfsigned@npm:^2.4.1": + version: 2.4.1 + resolution: "selfsigned@npm:2.4.1" + dependencies: + "@types/node-forge": ^1.3.0 + node-forge: ^1 + checksum: 38b91c56f1d7949c0b77f9bbe4545b19518475cae15e7d7f0043f87b1626710b011ce89879a88969651f650a19d213bb15b7d5b4c2877df9eeeff7ba8f8b9bfa + languageName: node + linkType: hard + +"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.4.1, semver@npm:^5.5.0, semver@npm:^5.6.0": + version: 5.7.2 + resolution: "semver@npm:5.7.2" + bin: + semver: bin/semver + checksum: fb4ab5e0dd1c22ce0c937ea390b4a822147a9c53dbd2a9a0132f12fe382902beef4fbf12cf51bb955248d8d15874ce8cd89532569756384f994309825f10b686 + languageName: node + linkType: hard + +"semver@npm:7.5.3": + version: 7.5.3 + resolution: "semver@npm:7.5.3" + dependencies: + lru-cache: ^6.0.0 + bin: + semver: bin/semver.js + checksum: 9d58db16525e9f749ad0a696a1f27deabaa51f66e91d2fa2b0db3de3e9644e8677de3b7d7a03f4c15bc81521e0c3916d7369e0572dbde250d9bedf5194e2a8a7 + languageName: node + linkType: hard + +"semver@npm:7.6.3, semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.3": + version: 7.6.3 + resolution: "semver@npm:7.6.3" + bin: + semver: bin/semver.js + checksum: 4110ec5d015c9438f322257b1c51fe30276e5f766a3f64c09edd1d7ea7118ecbc3f379f3b69032bacf13116dc7abc4ad8ce0d7e2bd642e26b0d271b56b61a7d8 + languageName: node + linkType: hard + +"semver@npm:^6.0.0, 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 + +"send@npm:0.19.0": + version: 0.19.0 + resolution: "send@npm:0.19.0" + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: ~1.0.2 + escape-html: ~1.0.3 + etag: ~1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: ~1.2.1 + statuses: 2.0.1 + checksum: 5ae11bd900c1c2575525e2aa622e856804e2f96a09281ec1e39610d089f53aa69e13fd8db84b52f001d0318cf4bb0b3b904ad532fc4c0014eb90d32db0cff55f + languageName: node + linkType: hard + +"send@npm:~0.19.0, send@npm:~0.19.1": + version: 0.19.2 + resolution: "send@npm:0.19.2" + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: ~2.0.0 + escape-html: ~1.0.3 + etag: ~1.8.1 + fresh: ~0.5.2 + http-errors: ~2.0.1 + mime: 1.6.0 + ms: 2.1.3 + on-finished: ~2.4.1 + range-parser: ~1.2.1 + statuses: ~2.0.2 + checksum: f9e11b718b48dbea72daa6a80e36e5a00fb6d01b1a6cfda8b3135c9ca9db84257738283da23371f437148ccd8f400e6171cd2a3642fb43fda462da407d9d30c0 + languageName: node + linkType: hard + +"serve-index@npm:^1.9.1": + version: 1.9.1 + resolution: "serve-index@npm:1.9.1" + dependencies: + accepts: ~1.3.4 + batch: 0.6.1 + debug: 2.6.9 + escape-html: ~1.0.3 + http-errors: ~1.6.2 + mime-types: ~2.1.17 + parseurl: ~1.3.2 + checksum: e2647ce13379485b98a53ba2ea3fbad4d44b57540d00663b02b976e426e6194d62ac465c0d862cb7057f65e0de8ab8a684aa095427a4b8612412eca0d300d22f + languageName: node + linkType: hard + +"serve-static@npm:1.16.2": + version: 1.16.2 + resolution: "serve-static@npm:1.16.2" + dependencies: + encodeurl: ~2.0.0 + escape-html: ~1.0.3 + parseurl: ~1.3.3 + send: 0.19.0 + checksum: dffc52feb4cc5c68e66d0c7f3c1824d4e989f71050aefc9bd5f822a42c54c9b814f595fc5f2b717f4c7cc05396145f3e90422af31186a93f76cf15f707019759 + languageName: node + linkType: hard + +"serve-static@npm:~1.16.2": + version: 1.16.3 + resolution: "serve-static@npm:1.16.3" + dependencies: + encodeurl: ~2.0.0 + escape-html: ~1.0.3 + parseurl: ~1.3.3 + send: ~0.19.1 + checksum: ec7599540215e6676b223ea768bf7c256819180bf14f89d0b5d249a61bbb8f10b05b2a53048a153cb2cc7f3b367f1227d2fb715fe4b09d07299a9233eda1a453 + 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 + +"set-function-name@npm:^2.0.0, set-function-name@npm:^2.0.1": + 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 + +"setprototypeof@npm:1.1.0": + version: 1.1.0 + resolution: "setprototypeof@npm:1.1.0" + checksum: 27cb44304d6c9e1a23bc6c706af4acaae1a7aa1054d4ec13c05f01a99fd4887109a83a8042b67ad90dbfcd100d43efc171ee036eb080667172079213242ca36e + languageName: node + linkType: hard + +"setprototypeof@npm:1.2.0, setprototypeof@npm:~1.2.0": + version: 1.2.0 + resolution: "setprototypeof@npm:1.2.0" + checksum: be18cbbf70e7d8097c97f713a2e76edf84e87299b40d085c6bf8b65314e994cc15e2e317727342fa6996e38e1f52c59720b53fe621e2eb593a6847bf0356db89 + 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 + +"shell-quote@npm:^1.8.3": + version: 1.8.3 + resolution: "shell-quote@npm:1.8.3" + checksum: 550dd84e677f8915eb013d43689c80bb114860649ec5298eb978f40b8f3d4bc4ccb072b82c094eb3548dc587144bb3965a8676f0d685c1cf4c40b5dc27166242 + languageName: node + linkType: hard + +"side-channel-list@npm:^1.0.0": + version: 1.0.0 + resolution: "side-channel-list@npm:1.0.0" + dependencies: + es-errors: ^1.3.0 + object-inspect: ^1.13.3 + checksum: 603b928997abd21c5a5f02ae6b9cc36b72e3176ad6827fab0417ead74580cc4fb4d5c7d0a8a2ff4ead34d0f9e35701ed7a41853dac8a6d1a664fcce1a044f86f + languageName: node + linkType: hard + +"side-channel-map@npm:^1.0.1": + version: 1.0.1 + resolution: "side-channel-map@npm:1.0.1" + dependencies: + call-bound: ^1.0.2 + es-errors: ^1.3.0 + get-intrinsic: ^1.2.5 + object-inspect: ^1.13.3 + checksum: 42501371cdf71f4ccbbc9c9e2eb00aaaab80a4c1c429d5e8da713fd4d39ef3b8d4a4b37ed4f275798a65260a551a7131fd87fe67e922dba4ac18586d6aab8b06 + languageName: node + linkType: hard + +"side-channel-weakmap@npm:^1.0.2": + version: 1.0.2 + resolution: "side-channel-weakmap@npm:1.0.2" + dependencies: + call-bound: ^1.0.2 + es-errors: ^1.3.0 + get-intrinsic: ^1.2.5 + object-inspect: ^1.13.3 + side-channel-map: ^1.0.1 + checksum: a815c89bc78c5723c714ea1a77c938377ea710af20d4fb886d362b0d1f8ac73a17816a5f6640f354017d7e292a43da9c5e876c22145bac00b76cfb3468001736 + languageName: node + linkType: hard + +"side-channel@npm:^1.0.4, side-channel@npm:^1.0.6, side-channel@npm:^1.1.0": + version: 1.1.0 + resolution: "side-channel@npm:1.1.0" + dependencies: + es-errors: ^1.3.0 + object-inspect: ^1.13.3 + side-channel-list: ^1.0.0 + side-channel-map: ^1.0.1 + side-channel-weakmap: ^1.0.2 + checksum: bf73d6d6682034603eb8e99c63b50155017ed78a522d27c2acec0388a792c3ede3238b878b953a08157093b85d05797217d270b7666ba1f111345fbe933380ff + languageName: node + linkType: hard + +"signal-exit@npm:3.0.7, signal-exit@npm:^3.0.2, 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 + +"sigstore@npm:^1.3.0, sigstore@npm:^1.4.0": + version: 1.9.0 + resolution: "sigstore@npm:1.9.0" + dependencies: + "@sigstore/bundle": ^1.1.0 + "@sigstore/protobuf-specs": ^0.2.0 + "@sigstore/sign": ^1.0.0 + "@sigstore/tuf": ^1.0.3 + make-fetch-happen: ^11.0.1 + bin: + sigstore: bin/sigstore.js + checksum: b3f1ccf4d2d5e6af294ad851981cc9dc4c01b6b5b7aeb98582765f5d2e75aa2b9221133b8e572179bb305e16ce589339d9617b26b9fa0bea0c38c9adef792912 + languageName: node + linkType: hard + +"simple-swizzle@npm:^0.2.2": + version: 0.2.2 + resolution: "simple-swizzle@npm:0.2.2" + dependencies: + is-arrayish: ^0.3.1 + checksum: a7f3f2ab5c76c4472d5c578df892e857323e452d9f392e1b5cf74b74db66e6294a1e1b8b390b519fa1b96b5b613f2a37db6cffef52c3f1f8f3c5ea64eb2d54c0 + 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 + +"sirv@npm:^2.0.3": + version: 2.0.3 + resolution: "sirv@npm:2.0.3" + dependencies: + "@polka/url": ^1.0.0-next.20 + mrmime: ^1.0.0 + totalist: ^3.0.0 + checksum: e2dfd4c97735a6ad6d842d0eec2cd9e3919ff0e46f0d228248c5753ad4b70b832711e77e1259c031c439cdb08303cc54d923685c92b0e890145cc733af7c5568 + 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, slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c + 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 + +"sockjs@npm:^0.3.24": + version: 0.3.24 + resolution: "sockjs@npm:0.3.24" + dependencies: + faye-websocket: ^0.11.3 + uuid: ^8.3.2 + websocket-driver: ^0.7.4 + checksum: 355309b48d2c4e9755349daa29cea1c0d9ee23e49b983841c6bf7a20276b00d3c02343f9f33f26d2ee8b261a5a02961b52a25c8da88b2538c5b68d3071b4934c + 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 + +"sonic-boom@npm:3.8.0, sonic-boom@npm:^3.7.0": + version: 3.8.0 + resolution: "sonic-boom@npm:3.8.0" + dependencies: + atomic-sleep: ^1.0.0 + checksum: c21ece61a0cabb78db96547aecb4e9086eba2db2d53030221ed07215bfda2d25bb02906366ea2584cbe73d236dd7dd109122d3d7287914b76a9630e0a36ad819 + languageName: node + linkType: hard + +"sonic-boom@npm:^2.2.1": + version: 2.8.0 + resolution: "sonic-boom@npm:2.8.0" + dependencies: + atomic-sleep: ^1.0.0 + checksum: c7f9c89f931d7f60f8e0741551a729f0d81e6dc407a99420fc847a9a4c25af048a615b1188ab3c4f1fb3708fe4904973ddab6ebcc8ed5b78b50ab81a99045910 + languageName: node + linkType: hard + +"sort-keys@npm:^2.0.0": + version: 2.0.0 + resolution: "sort-keys@npm:2.0.0" + dependencies: + is-plain-obj: ^1.0.0 + checksum: f0fd827fa9f8f866e98588d2a38c35209afbf1e9a05bb0e4ceeeb8bbf31d923c8902b0a7e0f561590ddb65e58eba6a74f74b991c85360bcc52e83a3f0d1cffd7 + languageName: node + linkType: hard + +"sort-object-keys@npm:^1.1.3": + version: 1.1.3 + resolution: "sort-object-keys@npm:1.1.3" + checksum: abea944d6722a1710a1aa6e4f9509da085d93d5fc0db23947cb411eedc7731f80022ce8fa68ed83a53dd2ac7441fcf72a3f38c09b3d9bbc4ff80546aa2e151ad + languageName: node + linkType: hard + +"sort-package-json@npm:~1.53.1": + version: 1.53.1 + resolution: "sort-package-json@npm:1.53.1" + dependencies: + detect-indent: ^6.0.0 + detect-newline: 3.1.0 + git-hooks-list: 1.0.3 + globby: 10.0.0 + is-plain-obj: 2.1.0 + sort-object-keys: ^1.1.3 + bin: + sort-package-json: cli.js + checksum: 3bf0b1a625566eb061d7d811f4d8b1cebc2c4d85dcb746fa2b27d39703d3d78edead1aa990273b02264af0a618aa6e7edbf24621e280f03bb06418cbd1f07889 + languageName: node + linkType: hard + +"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.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.0, 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.16 + resolution: "spdx-license-ids@npm:3.0.16" + checksum: 5cdaa85aaa24bd02f9353a2e357b4df0a4f205cb35655f3fd0a5674a4fb77081f28ffd425379214bc3be2c2b7593ce1215df6bcc75884aeee0a9811207feabe2 + languageName: node + linkType: hard + +"spdy-transport@npm:^3.0.0": + version: 3.0.0 + resolution: "spdy-transport@npm:3.0.0" + dependencies: + debug: ^4.1.0 + detect-node: ^2.0.4 + hpack.js: ^2.1.6 + obuf: ^1.1.2 + readable-stream: ^3.0.6 + wbuf: ^1.7.3 + checksum: 0fcaad3b836fb1ec0bdd39fa7008b9a7a84a553f12be6b736a2512613b323207ffc924b9551cef0378f7233c85916cff1118652e03a730bdb97c0e042243d56c + languageName: node + linkType: hard + +"spdy@npm:^4.0.2": + version: 4.0.2 + resolution: "spdy@npm:4.0.2" + dependencies: + debug: ^4.1.0 + handle-thing: ^2.0.0 + http-deceiver: ^1.2.7 + select-hose: ^2.0.0 + spdy-transport: ^3.0.0 + checksum: 2c739d0ff6f56ad36d2d754d0261d5ec358457bea7cbf77b1b05b0c6464f2ce65b85f196305f50b7bd9120723eb94bae9933466f28e67e5cd8cde4e27f1d75f8 + languageName: node + linkType: hard + +"speech-rule-engine@npm:^4.0.6": + version: 4.0.7 + resolution: "speech-rule-engine@npm:4.0.7" + dependencies: + commander: 9.2.0 + wicked-good-xpath: 1.3.0 + xmldom-sre: 0.1.31 + bin: + sre: bin/sre + checksum: e5b8a5878be61d0344d5e9e0327e6bdf25a23de8fb66bd1898719d52b5f12f42b7e11a3387b8f293420c5eaab57b3ed9099be0adcc2132177301e81134612f38 + languageName: node + linkType: hard + +"split2@npm:^3.2.2": + version: 3.2.2 + resolution: "split2@npm:3.2.2" + dependencies: + readable-stream: ^3.0.0 + checksum: 8127ddbedd0faf31f232c0e9192fede469913aa8982aa380752e0463b2e31c2359ef6962eb2d24c125bac59eeec76873678d723b1c7ff696216a1cd071e3994a + languageName: node + linkType: hard + +"split2@npm:^4.0.0": + version: 4.2.0 + resolution: "split2@npm:4.2.0" + checksum: 05d54102546549fe4d2455900699056580cca006c0275c334611420f854da30ac999230857a85fdd9914dc2109ae50f80fda43d2a445f2aa86eccdc1dfce779d + languageName: node + linkType: hard + +"split@npm:^1.0.1": + version: 1.0.1 + resolution: "split@npm:1.0.1" + dependencies: + through: 2 + checksum: 12f4554a5792c7e98bb3e22b53c63bfa5ef89aa704353e1db608a55b51f5b12afaad6e4a8ecf7843c15f273f43cdadd67b3705cc43d48a75c2cf4641d51f7e7a + 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 + +"sshpk@npm:^1.18.0": + version: 1.18.0 + resolution: "sshpk@npm:1.18.0" + dependencies: + asn1: ~0.2.3 + assert-plus: ^1.0.0 + bcrypt-pbkdf: ^1.0.0 + dashdash: ^1.12.0 + ecc-jsbn: ~0.1.1 + getpass: ^0.1.1 + jsbn: ~0.1.0 + safer-buffer: ^2.0.2 + tweetnacl: ~0.14.0 + bin: + sshpk-conv: bin/sshpk-conv + sshpk-sign: bin/sshpk-sign + sshpk-verify: bin/sshpk-verify + checksum: 01d43374eee3a7e37b3b82fdbecd5518cbb2e47ccbed27d2ae30f9753f22bd6ffad31225cb8ef013bc3fb7785e686cea619203ee1439a228f965558c367c3cfa + languageName: node + linkType: hard + +"ssri@npm:^10.0.0, ssri@npm:^10.0.1": + version: 10.0.5 + resolution: "ssri@npm:10.0.5" + dependencies: + minipass: ^7.0.3 + checksum: 0a31b65f21872dea1ed3f7c200d7bc1c1b91c15e419deca14f282508ba917cbb342c08a6814c7f68ca4ca4116dd1a85da2bbf39227480e50125a1ceffeecb750 + languageName: node + linkType: hard + +"ssri@npm:^9.0.1": + version: 9.0.1 + resolution: "ssri@npm:9.0.1" + dependencies: + minipass: ^3.1.1 + checksum: fb58f5e46b6923ae67b87ad5ef1c5ab6d427a17db0bead84570c2df3cd50b4ceb880ebdba2d60726588272890bae842a744e1ecce5bd2a2a582fccd5068309eb + 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 + +"statuses@npm:2.0.1": + version: 2.0.1 + resolution: "statuses@npm:2.0.1" + checksum: 18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb + languageName: node + linkType: hard + +"statuses@npm:>= 1.4.0 < 2": + version: 1.5.0 + resolution: "statuses@npm:1.5.0" + checksum: c469b9519de16a4bb19600205cffb39ee471a5f17b82589757ca7bd40a8d92ebb6ed9f98b5a540c5d302ccbc78f15dc03cc0280dd6e00df1335568a5d5758a5c + languageName: node + linkType: hard + +"statuses@npm:~2.0.1, statuses@npm:~2.0.2": + version: 2.0.2 + resolution: "statuses@npm:2.0.2" + checksum: 6927feb50c2a75b2a4caab2c565491f7a93ad3d8dbad7b1398d52359e9243a20e2ebe35e33726dee945125ef7a515e9097d8a1b910ba2bbd818265a2f6c39879 + languageName: node + linkType: hard + +"steno@npm:^0.4.1": + version: 0.4.4 + resolution: "steno@npm:0.4.4" + dependencies: + graceful-fs: ^4.1.3 + checksum: 87df4121cf8159fceb3dc925111aff1e237bdea2d37f6684eabbcdea63bfcff79b3234f2a61ffe8de5cf17fcb97e2cf09075a2a98993251f79e2868fe0d5ba1e + languageName: node + linkType: hard + +"stream-shift@npm:^1.0.0": + version: 1.0.1 + resolution: "stream-shift@npm:1.0.1" + checksum: 59b82b44b29ec3699b5519a49b3cedcc6db58c72fb40c04e005525dfdcab1c75c4e0c180b923c380f204bed78211b9bad8faecc7b93dece4d004c3f6ec75737b + languageName: node + linkType: hard + +"streamx@npm:^2.15.0": + version: 2.22.0 + resolution: "streamx@npm:2.22.0" + dependencies: + bare-events: ^2.2.0 + fast-fifo: ^1.3.2 + text-decoder: ^1.1.0 + dependenciesMeta: + bare-events: + optional: true + checksum: 9b2772a084281129d402f298bddf8d5f3c09b6b3d9b5c93df942e886b0b963c742a89736415cc53ffb8fc1f6f5b0b3ea171ed0ba86f1b31cde6ed35db5e07f6d + 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.matchall@npm:^4.0.8": + version: 4.0.10 + resolution: "string.prototype.matchall@npm:4.0.10" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + get-intrinsic: ^1.2.1 + has-symbols: ^1.0.3 + internal-slot: ^1.0.5 + regexp.prototype.flags: ^1.5.0 + set-function-name: ^2.0.0 + side-channel: ^1.0.4 + checksum: 3c78bdeff39360c8e435d7c4c6ea19f454aa7a63eda95fa6fadc3a5b984446a2f9f2c02d5c94171ce22268a573524263fbd0c8edbe3ce2e9890d7cc036cdc3ed + 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.8": + 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.7": + 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.7": + 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, string_decoder@npm:^1.3.0": + 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-indent@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-indent@npm:3.0.0" + dependencies: + min-indent: ^1.0.0 + checksum: 18f045d57d9d0d90cd16f72b2313d6364fd2cb4bf85b9f593523ad431c8720011a4d5f08b6591c9d580f446e78855c5334a30fb91aa1560f5d9f95ed1b4a0530 + 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 + +"strip-json-comments@npm:~2.0.1": + version: 2.0.1 + resolution: "strip-json-comments@npm:2.0.1" + checksum: 1074ccb63270d32ca28edfb0a281c96b94dc679077828135141f27d52a5a398ef5e78bcf22809d23cadc2b81dfbe345eb5fd8699b385c8b1128907dec4a7d1e1 + languageName: node + linkType: hard + +"strong-log-transformer@npm:2.1.0, strong-log-transformer@npm:^2.1.0": + version: 2.1.0 + resolution: "strong-log-transformer@npm:2.1.0" + dependencies: + duplexer: ^0.1.1 + minimist: ^1.2.0 + through: ^2.3.4 + bin: + sl-log-transformer: bin/sl-log-transformer.js + checksum: abf9a4ac143118f26c3a0771b204b02f5cf4fa80384ae158f25e02bfbff761038accc44a7f65869ccd5a5995a7f2c16b1466b83149644ba6cecd3072a8927297 + languageName: node + linkType: hard + +"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 + +"stylis@npm:^4.3.6": + version: 4.3.6 + resolution: "stylis@npm:4.3.6" + checksum: 4f56a087caace85b34c3a163cf9d662f58f42dc865b2447af5c3ee3588eebaffe90875fe294578cce26f172ff527cad2b01433f6e1ae156400ec38c37c79fd61 + 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.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-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 + +"symbol-tree@npm:^3.2.4": + version: 3.2.4 + resolution: "symbol-tree@npm:3.2.4" + checksum: 6e8fc7e1486b8b54bea91199d9535bb72f10842e40c79e882fc94fb7b14b89866adf2fd79efa5ebb5b658bc07fb459ccce5ac0e99ef3d72f474e74aaf284029d + languageName: node + linkType: hard + +"tabbable@npm:^5.2.0": + version: 5.3.3 + resolution: "tabbable@npm:5.3.3" + checksum: 1aa56e1bb617cc10616c407f4e756f0607f3e2d30f9803664d70b85db037ca27e75918ed1c71443f3dc902e21dc9f991ce4b52d63a538c9b69b3218d3babcd70 + languageName: node + linkType: hard + +"tapable@npm:^2.0.0": + version: 2.2.1 + resolution: "tapable@npm:2.2.1" + checksum: 3b7a1b4d86fa940aad46d9e73d1e8739335efd4c48322cb37d073eb6f80f5281889bf0320c6d8ffcfa1a0dd5bfdbd0f9d037e252ef972aca595330538aac4d51 + languageName: node + linkType: hard + +"tar-stream@npm:^3.1.7": + version: 3.1.7 + resolution: "tar-stream@npm:3.1.7" + dependencies: + b4a: ^1.6.4 + fast-fifo: ^1.2.0 + streamx: ^2.15.0 + checksum: 6393a6c19082b17b8dcc8e7fd349352bb29b4b8bfe1075912b91b01743ba6bb4298f5ff0b499a3bbaf82121830e96a1a59d4f21a43c0df339e54b01789cb8cc6 + languageName: node + linkType: hard + +"tar-stream@npm:~2.2.0": + version: 2.2.0 + resolution: "tar-stream@npm:2.2.0" + dependencies: + bl: ^4.0.3 + end-of-stream: ^1.4.1 + fs-constants: ^1.0.0 + inherits: ^2.0.3 + readable-stream: ^3.1.1 + checksum: 699831a8b97666ef50021c767f84924cfee21c142c2eb0e79c63254e140e6408d6d55a065a2992548e72b06de39237ef2b802b99e3ece93ca3904a37622a66f3 + languageName: node + linkType: hard + +"tar@npm:6.1.11, tar@npm:^6.0.5, tar@npm:^6.1.11, tar@npm:^6.1.2": + version: 6.1.11 + resolution: "tar@npm:6.1.11" + dependencies: + chownr: ^2.0.0 + fs-minipass: ^2.0.0 + minipass: ^3.0.0 + minizlib: ^2.1.1 + mkdirp: ^1.0.3 + yallist: ^4.0.0 + checksum: a04c07bb9e2d8f46776517d4618f2406fb977a74d914ad98b264fc3db0fe8224da5bec11e5f8902c5b9bcb8ace22d95fbe3c7b36b8593b7dfc8391a25898f32f + languageName: node + linkType: hard + +"temp-dir@npm:1.0.0": + version: 1.0.0 + resolution: "temp-dir@npm:1.0.0" + checksum: cb2b58ddfb12efa83e939091386ad73b425c9a8487ea0095fe4653192a40d49184a771a1beba99045fbd011e389fd563122d79f54f82be86a55620667e08a6b2 + languageName: node + linkType: hard + +"terser@npm:^5.10.0": + version: 5.36.0 + resolution: "terser@npm:5.36.0" + 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: 489afd31901a2b170f7766948a3aa0e25da0acb41e9e35bd9f9b4751dfa2fc846e485f6fb9d34f0839a96af77f675b5fbf0a20c9aa54e0b8d7c219cf0b55e508 + 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-decoder@npm:^1.1.0": + version: 1.2.3 + resolution: "text-decoder@npm:1.2.3" + dependencies: + b4a: ^1.6.4 + checksum: d7642a61f9d72330eac52ff6b6e8d34dea03ebbb1e82749a8734e7892e246cf262ed70730d20c4351c5dc5334297b9cc6c0b6a8725a204a63a197d7728bb35e5 + languageName: node + linkType: hard + +"text-extensions@npm:^1.0.0": + version: 1.9.0 + resolution: "text-extensions@npm:1.9.0" + checksum: 56a9962c1b62d39b2bcb369b7558ca85c1b55e554b38dfd725edcc0a1babe5815782a60c17ff6b839093b163dfebb92b804208aaaea616ec7571c8059ae0cf44 + 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 + +"thingies@npm:^2.5.0": + version: 2.5.0 + resolution: "thingies@npm:2.5.0" + peerDependencies: + tslib: ^2 + checksum: e73e4bc96aefc41e4f1fdd1cf65eb988c9837f3b5fcd8a472ee30d91c2f7fa9b144562d6b4c5dade6ce70bc5865caf3e869f6d2975cce064b1d81dac3ece3508 + languageName: node + linkType: hard + +"thread-stream@npm:^0.15.1": + version: 0.15.2 + resolution: "thread-stream@npm:0.15.2" + dependencies: + real-require: ^0.1.0 + checksum: 0547795a8f357ba1ac0dba29c71f965182e29e21752951a04a7167515ee37524bfba6c410f31e65a01a8d3e5b93400b812889aa09523e38ce4d744c894ffa6c0 + languageName: node + linkType: hard + +"thread-stream@npm:^2.0.0": + version: 2.7.0 + resolution: "thread-stream@npm:2.7.0" + dependencies: + real-require: ^0.2.0 + checksum: 75ab019cda628344c7779e5f5a88f7759764efd29d320327ad2e6c2622778b5f1c43a3966d76a9ee5744086d61c680b413548f5521030f9e9055487684436165 + languageName: node + linkType: hard + +"through2@npm:^2.0.0, through2@npm:^2.0.3": + version: 2.0.5 + resolution: "through2@npm:2.0.5" + dependencies: + readable-stream: ~2.3.6 + xtend: ~4.0.1 + checksum: beb0f338aa2931e5660ec7bf3ad949e6d2e068c31f4737b9525e5201b824ac40cac6a337224856b56bd1ddd866334bbfb92a9f57cd6f66bc3f18d3d86fc0fe50 + languageName: node + linkType: hard + +"through@npm:2, through@npm:>=2.2.7 <3, through@npm:^2.3.4, through@npm:^2.3.6": + version: 2.3.8 + resolution: "through@npm:2.3.8" + checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd + languageName: node + linkType: hard + +"thunky@npm:^1.0.2": + version: 1.1.0 + resolution: "thunky@npm:1.1.0" + checksum: 993096c472b6b8f30e29dc777a8d17720e4cab448375041f20c0cb802a09a7fb2217f2a3e8cdc11851faa71c957e2db309357367fc9d7af3cb7a4d00f4b66034 + languageName: node + linkType: hard + +"tinyexec@npm:^1.0.1": + version: 1.0.1 + resolution: "tinyexec@npm:1.0.1" + checksum: 40f5219abf891884863b085ebe5e8c8bf95bde802f6480f279588b355835ad1604fa01eada2afe90063b48b53cd4b0be5c37393980e23f06fd10689d92fb9586 + languageName: node + linkType: hard + +"tinylogic@npm:^2.0.0": + version: 2.0.0 + resolution: "tinylogic@npm:2.0.0" + checksum: b966cbb41241a048095fb9e685d5e2020475fdea2c65b4ae51e5dee48964860a4505d987503c004b8a76e96b64c7da2f49954dd36c691d559c315d878ce7da29 + languageName: node + linkType: hard + +"tldts-core@npm:^6.1.84": + version: 6.1.84 + resolution: "tldts-core@npm:6.1.84" + checksum: 8828ae497afc717042f2e0ec1b8ca9f60887b53331978d16b044bdfc89016e1f4a17cbecbcfc4a853240a08dd9b770144dc40dcdab366a5addac5530275a6b01 + languageName: node + linkType: hard + +"tldts@npm:^6.1.32": + version: 6.1.84 + resolution: "tldts@npm:6.1.84" + dependencies: + tldts-core: ^6.1.84 + bin: + tldts: bin/cli.js + checksum: 6861c92000e4ccd725564a531bb60c9e673e0191fb26f43467f1c5ea1fb75344f9b8475050a73d78b6e855485cac12d5fceb7edf48c9b309e48ee5c2e6b1c41e + languageName: node + linkType: hard + +"tmp@npm:^0.0.33": + version: 0.0.33 + resolution: "tmp@npm:0.0.33" + dependencies: + os-tmpdir: ~1.0.2 + checksum: 902d7aceb74453ea02abbf58c203f4a8fc1cead89b60b31e354f74ed5b3fb09ea817f94fb310f884a5d16987dd9fa5a735412a7c2dd088dd3d415aa819ae3a28 + languageName: node + linkType: hard + +"tmp@npm:~0.2.1": + version: 0.2.1 + resolution: "tmp@npm:0.2.1" + dependencies: + rimraf: ^3.0.0 + checksum: 8b1214654182575124498c87ca986ac53dc76ff36e8f0e0b67139a8d221eaecfdec108c0e6ec54d76f49f1f72ab9325500b246f562b926f85bcdfca8bf35df9e + 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-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 + +"toidentifier@npm:1.0.1, toidentifier@npm:~1.0.1": + version: 1.0.1 + resolution: "toidentifier@npm:1.0.1" + checksum: 952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45 + 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 + +"totalist@npm:^3.0.0": + version: 3.0.1 + resolution: "totalist@npm:3.0.1" + checksum: 5132d562cf88ff93fd710770a92f31dbe67cc19b5c6ccae2efc0da327f0954d211bbfd9456389655d726c624f284b4a23112f56d1da931ca7cfabbe1f45e778a + 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 + +"tough-cookie@npm:^5.0.0": + version: 5.1.2 + resolution: "tough-cookie@npm:5.1.2" + dependencies: + tldts: ^6.1.32 + checksum: 31c626a77ac247b881665851035773afe7eeac283b91ed8da3c297ed55480ea1dd1ba3f5bb1f94b653ac2d5b184f17ce4bf1cf6ca7c58ee7c321b4323c4f8024 + 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 + +"tree-dump@npm:^1.0.3, tree-dump@npm:^1.1.0": + version: 1.1.0 + resolution: "tree-dump@npm:1.1.0" + peerDependencies: + tslib: 2 + checksum: 5f6fcd1b81b0fa7c638ff43cfbd1b62738c318ac14b0c8e439b1bcca353afe90785c075e9262ee18e50a863eae2eaa919ecfc8f22a4d347a0ea4b02ba088c8c0 + languageName: node + linkType: hard + +"treeify@npm:^1.1.0": + version: 1.1.0 + resolution: "treeify@npm:1.1.0" + checksum: aa00dded220c1dd052573bd6fc2c52862f09870851a284f0d3650d72bf913ba9b4f6b824f4f1ab81899bae29375f4266b07fe47cbf82343a1efa13cc09ce87af + languageName: node + linkType: hard + +"trim-newlines@npm:^3.0.0": + version: 3.0.1 + resolution: "trim-newlines@npm:3.0.1" + checksum: b530f3fadf78e570cf3c761fb74fef655beff6b0f84b29209bac6c9622db75ad1417f4a7b5d54c96605dcd72734ad44526fef9f396807b90839449eb543c6206 + languageName: node + linkType: hard + +"ts-dedent@npm:^2.2.0": + version: 2.2.0 + resolution: "ts-dedent@npm:2.2.0" + checksum: 93ed8f7878b6d5ed3c08d99b740010eede6bccfe64bce61c5a4da06a2c17d6ddbb80a8c49c2d15251de7594a4f93ffa21dd10e7be75ef66a4dc9951b4a94e2af + languageName: node + linkType: hard + +"ts-jest@npm:^29.0.3, 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 + +"tsconfig-paths@npm:^4.1.2": + version: 4.2.0 + resolution: "tsconfig-paths@npm:4.2.0" + dependencies: + json5: ^2.2.2 + minimist: ^1.2.6 + strip-bom: ^3.0.0 + checksum: 28c5f7bbbcabc9dabd4117e8fdc61483f6872a1c6b02a4b1c4d68c5b79d06896c3cc9547610c4c3ba64658531caa2de13ead1ea1bf321c7b53e969c4752b98c7 + languageName: node + linkType: hard + +"tslib@npm:^1.13.0, tslib@npm:^1.8.1": + version: 1.14.1 + resolution: "tslib@npm:1.14.1" + checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd + languageName: node + linkType: hard + +"tslib@npm:^2.0.0": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: e4aba30e632b8c8902b47587fd13345e2827fa639e7c3121074d5ee0880723282411a8838f830b55100cbe4517672f84a2472667d355b81e8af165a55dc6203a + languageName: node + linkType: hard + +"tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.6.1, tslib@npm:~2.6.2": + version: 2.6.2 + resolution: "tslib@npm:2.6.2" + checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad + languageName: node + linkType: hard + +"tsutils@npm:^3.21.0": + version: 3.21.0 + resolution: "tsutils@npm:3.21.0" + dependencies: + tslib: ^1.8.1 + peerDependencies: + typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + checksum: 1843f4c1b2e0f975e08c4c21caa4af4f7f65a12ac1b81b3b8489366826259323feb3fc7a243123453d2d1a02314205a7634e048d4a8009921da19f99755cdc48 + languageName: node + linkType: hard + +"tuf-js@npm:^1.1.7": + version: 1.1.7 + resolution: "tuf-js@npm:1.1.7" + dependencies: + "@tufjs/models": 1.0.4 + debug: ^4.3.4 + make-fetch-happen: ^11.1.1 + checksum: 089fc0dabe1fcaeca8b955b358b34272f23237ac9e074b5f983349eb44d9688fd137f28f493bbd8dfd865d1af4e76e0cc869d307eadd054d1b404914c3124ae5 + languageName: node + linkType: hard + +"tunnel-agent@npm:^0.6.0": + version: 0.6.0 + resolution: "tunnel-agent@npm:0.6.0" + dependencies: + safe-buffer: ^5.0.1 + checksum: 05f6510358f8afc62a057b8b692f05d70c1782b70db86d6a1e0d5e28a32389e52fa6e7707b6c5ecccacc031462e4bc35af85ecfe4bbc341767917b7cf6965711 + languageName: node + linkType: hard + +"tunnel@npm:^0.0.6": + version: 0.0.6 + resolution: "tunnel@npm:0.0.6" + checksum: c362948df9ad34b649b5585e54ce2838fa583aa3037091aaed66793c65b423a264e5229f0d7e9a95513a795ac2bd4cb72cda7e89a74313f182c1e9ae0b0994fa + languageName: node + linkType: hard + +"tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0": + version: 0.14.5 + resolution: "tweetnacl@npm:0.14.5" + checksum: 6061daba1724f59473d99a7bb82e13f211cdf6e31315510ae9656fefd4779851cb927adad90f3b488c8ed77c106adc0421ea8055f6f976ff21b27c5c4e918487 + languageName: node + linkType: hard + +"typanion@npm:^3.8.0": + version: 3.14.0 + resolution: "typanion@npm:3.14.0" + checksum: fc0590d02c13c659eb1689e8adf7777e6c00dc911377e44cd36fe1b1271cfaca71547149f12cdc275058c0de5562a14e5273adbae66d47e6e0320e36007f5912 + 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.18.0": + version: 0.18.1 + resolution: "type-fest@npm:0.18.1" + checksum: e96dcee18abe50ec82dab6cbc4751b3a82046da54c52e3b2d035b3c519732c0b3dd7a2fa9df24efd1a38d953d8d4813c50985f215f1957ee5e4f26b0fe0da395 + 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:^0.4.1": + version: 0.4.1 + resolution: "type-fest@npm:0.4.1" + checksum: 25f882d9cc2f24af7a0a529157f96dead157894c456bfbad16d48f990c43b470dfb79848e8d9c03fe1be72a7d169e44f6f3135b54628393c66a6189c5dc077f7 + languageName: node + linkType: hard + +"type-fest@npm:^0.6.0": + version: 0.6.0 + resolution: "type-fest@npm:0.6.0" + checksum: b2188e6e4b21557f6e92960ec496d28a51d68658018cba8b597bd3ef757721d1db309f120ae987abeeda874511d14b776157ff809f23c6d1ce8f83b9b2b7d60f + languageName: node + linkType: hard + +"type-fest@npm:^0.8.1": + version: 0.8.1 + resolution: "type-fest@npm:0.8.1" + checksum: d61c4b2eba24009033ae4500d7d818a94fd6d1b481a8111612ee141400d5f1db46f199c014766b9fa9b31a6a7374d96fc748c6d688a78a3ce5a33123839becb7 + languageName: node + linkType: hard + +"type-is@npm:~1.6.18": + version: 1.6.18 + resolution: "type-is@npm:1.6.18" + dependencies: + media-typer: 0.3.0 + mime-types: ~2.1.24 + checksum: 2c8e47675d55f8b4e404bcf529abdf5036c537a04c2b20177bcf78c9e3c1da69da3942b1346e6edb09e823228c0ee656ef0e033765ec39a70d496ef601a0c657 + 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 + +"typedarray@npm:^0.0.6": + version: 0.0.6 + resolution: "typedarray@npm:0.0.6" + checksum: 33b39f3d0e8463985eeaeeacc3cb2e28bc3dfaf2a5ed219628c0b629d5d7b810b0eb2165f9f607c34871d5daa92ba1dc69f49051cf7d578b4cbd26c340b9d1b1 + languageName: node + linkType: hard + +"typescript@npm:>=3 < 6, typescript@npm:~5.5.4": + version: 5.5.4 + resolution: "typescript@npm:5.5.4" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: b309040f3a1cd91c68a5a58af6b9fdd4e849b8c42d837b2c2e73f9a4f96a98c4f1ed398a9aab576ee0a4748f5690cf594e6b99dbe61de7839da748c41e6d6ca8 + languageName: node + linkType: hard + +"typescript@patch:typescript@>=3 < 6#~builtin, typescript@patch:typescript@~5.5.4#~builtin": + version: 5.5.4 + resolution: "typescript@patch:typescript@npm%3A5.5.4#~builtin::version=5.5.4&hash=85af82" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: fc52962f31a5bcb716d4213bef516885e4f01f30cea797a831205fc9ef12b405a40561c40eae3127ab85ba1548e7df49df2bcdee6b84a94bfbe3a0d7eff16b14 + 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 + +"ufo@npm:^1.5.4": + version: 1.5.4 + resolution: "ufo@npm:1.5.4" + checksum: f244703b7d4f9f0df4f9af23921241ab73410b591f4e5b39c23e3147f3159b139a4b1fb5903189c306129f7a16b55995dac0008e0fbae88a37c3e58cbc34d833 + languageName: node + linkType: hard + +"uglify-js@npm:^3.1.4": + version: 3.17.4 + resolution: "uglify-js@npm:3.17.4" + bin: + uglifyjs: bin/uglifyjs + checksum: 7b3897df38b6fc7d7d9f4dcd658599d81aa2b1fb0d074829dd4e5290f7318dbca1f4af2f45acb833b95b1fe0ed4698662ab61b87e94328eb4c0a0d3435baf924 + 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 + +"undici-types@npm:~6.20.0": + version: 6.20.0 + resolution: "undici-types@npm:6.20.0" + checksum: b7bc50f012dc6afbcce56c9fd62d7e86b20a62ff21f12b7b5cbf1973b9578d90f22a9c7fe50e638e96905d33893bf2f9f16d98929c4673c2480de05c6c96ea8b + 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 + +"universal-user-agent@npm:^6.0.0": + version: 6.0.0 + resolution: "universal-user-agent@npm:6.0.0" + checksum: 5092bbc80dd0d583cef0b62c17df0043193b74f425112ea6c1f69bc5eda21eeec7a08d8c4f793a277eb2202ffe9b44bec852fa3faff971234cd209874d1b79ef + languageName: node + linkType: hard + +"universalify@npm:^0.1.0": + version: 0.1.2 + resolution: "universalify@npm:0.1.2" + checksum: 40cdc60f6e61070fe658ca36016a8f4ec216b29bf04a55dce14e3710cc84c7448538ef4dad3728d0bfe29975ccd7bfb5f414c45e7b78883567fb31b246f02dff + 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 + +"unix-crypt-td-js@npm:1.1.4": + version: 1.1.4 + resolution: "unix-crypt-td-js@npm:1.1.4" + checksum: c1bfcd699fa0fa15eac087760e34fdf7e2e686de1c40dde7f550c2429389fd7ef68bf83ce804ce7882551573330832aae32e80be3ce991f7080aabd98f8bd554 + languageName: node + linkType: hard + +"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": + version: 1.0.0 + resolution: "unpipe@npm:1.0.0" + checksum: 4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa2 + languageName: node + linkType: hard + +"upath@npm:2.0.1": + version: 2.0.1 + resolution: "upath@npm:2.0.1" + checksum: 2db04f24a03ef72204c7b969d6991abec9e2cb06fb4c13a1fd1c59bc33b46526b16c3325e55930a11ff86a77a8cbbcda8f6399bf914087028c5beae21ecdb33c + languageName: node + linkType: hard + +"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 + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 1e47d80182ab6e4ad35396ad8b61008ae2a1330221175d0abd37689658bdb61af9b705bfc41057fd16682474d79944fb2d86767c5ed5ae34b6276b9bed353322 + 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 + +"utila@npm:~0.4": + version: 0.4.0 + resolution: "utila@npm:0.4.0" + checksum: 97ffd3bd2bb80c773429d3fb8396469115cd190dded1e733f190d8b602bd0a1bcd6216b7ce3c4395ee3c79e3c879c19d268dbaae3093564cb169ad1212d436f4 + languageName: node + linkType: hard + +"utils-merge@npm:1.0.1": + version: 1.0.1 + resolution: "utils-merge@npm:1.0.1" + checksum: c81095493225ecfc28add49c106ca4f09cdf56bc66731aa8dabc2edbbccb1e1bfe2de6a115e5c6a380d3ea166d1636410b62ef216bb07b3feb1cfde1d95d5080 + languageName: node + linkType: hard + +"uuid@npm:^11.1.0": + version: 11.1.0 + resolution: "uuid@npm:11.1.0" + bin: + uuid: dist/esm/bin/uuid + checksum: 840f19758543c4631e58a29439e51b5b669d5f34b4dd2700b6a1d15c5708c7a6e0c3e2c8c4a2eae761a3a7caa7e9884d00c86c02622ba91137bd3deade6b4b4a + 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 + +"uuid@npm:^9.0.0": + version: 9.0.1 + resolution: "uuid@npm:9.0.1" + bin: + uuid: dist/bin/uuid + checksum: 39931f6da74e307f51c0fb463dc2462807531dc80760a9bff1e35af4316131b4fc3203d16da60ae33f07fdca5b56f3f1dd662da0c99fea9aaeab2004780cc5f4 + languageName: node + linkType: hard + +"v8-compile-cache@npm:2.3.0": + version: 2.3.0 + resolution: "v8-compile-cache@npm:2.3.0" + checksum: adb0a271eaa2297f2f4c536acbfee872d0dd26ec2d76f66921aa7fc437319132773483344207bdbeee169225f4739016d8d2dbf0553913a52bb34da6d0334f8e + languageName: node + linkType: hard + +"v8-to-istanbul@npm:^9.0.1": + version: 9.1.3 + resolution: "v8-to-istanbul@npm:9.1.3" + dependencies: + "@jridgewell/trace-mapping": ^0.3.12 + "@types/istanbul-lib-coverage": ^2.0.1 + convert-source-map: ^2.0.0 + checksum: 5d592ab3d186b386065dace8e01c543a922a904b3cfac39667de172455a6b3d0e8e1401574fecb8a12092ad0809b5a8fd15f1cc14d0666139a1bb77cd6ac2cf8 + languageName: node + linkType: hard + +"validate-npm-package-license@npm:3.0.4, validate-npm-package-license@npm:^3.0.1, validate-npm-package-license@npm:^3.0.4": + 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-npm-package-name@npm:5.0.0, validate-npm-package-name@npm:^5.0.0": + version: 5.0.0 + resolution: "validate-npm-package-name@npm:5.0.0" + dependencies: + builtins: ^5.0.0 + checksum: 5342a994986199b3c28e53a8452a14b2bb5085727691ea7aa0d284a6606b127c371e0925ae99b3f1ef7cc7d2c9de75f52eb61a3d1cc45e39bca1e3a9444cbb4e + languageName: node + linkType: hard + +"validate-npm-package-name@npm:^3.0.0": + version: 3.0.0 + resolution: "validate-npm-package-name@npm:3.0.0" + dependencies: + builtins: ^1.0.3 + checksum: ce4c68207abfb22c05eedb09ff97adbcedc80304a235a0844f5344f1fd5086aa80e4dbec5684d6094e26e35065277b765c1caef68bcea66b9056761eddb22967 + 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 + +"validator@npm:13.12.0": + version: 13.12.0 + resolution: "validator@npm:13.12.0" + checksum: fb8f070724770b1449ea1a968605823fdb112dbd10507b2802f8841cda3e7b5c376c40f18c84e6a7b59de320a06177e471554101a85f1fa8a70bac1a84e48adf + languageName: node + linkType: hard + +"vary@npm:^1, vary@npm:~1.1.2": + version: 1.1.2 + resolution: "vary@npm:1.1.2" + checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b + languageName: node + linkType: hard + +"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.3": + version: 4.1.3 + resolution: "vega-crossfilter@npm:4.1.3" + dependencies: + d3-array: ^3.2.2 + vega-dataflow: ^5.7.7 + vega-util: ^1.17.3 + checksum: a0117bf07c6d94192333f16b0994c90748ad88db675702a79c1073b0d94100619ab3c75898bd45430fee6b6d46028b4c3b205819062de4fc72e93f5a9fc7bb0d + languageName: node + linkType: hard + +"vega-dataflow@npm:^5.7.7, vega-dataflow@npm:~5.7.7": + version: 5.7.7 + resolution: "vega-dataflow@npm:5.7.7" + dependencies: + vega-format: ^1.1.3 + vega-loader: ^4.5.3 + vega-util: ^1.17.3 + checksum: 43c1c039fea007dbca1a7c942821ac734a3068b3ef848f87b3b51265eb2dbd63796f58295313dda9ee8a6d308d9dfb7083530f69a5ffb0f756ce5345544cc60e + languageName: node + linkType: hard + +"vega-embed@npm:^6.2.1": + version: 6.23.0 + resolution: "vega-embed@npm:6.23.0" + dependencies: + fast-json-patch: ^3.1.1 + json-stringify-pretty-compact: ^3.0.0 + semver: ^7.5.4 + tslib: ^2.6.1 + vega-interpreter: ^1.0.5 + vega-schema-url-parser: ^2.2.0 + vega-themes: ^2.14.0 + vega-tooltip: ^0.33.0 + yallist: "*" + peerDependencies: + vega: ^5.21.0 + vega-lite: "*" + checksum: 529207859ea34a30a9aa60f57956d9fdc3bd0b3007bda47e1cc14b53960b7846826b1faf2f6e84d5c203e6c9e6de4d96fda32c4b2e908eb18f7ef03e6bfd15c5 + languageName: node + linkType: hard + +"vega-encode@npm:~4.10.2": + version: 4.10.2 + resolution: "vega-encode@npm:4.10.2" + dependencies: + d3-array: ^3.2.2 + d3-interpolate: ^3.0.1 + vega-dataflow: ^5.7.7 + vega-scale: ^7.4.2 + vega-util: ^1.17.3 + checksum: d8aa4250debf405ed6c9ca641aaa2a2d6a7ba7c3b7f7d2a319c5a1719fc9ff3b0303563120da2572fe8dd6f2db89b2f1eaeb254ec180d8ca8b16b8dbf8826124 + 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.2.0, vega-expression@npm:~5.2.0": + version: 5.2.0 + resolution: "vega-expression@npm:5.2.0" + dependencies: + "@types/estree": ^1.0.0 + vega-util: ^1.17.3 + checksum: 38df3b25ea994b28ec59fba869b9cb1e87518cedd3525886dc7aef5205372bac323635cd7be9907e4d71281e129689f475d3a688ea1ed015f4607088a27ca72a + languageName: node + linkType: hard + +"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.2": + version: 4.2.2 + resolution: "vega-force@npm:4.2.2" + dependencies: + d3-force: ^3.0.0 + vega-dataflow: ^5.7.7 + vega-util: ^1.17.3 + checksum: 9a632423cf8e1bd36b953ad99de7fde1a06fc1f1fccdde5692a90e7c1c6df7c4baa9ee950eca5c9c028db3b9ea23efef73af337d1129caa6343f6f45a484c5fe + languageName: node + linkType: hard + +"vega-format@npm:^1.1.3, vega-format@npm:~1.1.3": + version: 1.1.3 + resolution: "vega-format@npm:1.1.3" + dependencies: + d3-array: ^3.2.2 + d3-format: ^3.1.0 + d3-time-format: ^4.1.0 + vega-time: ^2.1.3 + vega-util: ^1.17.3 + checksum: ed46385be98ed837bc23f2578e6e81bfe30be18de0c2bacea8d3d02811d62ca91631f875ffae385be201b669e55f4e1d48cbf926a5377da02ff73f12f8e4f9bf + languageName: node + linkType: hard + +"vega-functions@npm:^5.17.0, vega-functions@npm:~5.17.0": + version: 5.17.0 + resolution: "vega-functions@npm:5.17.0" + dependencies: + d3-array: ^3.2.2 + d3-color: ^3.1.0 + d3-geo: ^3.1.0 + vega-dataflow: ^5.7.7 + vega-expression: ^5.2.0 + vega-scale: ^7.4.2 + vega-scenegraph: ^4.13.1 + vega-selections: ^5.6.0 + vega-statistics: ^1.9.0 + vega-time: ^2.1.3 + vega-util: ^1.17.3 + checksum: 0f8011dec621bc3170f9b7b97d34472d27f743388b661a1be3ed419c5c8bc39dfaacce409fd0ae9164511334c9971e4a575c66108e4f353d74ed1d20e5e87429 + languageName: node + linkType: hard + +"vega-geo@npm:~4.4.3": + version: 4.4.3 + resolution: "vega-geo@npm:4.4.3" + 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.7 + vega-projection: ^1.6.2 + vega-statistics: ^1.9.0 + vega-util: ^1.17.3 + checksum: d4576ff22301d8c0dbac83c9a008c8bc01b8097765f0c79100b864caf907032a0b2280855a8cc955da795ccf9d9b6cacf1734fec7c8cc417832487e921e8cdd0 + languageName: node + linkType: hard + +"vega-hierarchy@npm:~4.1.3": + version: 4.1.3 + resolution: "vega-hierarchy@npm:4.1.3" + dependencies: + d3-hierarchy: ^3.1.2 + vega-dataflow: ^5.7.7 + vega-util: ^1.17.3 + checksum: f51c417a76c4d404cbcd79c43871316db49e6c8862cf11ea62fa053219735152863f7cc0e4ad1fb62949a06adc69293ca85c511f291ca1d96ded7b192532d829 + languageName: node + linkType: hard + +"vega-interpreter@npm:^1.0.5": + version: 1.0.5 + resolution: "vega-interpreter@npm:1.0.5" + checksum: ed54bbeddc7942aa442ddf224b620fe68122ef4b93967376a03b6463feddf3da7a837e7b1e0a8d23fbf55898d3ac4a00a034f07acecb05b2d3e09621609dd19e + languageName: node + linkType: hard + +"vega-label@npm:~1.3.1": + version: 1.3.1 + resolution: "vega-label@npm:1.3.1" + dependencies: + vega-canvas: ^1.2.7 + vega-dataflow: ^5.7.7 + vega-scenegraph: ^4.13.1 + vega-util: ^1.17.3 + checksum: 2a8ea6a59d76f668eece257bc9c7649652882c6d1d0fabd3ee7fbddc7948be2d7c608ab9f211e68574e89f4a8cb34cce127cba08dfc0ce228c3c47b558943f0b + languageName: node + linkType: hard + +"vega-lite@npm:^5.6.1-next.1": + version: 5.15.1 + resolution: "vega-lite@npm:5.15.1" + 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: ad7ad74e8ba5e5573d6ef1d251065ac28ae0be97f829f5e66e1c4c1ca43b9902d9fd95a94818c69f71cac21c29f6240a308725a3867489629cc6782c355511c5 + languageName: node + linkType: hard + +"vega-loader@npm:^4.5.3, vega-loader@npm:~4.5.3": + version: 4.5.3 + resolution: "vega-loader@npm:4.5.3" + dependencies: + d3-dsv: ^3.0.1 + node-fetch: ^2.6.7 + topojson-client: ^3.1.0 + vega-format: ^1.1.3 + vega-util: ^1.17.3 + checksum: f3b87f12725de843ecd6a44f29800d5aae9966c1b07d632a70fef87cae93f433bc5e47ba25f45f99725f988cb424016453d1b0452ca695401b7b40c47b47b411 + languageName: node + linkType: hard + +"vega-parser@npm:~6.5.0": + version: 6.5.0 + resolution: "vega-parser@npm:6.5.0" + dependencies: + vega-dataflow: ^5.7.7 + vega-event-selector: ^3.0.1 + vega-functions: ^5.17.0 + vega-scale: ^7.4.2 + vega-util: ^1.17.3 + checksum: f39584a0687a252d85fe3355132421f3036a1fc645bb8b9240d754b03eb8062324af66ad8d0bd8ea94667a3e0fd10f210329a5c85ec99662322c055b6b694513 + languageName: node + linkType: hard + +"vega-projection@npm:^1.6.2, vega-projection@npm:~1.6.2": + version: 1.6.2 + resolution: "vega-projection@npm:1.6.2" + dependencies: + d3-geo: ^3.1.0 + d3-geo-projection: ^4.0.0 + vega-scale: ^7.4.2 + checksum: 55deb14c22b4d39ec3d1248dc1718d2ae9addad8d11937617158a8c979fcfdaacf274ee55cebd111a72d6489af25c8351a5e7dbcc19bddb3221bf28ae5dd140d + languageName: node + linkType: hard + +"vega-regression@npm:~1.3.1": + version: 1.3.1 + resolution: "vega-regression@npm:1.3.1" + dependencies: + d3-array: ^3.2.2 + vega-dataflow: ^5.7.7 + vega-statistics: ^1.9.0 + vega-util: ^1.17.3 + checksum: 6bf8dd47f64ec37c8c7d8820b71b55c6b0833a53df1acad6ce5d831d9119d0a576dda464523d1d6941f53971826062355259ba9bf483101928344f1804ac64cb + languageName: node + linkType: hard + +"vega-runtime@npm:^6.2.1, vega-runtime@npm:~6.2.1": + version: 6.2.1 + resolution: "vega-runtime@npm:6.2.1" + dependencies: + vega-dataflow: ^5.7.7 + vega-util: ^1.17.3 + checksum: 5481f943c18c4277d3f0aabd3e06a2d37b57fde52ef2d2e93ade759184f530bbca4ed38e3708342338dac7d56ce94eb3c3cb30ef2e3d10a7b8ab796dee40e8e4 + languageName: node + linkType: hard + +"vega-scale@npm:^7.4.2, vega-scale@npm:~7.4.2": + version: 7.4.2 + resolution: "vega-scale@npm:7.4.2" + dependencies: + d3-array: ^3.2.2 + d3-interpolate: ^3.0.1 + d3-scale: ^4.0.2 + d3-scale-chromatic: ^3.1.0 + vega-time: ^2.1.3 + vega-util: ^1.17.3 + checksum: 3168ad4e9e80075f8d521947070225906085bdfeafe774c31f7549b3b80d31d5cb3f94e9cd8d408098bfe6431347fa95ae7654b006d7893f33057a789cc75156 + languageName: node + linkType: hard + +"vega-scenegraph@npm:^4.13.1, vega-scenegraph@npm:~4.13.1": + version: 4.13.1 + resolution: "vega-scenegraph@npm:4.13.1" + dependencies: + d3-path: ^3.1.0 + d3-shape: ^3.2.0 + vega-canvas: ^1.2.7 + vega-loader: ^4.5.3 + vega-scale: ^7.4.2 + vega-util: ^1.17.3 + checksum: 66ef0e8fd50f3794aece2f951c2c092518e52448b4ecd334cca944e1161b3c1b9680b8743ca0358c1b3e92e1b81aaa6ce5042dce5c5a20e3bcdd22613378b7d0 + languageName: node + linkType: hard + +"vega-schema-url-parser@npm:^2.2.0": + version: 2.2.0 + resolution: "vega-schema-url-parser@npm:2.2.0" + checksum: 1ab17cde0a2514f42cfd0a1a19c7451e104025c68c09a15c9fe6a0f09bcc7b1c814a8a40f28ab5a69f3c9bda9824ca3f553a7b4338c5c64f7072edcd7bc3d130 + languageName: node + linkType: hard + +"vega-selections@npm:^5.6.0": + version: 5.6.0 + resolution: "vega-selections@npm:5.6.0" + dependencies: + d3-array: 3.2.4 + vega-expression: ^5.2.0 + vega-util: ^1.17.3 + checksum: 6533b003fbc4cd523ae5c7650e5e905007fe37ac3db01ad6f652b62b3ab6a846441ddd38018a7e13cf275e176d92c193e2100c02aac8f03788f51326aeafd5fd + languageName: node + linkType: hard + +"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-themes@npm:^2.14.0": + version: 2.14.0 + resolution: "vega-themes@npm:2.14.0" + peerDependencies: + vega: "*" + vega-lite: "*" + checksum: 0da158f62e61f95343c51d20c871eba2606ceb8c800fd5f645715b5f166c4b5ebe206bf0852cbc12cff26ef0924981fb92ad9ea7d7260baba02a6d2235fcb045 + languageName: node + linkType: hard + +"vega-time@npm:^2.1.3, vega-time@npm:~2.1.3": + version: 2.1.3 + resolution: "vega-time@npm:2.1.3" + dependencies: + d3-array: ^3.2.2 + d3-time: ^3.1.0 + vega-util: ^1.17.3 + checksum: c2a72ac6593ea1fabab95b72ce33b89a6ce2161330bcbaaa6508d61bbcd7edc940a9e76ae6d9a979be9d7c81eef4b26cd3592209bac201eca7356dfea7cc38ac + languageName: node + linkType: hard + +"vega-tooltip@npm:^0.33.0": + version: 0.33.0 + resolution: "vega-tooltip@npm:0.33.0" + dependencies: + vega-util: ^1.17.2 + checksum: c15a6c4c43290ab21ced2691a2688e52b0975d81817338f1f1dde28fed4230d3a8e45ed35e62f0c347d3f982b99843edd3617a0506b1890183afea3c49c4a0d2 + languageName: node + linkType: hard + +"vega-transforms@npm:~4.12.1": + version: 4.12.1 + resolution: "vega-transforms@npm:4.12.1" + dependencies: + d3-array: ^3.2.2 + vega-dataflow: ^5.7.7 + vega-statistics: ^1.9.0 + vega-time: ^2.1.3 + vega-util: ^1.17.3 + checksum: 60489c52f7a50d52fb0f226c5e958298bbb8e34fd0f0faec17edd1c0de193436b22b308e4e71a12be1015f1fe3adc90f6474905c8ae0083be97e744b8f9d085e + languageName: node + linkType: hard + +"vega-typings@npm:~1.5.0": + version: 1.5.0 + resolution: "vega-typings@npm:1.5.0" + dependencies: + "@types/geojson": 7946.0.4 + vega-event-selector: ^3.0.1 + vega-expression: ^5.2.0 + vega-util: ^1.17.3 + checksum: 847999836a15bfaebfd60208114eca6ca9262d0d67abfbc51d05932cd879017dcec5190fb1131a00e1060a6eb8672d975889cfca782ef2e99dc7a23c4cc49acf + languageName: node + linkType: hard + +"vega-util@npm:^1.17.1, vega-util@npm:^1.17.2, vega-util@npm:^1.17.3, vega-util@npm:~1.17.2": + version: 1.17.3 + resolution: "vega-util@npm:1.17.3" + checksum: d8bb21e2cb2ffa005bc3d9859d13aca8a0f13d6a143b8e12598c307de011ce1bc947402769e735ceb62d3b4e648214bdc00664aea1d819ad56563090e96d44b5 + languageName: node + linkType: hard + +"vega-view-transforms@npm:~4.6.1": + version: 4.6.1 + resolution: "vega-view-transforms@npm:4.6.1" + dependencies: + vega-dataflow: ^5.7.7 + vega-scenegraph: ^4.13.1 + vega-util: ^1.17.3 + checksum: 36c06f3feb018d9f86546cd329392dce19699308f6fde3c931805dffa805e3dbf2d55b1f76831d7a754067645281d3ada51910e190b9c08e7111932f14cc2031 + languageName: node + linkType: hard + +"vega-view@npm:~5.15.0": + version: 5.15.0 + resolution: "vega-view@npm:5.15.0" + dependencies: + d3-array: ^3.2.2 + d3-timer: ^3.0.1 + vega-dataflow: ^5.7.7 + vega-format: ^1.1.3 + vega-functions: ^5.17.0 + vega-runtime: ^6.2.1 + vega-scenegraph: ^4.13.1 + vega-util: ^1.17.3 + checksum: 2a0674f3bf83b7c0e4e917278f53e5e254093d33332669954a2fd3f35fcebc7e898482e28c8638cee16d44eaee69c1583962e73f18a2f125908a35f90411f9d6 + languageName: node + linkType: hard + +"vega-voronoi@npm:~4.2.4": + version: 4.2.4 + resolution: "vega-voronoi@npm:4.2.4" + dependencies: + d3-delaunay: ^6.0.2 + vega-dataflow: ^5.7.7 + vega-util: ^1.17.3 + checksum: 66a6664d74973a28ecbf0eb1aba4c6c290eb8ccda670b61e2d3d10fefed28ff5de71f0800850f01b7c18032031f5501e833ce3edcc2278c5449401809d185be6 + languageName: node + linkType: hard + +"vega-wordcloud@npm:~4.1.6": + version: 4.1.6 + resolution: "vega-wordcloud@npm:4.1.6" + dependencies: + vega-canvas: ^1.2.7 + vega-dataflow: ^5.7.7 + vega-scale: ^7.4.2 + vega-statistics: ^1.9.0 + vega-util: ^1.17.3 + checksum: 5f0cd55d6d4fcec1345be496eec57b38cd78b8294d4f88ea0cacc6241fc64543b50f4a3165640f93e73cf0a3d8866218673ce3720a467741c778a413899207e8 + languageName: node + linkType: hard + +"vega@npm:^5.20.0": + version: 5.32.0 + resolution: "vega@npm:5.32.0" + dependencies: + vega-crossfilter: ~4.1.3 + vega-dataflow: ~5.7.7 + vega-encode: ~4.10.2 + vega-event-selector: ~3.0.1 + vega-expression: ~5.2.0 + vega-force: ~4.2.2 + vega-format: ~1.1.3 + vega-functions: ~5.17.0 + vega-geo: ~4.4.3 + vega-hierarchy: ~4.1.3 + vega-label: ~1.3.1 + vega-loader: ~4.5.3 + vega-parser: ~6.5.0 + vega-projection: ~1.6.2 + vega-regression: ~1.3.1 + vega-runtime: ~6.2.1 + vega-scale: ~7.4.2 + vega-scenegraph: ~4.13.1 + vega-statistics: ~1.9.0 + vega-time: ~2.1.3 + vega-transforms: ~4.12.1 + vega-typings: ~1.5.0 + vega-util: ~1.17.2 + vega-view: ~5.15.0 + vega-view-transforms: ~4.6.1 + vega-voronoi: ~4.2.4 + vega-wordcloud: ~4.1.6 + checksum: 4230d80cd9b9bd08cc2feb92cf3d9d8cdbafd61fb533b59b1671c035074a7bfad81eff61fdbc0bb667e2fc7cf4958576f43edda949bf6c9034bca55fe45205d2 + languageName: node + linkType: hard + +"verdaccio-audit@npm:13.0.0-next-8.1": + version: 13.0.0-next-8.1 + resolution: "verdaccio-audit@npm:13.0.0-next-8.1" + dependencies: + "@verdaccio/config": 8.0.0-next-8.1 + "@verdaccio/core": 8.0.0-next-8.1 + express: 4.21.0 + https-proxy-agent: 5.0.1 + node-fetch: cjs + checksum: 930fe9bfc782601664504688547444d9de167046ce8d0d24d113de4881d3b1507cd5293a8edb5285880ae796ea94c6f7d50e09148d519e8700df057dcf41d1d9 + languageName: node + linkType: hard + +"verdaccio-htpasswd@npm:13.0.0-next-8.1": + version: 13.0.0-next-8.1 + resolution: "verdaccio-htpasswd@npm:13.0.0-next-8.1" + dependencies: + "@verdaccio/core": 8.0.0-next-8.1 + "@verdaccio/file-locking": 13.0.0-next-8.0 + apache-md5: 1.1.8 + bcryptjs: 2.4.3 + core-js: 3.37.1 + debug: 4.3.7 + http-errors: 2.0.0 + unix-crypt-td-js: 1.1.4 + checksum: d637d5ba6af5b74a2cf477235677b6cb6fdaf51aed1f96bb5b5b3faa0780055ac180c6225e4783f75e16848166f9223fb71fbe6606e84b31d96392356c94d0a9 + languageName: node + linkType: hard + +"verdaccio@npm:^5.33.0": + version: 5.33.0 + resolution: "verdaccio@npm:5.33.0" + dependencies: + "@cypress/request": 3.0.6 + "@verdaccio/auth": 8.0.0-next-8.1 + "@verdaccio/config": 8.0.0-next-8.1 + "@verdaccio/core": 8.0.0-next-8.1 + "@verdaccio/local-storage-legacy": 11.0.2 + "@verdaccio/logger-7": 8.0.0-next-8.1 + "@verdaccio/middleware": 8.0.0-next-8.1 + "@verdaccio/search-indexer": 8.0.0-next-8.0 + "@verdaccio/signature": 8.0.0-next-8.0 + "@verdaccio/streams": 10.2.1 + "@verdaccio/tarball": 13.0.0-next-8.1 + "@verdaccio/ui-theme": 8.0.0-next-8.1 + "@verdaccio/url": 13.0.0-next-8.1 + "@verdaccio/utils": 7.0.1-next-8.1 + JSONStream: 1.3.5 + async: 3.2.6 + clipanion: 4.0.0-rc.4 + compression: 1.7.5 + cors: 2.8.5 + debug: ^4.3.7 + envinfo: 7.14.0 + express: 4.21.1 + express-rate-limit: 5.5.1 + fast-safe-stringify: 2.1.1 + handlebars: 4.7.8 + js-yaml: 4.1.0 + jsonwebtoken: 9.0.2 + kleur: 4.1.5 + lodash: 4.17.21 + lru-cache: 7.18.3 + mime: 3.0.0 + mkdirp: 1.0.4 + mv: 2.1.1 + pkginfo: 0.4.1 + semver: 7.6.3 + validator: 13.12.0 + verdaccio-audit: 13.0.0-next-8.1 + verdaccio-htpasswd: 13.0.0-next-8.1 + bin: + verdaccio: bin/verdaccio + checksum: 0474cccb9e788f356468fe7227f3e2faa7cb594b1a30785e1e7516ef7c8486216abd22208ab15427ab7b274f6adee4ed1cbde064bf29d631d27693f0db67d35e + languageName: node + linkType: hard + +"verror@npm:1.10.0": + version: 1.10.0 + resolution: "verror@npm:1.10.0" + dependencies: + assert-plus: ^1.0.0 + core-util-is: 1.0.2 + extsprintf: ^1.2.0 + checksum: c431df0bedf2088b227a4e051e0ff4ca54df2c114096b0c01e1cbaadb021c30a04d7dd5b41ab277bcd51246ca135bf931d4c4c796ecae7a4fef6d744ecef36ea + 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" + checksum: f302a01e59272adc1ae6494581fa31c15499f9278df76366e3b97b2236c7c53ebfc71efbace9041cfd2caa7f91675b9e56f2407871a1b3c7f760a2e2ee61484a + 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.5, vscode-languageserver-protocol@npm:^3.17.0": + version: 3.17.5 + resolution: "vscode-languageserver-protocol@npm:3.17.5" + dependencies: + vscode-jsonrpc: 8.2.0 + vscode-languageserver-types: 3.17.5 + checksum: dfb42d276df5dfea728267885b99872ecff62f6c20448b8539fae71bb196b420f5351c5aca7c1047bf8fb1f89fa94a961dce2bc5bf7e726198f4be0bb86a1e71 + languageName: node + linkType: hard + +"vscode-languageserver-textdocument@npm:~1.0.11": + version: 1.0.12 + resolution: "vscode-languageserver-textdocument@npm:1.0.12" + checksum: 49415c8f065860693fdd6cb0f7b8a24470130dc941e887a396b6e6bbae93be132323a644aa1edd7d0eec38a730e05a2d013aebff6bddd30c5af374ef3f4cd9ab + languageName: node + linkType: hard + +"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 + +"vscode-languageserver@npm:~9.0.1": + version: 9.0.1 + resolution: "vscode-languageserver@npm:9.0.1" + dependencies: + vscode-languageserver-protocol: 3.17.5 + bin: + installServerIntoExtension: bin/installServerIntoExtension + checksum: 8b7dfda47fb64c3f48a9dabd3f01938cc8d39f3f068f1ee586eaf0a373536180a1047bdde8d876f965cfc04160d1587e99828b61b742b0342595fee67c8814ea + languageName: node + linkType: hard + +"vscode-uri@npm:~3.0.8": + version: 3.0.8 + resolution: "vscode-uri@npm:3.0.8" + checksum: 514249126850c0a41a7d8c3c2836cab35983b9dc1938b903cfa253b9e33974c1416d62a00111385adcfa2b98df456437ab704f709a2ecca76a90134ef5eb4832 + 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 + +"wbuf@npm:^1.1.0, wbuf@npm:^1.7.3": + version: 1.7.3 + resolution: "wbuf@npm:1.7.3" + dependencies: + minimalistic-assert: ^1.0.0 + checksum: 2abc306c96930b757972a1c4650eb6b25b5d99f24088714957f88629e137db569368c5de0e57986c89ea70db2f1df9bba11a87cb6d0c8694b6f53a0159fab3bf + languageName: node + linkType: hard + +"wcwidth@npm:^1.0.0, wcwidth@npm:^1.0.1": + version: 1.0.1 + resolution: "wcwidth@npm:1.0.1" + dependencies: + defaults: ^1.0.3 + checksum: 814e9d1ddcc9798f7377ffa448a5a3892232b9275ebb30a41b529607691c0491de47cba426e917a4d08ded3ee7e9ba2f3fe32e62ee3cd9c7d3bafb7754bd553c + 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-bundle-analyzer@npm:4.10.2": + version: 4.10.2 + resolution: "webpack-bundle-analyzer@npm:4.10.2" + dependencies: + "@discoveryjs/json-ext": 0.5.7 + acorn: ^8.0.4 + acorn-walk: ^8.0.0 + commander: ^7.2.0 + debounce: ^1.2.1 + escape-string-regexp: ^4.0.0 + gzip-size: ^6.0.0 + html-escaper: ^2.0.2 + opener: ^1.5.2 + picocolors: ^1.0.0 + sirv: ^2.0.3 + ws: ^7.3.1 + bin: + webpack-bundle-analyzer: lib/bin/analyzer.js + checksum: 4f0275e7d87bb6203a618ca5d2d4953943979d986fa2b91be1bf1ad0bcd22bec13398803273d11699f9fbcf106896311208a72d63fe5f8a47b687a226e598dc1 + languageName: node + linkType: hard + +"webpack-bundle-analyzer@npm:^4.8.0": + version: 4.9.1 + resolution: "webpack-bundle-analyzer@npm:4.9.1" + dependencies: + "@discoveryjs/json-ext": 0.5.7 + acorn: ^8.0.4 + acorn-walk: ^8.0.0 + commander: ^7.2.0 + escape-string-regexp: ^4.0.0 + gzip-size: ^6.0.0 + is-plain-object: ^5.0.0 + lodash.debounce: ^4.0.8 + lodash.escape: ^4.0.1 + lodash.flatten: ^4.4.0 + lodash.invokemap: ^4.6.0 + lodash.pullall: ^4.2.0 + lodash.uniqby: ^4.7.0 + opener: ^1.5.2 + picocolors: ^1.0.0 + sirv: ^2.0.3 + ws: ^7.3.1 + bin: + webpack-bundle-analyzer: lib/bin/analyzer.js + checksum: 7e891c28d5a903242893e55ecc714fa01d7ad6bedade143235c07091b235915349812fa048968462781d59187507962f38b6c61ed7d25fb836ba0ac0ee919a39 + languageName: node + linkType: hard + +"webpack-dev-middleware@npm:^7.4.2": + version: 7.4.5 + resolution: "webpack-dev-middleware@npm:7.4.5" + dependencies: + colorette: ^2.0.10 + memfs: ^4.43.1 + mime-types: ^3.0.1 + on-finished: ^2.4.1 + range-parser: ^1.2.1 + schema-utils: ^4.0.0 + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + checksum: 54c31f757fec48822c37129ba166f21985ad61a5971655e3c3b7358d997975587687d40dc6c1194f4e54615bd0916df15e4ebc3e3b5203300a52038eaeed5c0b + languageName: node + linkType: hard + +"webpack-dev-server@npm:5.2.2": + version: 5.2.2 + resolution: "webpack-dev-server@npm:5.2.2" + dependencies: + "@types/bonjour": ^3.5.13 + "@types/connect-history-api-fallback": ^1.5.4 + "@types/express": ^4.17.21 + "@types/express-serve-static-core": ^4.17.21 + "@types/serve-index": ^1.9.4 + "@types/serve-static": ^1.15.5 + "@types/sockjs": ^0.3.36 + "@types/ws": ^8.5.10 + ansi-html-community: ^0.0.8 + bonjour-service: ^1.2.1 + chokidar: ^3.6.0 + colorette: ^2.0.10 + compression: ^1.7.4 + connect-history-api-fallback: ^2.0.0 + express: ^4.21.2 + graceful-fs: ^4.2.6 + http-proxy-middleware: ^2.0.9 + ipaddr.js: ^2.1.0 + launch-editor: ^2.6.1 + open: ^10.0.3 + p-retry: ^6.2.0 + schema-utils: ^4.2.0 + selfsigned: ^2.4.1 + serve-index: ^1.9.1 + sockjs: ^0.3.24 + spdy: ^4.0.2 + webpack-dev-middleware: ^7.4.2 + ws: ^8.18.0 + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + bin: + webpack-dev-server: bin/webpack-dev-server.js + checksum: 96994d684563cfee76dcb031c7c18a1fa10aee2df0520a0f327c8d72d4692c0dcdd7e455adeed4f8da9695f2e9f8f5481053c7e6e27d7e35085e45357fc9f697 + languageName: node + linkType: hard + +"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:^3.0.0": + version: 3.3.3 + resolution: "webpack-sources@npm:3.3.3" + checksum: 243d438ec4dfe805cca20fa66d111114b1f277b8ecfa95bb6ee0a6c7d996aee682539952028c2b203a6c170e6ef56f71ecf3e366e90bf1cb58b0ae982176b651 + languageName: node + linkType: hard + +"websocket-driver@npm:>=0.5.1, websocket-driver@npm:^0.7.4": + version: 0.7.4 + resolution: "websocket-driver@npm:0.7.4" + dependencies: + http-parser-js: ">=0.5.1" + safe-buffer: ">=5.1.0" + websocket-extensions: ">=0.1.1" + checksum: fffe5a33fe8eceafd21d2a065661d09e38b93877eae1de6ab5d7d2734c6ed243973beae10ae48c6613cfd675f200e5a058d1e3531bc9e6c5d4f1396ff1f0bfb9 + languageName: node + linkType: hard + +"websocket-extensions@npm:>=0.1.1": + version: 0.1.4 + resolution: "websocket-extensions@npm:0.1.4" + checksum: 5976835e68a86afcd64c7a9762ed85f2f27d48c488c707e67ba85e717b90fa066b98ab33c744d64255c9622d349eedecf728e65a5f921da71b58d0e9591b9038 + 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-fetch@npm:^3.0.0": + version: 3.6.19 + resolution: "whatwg-fetch@npm:3.6.19" + checksum: 2896bc9ca867ea514392c73e2a272f65d5c4916248fe0837a9df5b1b92f247047bc76cf7c29c28a01ac6c5fb4314021d2718958c8a08292a96d56f72b2f56806 + 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-builtin-type@npm:^1.1.3": + version: 1.1.3 + resolution: "which-builtin-type@npm:1.1.3" + dependencies: + function.prototype.name: ^1.1.5 + has-tostringtag: ^1.0.0 + is-async-function: ^2.0.0 + is-date-object: ^1.0.5 + is-finalizationregistry: ^1.0.2 + is-generator-function: ^1.0.10 + is-regex: ^1.1.4 + is-weakref: ^1.0.2 + isarray: ^2.0.5 + which-boxed-primitive: ^1.0.2 + which-collection: ^1.0.1 + which-typed-array: ^1.1.9 + checksum: 43730f7d8660ff9e33d1d3f9f9451c4784265ee7bf222babc35e61674a11a08e1c2925019d6c03154fcaaca4541df43abe35d2720843b9b4cbcebdcc31408f36 + languageName: node + linkType: hard + +"which-collection@npm:^1.0.1": + version: 1.0.1 + resolution: "which-collection@npm:1.0.1" + dependencies: + is-map: ^2.0.1 + is-set: ^2.0.1 + is-weakmap: ^2.0.1 + is-weakset: ^2.0.1 + checksum: c815bbd163107ef9cb84f135e6f34453eaf4cca994e7ba85ddb0d27cea724c623fae2a473ceccfd5549c53cc65a5d82692de418166df3f858e1e5dc60818581c + languageName: node + linkType: hard + +"which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.9": + 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": + 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 + +"which@npm:^3.0.0": + version: 3.0.1 + resolution: "which@npm:3.0.1" + dependencies: + isexe: ^2.0.0 + bin: + node-which: bin/which.js + checksum: adf720fe9d84be2d9190458194f814b5e9015ae4b88711b150f30d0f4d0b646544794b86f02c7ebeec1db2029bc3e83a7ff156f542d7521447e5496543e26890 + languageName: node + linkType: hard + +"wicked-good-xpath@npm:1.3.0": + version: 1.3.0 + resolution: "wicked-good-xpath@npm:1.3.0" + checksum: 1aa84bd57426aa07f95d7eca0b0410e841b8e7a35248c9404fa235eaf6a0932c811a96cbdc763c3df18ab76c7644fd8e807d8f185146154d3fc6baf554dcc7e3 + 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 + +"wordwrap@npm:^1.0.0": + version: 1.0.0 + resolution: "wordwrap@npm:1.0.0" + checksum: 2a44b2788165d0a3de71fd517d4880a8e20ea3a82c080ce46e294f0b68b69a2e49cff5f99c600e275c698a90d12c5ea32aff06c311f0db2eb3f1201f3e7b2a04 + 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:^6.2.0": + version: 6.2.0 + resolution: "wrap-ansi@npm:6.2.0" + dependencies: + ansi-styles: ^4.0.0 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + checksum: 6cd96a410161ff617b63581a08376f0cb9162375adeb7956e10c8cd397821f7eb2a6de24eb22a0b28401300bf228c86e50617cd568209b5f6775b93c97d2fe3a + 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: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 + +"write-file-atomic@npm:^2.4.2": + version: 2.4.3 + resolution: "write-file-atomic@npm:2.4.3" + dependencies: + graceful-fs: ^4.1.11 + imurmurhash: ^0.1.4 + signal-exit: ^3.0.2 + checksum: 2db81f92ae974fd87ab4a5e7932feacaca626679a7c98fcc73ad8fcea5a1950eab32fa831f79e9391ac99b562ca091ad49be37a79045bd65f595efbb8f4596ae + 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-json-file@npm:^3.2.0": + version: 3.2.0 + resolution: "write-json-file@npm:3.2.0" + dependencies: + detect-indent: ^5.0.0 + graceful-fs: ^4.1.15 + make-dir: ^2.1.0 + pify: ^4.0.1 + sort-keys: ^2.0.0 + write-file-atomic: ^2.4.2 + checksum: 2b97ce2027d53c28a33e4a8e7b0d565faf785988b3776f9e0c68d36477c1fb12639fd0d70877d92a861820707966c62ea9c5f7a36a165d615fd47ca8e24c8371 + languageName: node + linkType: hard + +"write-pkg@npm:4.0.0": + version: 4.0.0 + resolution: "write-pkg@npm:4.0.0" + dependencies: + sort-keys: ^2.0.0 + type-fest: ^0.4.1 + write-json-file: ^3.2.0 + checksum: 7864d44370f42a6761f6898d07ee2818c7a2faad45116580cf779f3adaf94e4bea5557612533a6c421c32323253ecb63b50615094960a637aeaef5df0fd2d6cd + languageName: node + linkType: hard + +"ws@npm:^7.3.1": + version: 7.5.9 + resolution: "ws@npm:7.5.9" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: c3c100a181b731f40b7f2fddf004aa023f79d64f489706a28bc23ff88e87f6a64b3c6651fbec3a84a53960b75159574d7a7385709847a62ddb7ad6af76f49138 + languageName: node + linkType: hard + +"ws@npm:^8.11.0": + version: 8.14.2 + resolution: "ws@npm:8.14.2" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 3ca0dad26e8cc6515ff392b622a1467430814c463b3368b0258e33696b1d4bed7510bc7030f7b72838b9fdeb8dbd8839cbf808367d6aae2e1d668ce741d4308b + languageName: node + linkType: hard + +"ws@npm:^8.18.0": + version: 8.18.3 + resolution: "ws@npm:8.18.3" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: d64ef1631227bd0c5fe21b3eb3646c9c91229402fb963d12d87b49af0a1ef757277083af23a5f85742bae1e520feddfb434cb882ea59249b15673c16dc3f36e0 + languageName: node + linkType: hard + +"wsl-utils@npm:^0.1.0": + version: 0.1.0 + resolution: "wsl-utils@npm:0.1.0" + dependencies: + is-wsl: ^3.1.0 + checksum: de4c92187e04c3c27b4478f410a02e81c351dc85efa3447bf1666f34fc80baacd890a6698ec91995631714086992036013286aea3d77e6974020d40a08e00aec + 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 + +"xmldom-sre@npm:0.1.31": + version: 0.1.31 + resolution: "xmldom-sre@npm:0.1.31" + checksum: dbd101600a64c1640b06fb2b5c626ce6d909fd40c966fcae84a2b64c708fe466630766173b5760e0275db2a2c542e048b14a2a6568feece2c315f0cd22a2f642 + languageName: node + linkType: hard + +"xtend@npm:^4.0.1, 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.6 + resolution: "y-protocols@npm:1.0.6" + dependencies: + lib0: ^0.2.85 + peerDependencies: + yjs: ^13.0.0 + checksum: 4b57c8811befcf2e45c3d47830005f8a33e626c734f78a42fe8a4fa3caad2233ba85a7c8bceefbd52ffc40130d3f3faee664fd0d1c324ff1fa8817a056ccdc1c + 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:*, yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 + 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 + +"yargs-parser@npm:20.2.4, yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.3": + version: 20.2.4 + resolution: "yargs-parser@npm:20.2.4" + checksum: d251998a374b2743a20271c2fd752b9fbef24eb881d53a3b99a7caa5e8227fcafd9abf1f345ac5de46435821be25ec12189a11030c12ee6481fef6863ed8b924 + languageName: node + linkType: hard + +"yargs-parser@npm:21.1.1, 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:16.2.0, yargs@npm:^16.2.0": + version: 16.2.0 + resolution: "yargs@npm:16.2.0" + dependencies: + cliui: ^7.0.2 + escalade: ^3.1.1 + get-caller-file: ^2.0.5 + require-directory: ^2.1.1 + string-width: ^4.2.0 + y18n: ^5.0.5 + yargs-parser: ^20.2.2 + checksum: b14afbb51e3251a204d81937c86a7e9d4bdbf9a2bcee38226c900d00f522969ab675703bee2a6f99f8e20103f608382936034e64d921b74df82b63c07c5e8f59 + languageName: node + linkType: hard + +"yargs@npm:^17.3.1, yargs@npm:^17.6.2, 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.40": + version: 13.6.8 + resolution: "yjs@npm:13.6.8" + dependencies: + lib0: ^0.2.74 + checksum: a2a6fd17a2cce6461b64bedd69f66845b9dfd4702e285be0b5e382840337232e54ba5cf5d48f871263074de625d3902d17ab8a1766695af3fc05a0b4da8d95e0 + 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