From 6b38b19df3849487f58d2315517754e07a5ba841 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Bouysset?= Date: Sat, 23 Dec 2023 18:02:35 +0100 Subject: [PATCH] add notebook tests --- .github/workflows/_build-package.yml | 86 ++++ .github/workflows/build.yml | 73 +-- .github/workflows/ci.yml | 225 +++++++-- .gitignore | 11 +- DEVELOPMENT.md | 32 +- docs/conf.py | 47 +- docs/contents.md | 28 +- docs/environment.yml | 14 +- mols2grid/_version.py | 2 +- package.json | 4 +- pyproject.toml | 15 +- tests/environment.yml | 10 +- tests/notebooks/README.md | 1 + tests/notebooks/jupyter_server_config.py | 35 ++ tests/notebooks/package.json | 22 + tests/notebooks/playwright.config.js | 13 + tests/notebooks/tests/mols2grid.test.ts | 46 ++ tests/notebooks/tests/tests.ipynb | 47 ++ tests/notebooks/yarn.lock | 0 tests/test_interface.py | 4 +- yarn.lock | 595 ++++++++--------------- 21 files changed, 766 insertions(+), 544 deletions(-) create mode 100644 .github/workflows/_build-package.yml create mode 100644 tests/notebooks/README.md create mode 100644 tests/notebooks/jupyter_server_config.py create mode 100644 tests/notebooks/package.json create mode 100644 tests/notebooks/playwright.config.js create mode 100644 tests/notebooks/tests/mols2grid.test.ts create mode 100644 tests/notebooks/tests/tests.ipynb create mode 100644 tests/notebooks/yarn.lock diff --git a/.github/workflows/_build-package.yml b/.github/workflows/_build-package.yml new file mode 100644 index 0000000..dd8934d --- /dev/null +++ b/.github/workflows/_build-package.yml @@ -0,0 +1,86 @@ +name: build-package +on: + workflow_call: + inputs: + check-prerelease: + default: false + required: false + type: boolean + cache-package: + default: false + required: false + type: boolean + +defaults: + run: + shell: bash -l {0} + +jobs: + build: + name: Build mols2grid package + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Get prerelease version tags + if: inputs.check-prerelease + id: prerelease-check + run: | + py_dirty_tag=$(awk '/__version__ = "[[:digit:]+]\.[[:digit:]+]\.[[:digit:]+]\-.+"/ {print $3}' ./mols2grid/_version.py) + py_is_pre=$(test -z "$py_dirty_tag" && echo "false" || echo "true") + js_version_string=$(grep '"version":' ./package.json) + js_dirty_tag=$(echo "$js_version_string" | cut -d- -f2) + js_is_pre=$(test "$js_version_string" == "$js_dirty_tag" && echo "false" || echo "true") + echo "py=$py_is_pre" >> $GITHUB_OUTPUT + echo "js=$js_is_pre" >> $GITHUB_OUTPUT + + - name: Fail if prerelease is not correctly versioned + if: (inputs.check-prerelease) && !( steps.prerelease-check.outputs.py && steps.prerelease-check.outputs.js ) + uses: actions/github-script@v3 + with: + script: | + core.setFailed("Versions are not tagged as a prerelease") + + - name: Install node + uses: actions/setup-node@v3 + with: + node-version: "18.12.1" + registry-url: 'https://registry.npmjs.org/' + cache: "yarn" + + - name: Install python with pip + uses: actions/setup-python@v4 + with: + python-version: "3.10" + cache: "pip" + + - name: Install dependencies for packaging + run: | + pip install setuptools wheel build virtualenv + + - name: Check python installation + run: | + which python + python --version + pip --version + pip list + + - name: Build package + run: | + python -m build . + + - name: List output + run: | + ls -lah dist/* + + - name: Cache package + if: inputs.cache-package + uses: actions/cache/save@v3 + id: cache-mols2grid + with: + path: | + dist/mols2grid-*.whl + dist/mols2grid-*.tar.gz + key: mols2grid-${{ runner.os }}-${{ github.sha }} \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1deb7a4..b2023c5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,67 +12,32 @@ env: IS_PRERELEASE: ${{ github.event_name == 'workflow_dispatch' }} jobs: - build-n-publish: - name: Build and publish mols2grid + build: + name: Build package + uses: ./.github/workflows/_build-package.yml + with: + check-prerelease: ${{ env.IS_PRERELEASE }} + + publish: + name: Publish to PyPI and NPM runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Get prerelease version tags - if: env.IS_PRERELEASE == 'true' - run: | - py_dirty_tag=$(awk '/__version__ = "[[:digit:]+]\.[[:digit:]+]\.[[:digit:]+]\-.+"/ {print $3}' ./mols2grid/_version.py) - py_is_pre=$(test -z "$py_dirty_tag" && echo "false" || echo "true") - js_version_string=$(grep '"version":' ./package.json) - js_dirty_tag=$(echo "$js_version_string" | cut -d- -f2) - js_is_pre=$(test "$js_version_string" == "$js_dirty_tag" && echo "false" || echo "true") - echo "py_is_pre=$py_is_pre" >> $GITHUB_ENV - echo "js_is_pre=$js_is_pre" >> $GITHUB_ENV - - - name: Fail if prerelease is not correctly versioned - if: (env.IS_PRERELEASE == 'true') && !( env.py_is_pre && env.js_is_pre ) - uses: actions/github-script@v3 - with: - script: | - core.setFailed("Versions are not tagged as a prerelease") - - - name: Install node - uses: actions/setup-node@v3 + - name: Retrieve cached package + uses: actions/cache/restore@v3 + id: cache-mols2grid with: - node-version: 18 - registry-url: 'https://registry.npmjs.org/' - cache: "yarn" + path: | + dist/mols2grid-*.whl + dist/mols2grid-*.tar.gz + key: mols2grid-${{ runner.os }}-${{ github.sha }} - - name: Install python with pip - uses: actions/setup-python@v4 + - name: Publish package to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 with: - python-version: 3.8 - cache: "pip" - - - name: Install dependencies for packaging - run: | - pip install setuptools wheel build virtualenv twine - - - name: Check python installation - run: | - which python - python --version - pip --version - pip list - - - name: Build package - run: | - python -m build . - - - name: Publish the Python package - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} - run: twine upload dist/mols2grid*.{tar.gz,whl} + password: ${{ secrets.PYPI_TOKEN }} - - name: Publish the NPM package + - name: Publish the package through NPM run: npm publish env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 55491ec..062fc7b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,42 +19,30 @@ concurrency: jobs: tests: name: ${{ matrix.label }} - runs-on: ${{ matrix.os }} + runs-on: ubuntu-latest strategy: matrix: include: - - label: CI-old - os: ubuntu-latest + - label: rdkit-2021 python-version: 3.8 - extra_dependencies: "rdkit==2020.03.1 boost-cpp=1.72.0=h359cf19_6" - - label: CI-edge - os: ubuntu-latest + extra_dependencies: "rdkit==2021.03.1" + - label: rdkit-latest python-version: "3.10" extra_dependencies: "rdkit" - - label: CI-py3.9-rdkit2022 - os: ubuntu-latest - python-version: 3.9 - extra_dependencies: "rdkit==2022.03.1" steps: - uses: actions/checkout@v3 - - name: Install node - uses: actions/setup-node@v3 - with: - node-version: 18 - cache: "yarn" - - name: Install Firefox uses: browser-actions/setup-firefox@latest - + - run: firefox --version - name: Prepare Selenium uses: browser-actions/setup-geckodriver@latest with: geckodriver-version: "0.32.0" - + - run: geckodriver --version - name: Cache conda @@ -64,15 +52,27 @@ jobs: with: path: ~/conda_pkgs_dir key: - conda-${{ hashFiles('environment.yml') }}-${{ matrix.label }}-${{ env.CACHE_NUMBER }} + conda-${{ hashFiles('tests/environment.yml') }}-${{ matrix.label }}-${{ env.CACHE_NUMBER }} - name: Cache pip uses: actions/cache@v3 with: path: ~/.cache/pip - key: pip-${{ hashFiles('setup.cfg') }} + key: pip-${{ hashFiles('pyproject.toml') }} restore-keys: pip- + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT + + - name: Cache yarn + uses: actions/cache@v3 + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: yarn-${{ hashFiles('yarn.lock') }} + restore-keys: | + yarn- + - name: Setup Conda uses: conda-incubator/setup-miniconda@v2 with: @@ -93,14 +93,16 @@ jobs: - name: Install remaining conda dependencies run: | - mamba install ${{ matrix.extra_dependencies }} + mamba install 'jupyterlab>=3,<5' ipywidgets=8 ${{ matrix.extra_dependencies }} mamba list - - name: Install package through pip + - name: Build and install package run: | pip install .[tests,build] + jupyter labextension develop . --overwrite pip list - + jupyter labextension list + - name: Run tests run: | pytest --color=yes --disable-pytest-warnings \ @@ -120,26 +122,167 @@ jobs: fail_ci_if_error: true verbose: true - - name: Prepare for build - run: | - pip uninstall -y mols2grid - python -m build . - echo "$SCRIPT" > test_install.py - cat test_install.py + build: + uses: ./.github/workflows/_build-package.yml + with: + cache-package: true + + test-build: + name: Test build + needs: [build] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Retrieve cached package + uses: actions/cache/restore@v3 + id: cache-mols2grid + with: + path: | + dist/mols2grid-*.whl + dist/mols2grid-*.tar.gz + key: mols2grid-${{ runner.os }}-${{ github.sha }} + + - name: Install python with pip + uses: actions/setup-python@v4 + with: + python-version: "3.10" + cache: "pip" + + - name: Prepare quick test script + run: | + curl https://raw.githubusercontent.com/rdkit/rdkit/master/Docs/Book/data/solubility.test.sdf --output solubility.sdf + echo "$SCRIPT" > test_install.py + cat test_install.py + env: + SCRIPT: | + import mols2grid as mg + mg.save("solubility.sdf", output="/dev/null") + + - name: Test tar.gz build + run: | + pip install rdkit dist/mols2grid-*.tar.gz \ + && python test_install.py \ + && pip uninstall -y mols2grid + + - name: Test wheel build + run: | + pip install dist/mols2grid-*.whl \ + && python test_install.py + + notebook-tests: + needs: [build] + name: ${{ matrix.label }} + runs-on: ubuntu-latest + strategy: + matrix: + include: + - label: JLab-3-Widgets-7 + extra_dependencies: "'jupyterlab~=3.2' 'ipywidgets~=7.6'" + - label: JLab-4-Widgets-8 + extra_dependencies: "'jupyterlab~=4.0' 'ipywidgets~=8.1'" + + steps: + - uses: actions/checkout@v3 + + - name: Retrieve cached package + uses: actions/cache/restore@v3 + id: cache-mols2grid + with: + path: | + dist/mols2grid-*.whl + dist/mols2grid-*.tar.gz + key: mols2grid-${{ runner.os }}-${{ github.sha }} + + - name: Cache conda + uses: actions/cache@v3 env: - SCRIPT: | - import mols2grid as mg - from rdkit import RDConfig - sdf = f"{RDConfig.RDDocsDir}/Book/data/solubility.test.sdf" - mg.save(sdf, output="/dev/null") + CACHE_NUMBER: 2 + with: + path: ~/conda_pkgs_dir + key: + conda-${{ matrix.label }}-${{ env.CACHE_NUMBER }} + + - name: Get yarn cache directory path + id: yarn-ui-cache-dir-path + run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT + + - name: Cache yarn + uses: actions/cache@v3 + env: + CACHE_NUMBER: 0 + with: + path: ${{ steps.yarn-ui-cache-dir-path.outputs.dir }} + key: yarn-ui-${{ hashFiles('tests/notebooks/yarn.lock') }}-${{ matrix.label }}-${{ env.CACHE_NUMBER }} - - name: Test tar.gz build + - name: Setup Conda + uses: conda-incubator/setup-miniconda@v2 + with: + python-version: "3.10" + miniforge-variant: Mambaforge + miniforge-version: latest + use-mamba: true + + - name: Install remaining conda dependencies run: | - pip install dist/mols2grid-*.tar.gz - python test_install.py - pip uninstall -y mols2grid + mamba install rdkit pandas ${{ matrix.extra_dependencies }} + mamba list + + - name: Get wheel absolute path + id: wheel-path + run: echo "value=$(ls -d $PWD/dist/mols2grid-*.whl)" >> $GITHUB_OUTPUT + + - name: Install the extension + run: | + pip install 'mols2grid[packaging] @ file://${{ steps.wheel-path.outputs.value }}' + jupyter labextension list + + - name: Install Test Dependencies + id: install-test-deps + run: | + jlpm install --no-immutable + npx playwright install chromium + working-directory: tests/notebooks + + - name: Upload Yarn lock + if: steps.install-test-deps.outcome.failure + uses: actions/upload-artifact@v3 + with: + name: yarn-lock + path: | + tests/notebooks/yarn.lock - - name: Test wheel build + - name: Execute integration tests + id: test-ui + working-directory: tests/notebooks run: | - pip install dist/mols2grid-*.whl - python test_install.py + npx playwright test + + - name: Upload Playwright Test assets + if: always() + uses: actions/upload-artifact@v3 + with: + name: notebooks-test-assets + path: | + tests/notebooks/test-results + + - name: Upload Playwright Test report + if: always() + uses: actions/upload-artifact@v3 + with: + name: notebooks-test-report + path: | + tests/notebooks/playwright-report + + - name: Update snapshots + if: steps.test-ui.outcome.failure + working-directory: tests/notebooks + run: | + jlpm test:update + + - name: Upload updated snapshots + if: steps.test-ui.outcome.failure + uses: actions/upload-artifact@v3 + with: + name: notebook-updated-snapshots + path: tests/notebooks/tests \ No newline at end of file diff --git a/.gitignore b/.gitignore index 01df724..d3d5f6a 100644 --- a/.gitignore +++ b/.gitignore @@ -127,10 +127,7 @@ dist .vscode-test # yarn v2 -.yarn/cache -.yarn/unplugged -.yarn/build-state.yml -.yarn/install-state.gz +**/.yarn/ .pnp.* ### Node Patch ### @@ -369,10 +366,16 @@ $RECYCLE.BIN/ # ------------- **/coverage/ +# UI-tests +# -------- +tests/notebooks/test-results +tests/notebooks/playwright-report + # ====== # Custom # ====== +.yarnrc.yml mols2grid/nbextension/index.* mols2grid/labextension .vscode/ diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index a539fa2..0fc4409 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -1,15 +1,22 @@ +# Dev guide + This is a short guide to setup a dev environment for mols2grid. +## Installation + 1. Install conda or mamba -2. Create a new environment. Python 3.7+ (prefer 3.8): +2. Create a new environment. Python 3.8+ (prefer 3.10): ``` conda env create --name mols2grid --file docs/environment.yml ``` -3. Install all the package dependencies in editable mode: +3. Install the package in editable mode: ``` pip install -e .[dev] + jupyter labextension develop . --overwrite ``` +## Tests + To run tests locally: - Install Firefox (needed for UI testing) - Test your installation: @@ -19,15 +26,34 @@ To run tests locally: - You can select/skip the UI testing by specifying the `webdriver` mark in the pytest command: `-m webdriver` to select UI tests only, or `-m "not webdriver"` to skip them. +### Notebook test + +The CI pipeline contains an additional test that runs a simple notebook (see [](tests/notebooks/)) +to make sure that there are no issues with the widget and the different versions of JupyterLab and +IPywidgets. This test requires the version of the package to **NOT** be a prerelease and thus the +versions in [](package.json) and [](mols2grid/_version.py) should strictly follow the `X.Y.Z` scheme +(i.e. no `X.Y.Z-a1`). + +If this pipeline fails, the CI will automatically produce an artifact named +`notebook-updated-snapshots` containing the captures that were produced while running the test. +Review these snapshots and if they seem correct, commit them to the +[](tests/notebooks/tests/mols2grid.test.ts-snapshots) directory. + +## Formatting + We use `black` and `isort` for formatting so either install the corresponding extension from your IDE or install the package with `pip install black isort`. The configuration is done inside the `pyproject.toml` file. +## Pull requests + Making a pull request will automatically run the tests and documentation build for you. Don't forget to update the `CHANGELOG.md` file with your changes. +## Release + For versioning, you'll have to update both `package.json` and `mols2grid/_version.py` -files. +files (but this should be done by a maintainer directly). The build and deployment process is run automatically when making a release on GitHub. diff --git a/docs/conf.py b/docs/conf.py index da35039..61c79e3 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -12,37 +12,40 @@ import os import sys +from datetime import datetime -sys.path.insert(0, os.path.abspath('.')) +sys.path.insert(0, os.path.abspath(".")) # -- Project information ----------------------------------------------------- -project = 'mols2grid' -copyright = '2022, Cédric Bouysset' -author = 'Cédric Bouysset' +project = "mols2grid" +copyright = f"2022-{datetime.now().year}, Cédric Bouysset" +author = "Cédric Bouysset" # -- General configuration --------------------------------------------------- -github_doc_root = 'https://github.com/cbouy/mols2grid/tree/master/docs/' -needs_sphinx = '4.5.0' +github_doc_root = "https://github.com/cbouy/mols2grid/tree/master/docs/" +needs_sphinx = "4.5.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.intersphinx', - 'sphinx.ext.viewcode', 'sphinx.ext.napoleon', - 'sphinx.ext.autosectionlabel', - 'sphinx_rtd_theme', - 'sphinx_mdinclude', - 'nbsphinx', + "sphinx.ext.autodoc", + "sphinx.ext.intersphinx", + "sphinx.ext.viewcode", + "sphinx.ext.napoleon", + "sphinx.ext.autosectionlabel", + "sphinx_rtd_theme", + "sphinx_mdinclude", + "nbsphinx", ] autosectionlabel_prefix_document = True napoleon_google_docstring = False -source_suffix = ['.rst', '.md'] +source_suffix = [".rst", ".md"] # Add any paths that contain templates here, relative to this directory. templates_path = [] @@ -50,7 +53,7 @@ # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. -exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] +exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] # -- Options for HTML output ------------------------------------------------- @@ -58,7 +61,7 @@ # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # -html_theme = 'sphinx_rtd_theme' +html_theme = "sphinx_rtd_theme" pygments_style = "manni" html_logo = "_static/mols2grid_logo.png" @@ -69,14 +72,16 @@ ### -intersphinx_mapping = {'https://docs.python.org/3/': None, - 'https://numpy.org/doc/stable/': None, - 'https://www.rdkit.org/docs/': None, - 'https://pandas.pydata.org/docs/': None, - 'https://ipython.readthedocs.io/en/stable/': None, +intersphinx_mapping = { + "https://docs.python.org/3/": None, + "https://numpy.org/doc/stable/": None, + "https://www.rdkit.org/docs/": None, + "https://pandas.pydata.org/docs/": None, + "https://ipython.readthedocs.io/en/stable/": None, } + # app setup hook def setup(app): # custom css - app.add_css_file('custom.css') + app.add_css_file("custom.css") diff --git a/docs/contents.md b/docs/contents.md index 2585dee..aaa9556 100644 --- a/docs/contents.md +++ b/docs/contents.md @@ -17,21 +17,35 @@ # 🐍 Installation --- - -mols2grid was developped for Python 3.7+ and requires rdkit (>=2020.03.1), pandas and jinja2 as dependencies. -The easiest way to install it is from conda: + +The easiest way to install `mols2grid` is from conda: ```shell conda install -c conda-forge mols2grid ``` Alternatively, you can also use pip: ```shell -pip install rdkit mols2grid +pip install 'mols2grid[rdkit]' +``` + +## Troubleshooting + +If you see a JavaScript error message such as: +```text +Failed to load model class 'MolGridModel' from module 'mols2grid' +Error: Module mols2grid, version XXX is not registered, however, YYY is +``` + +Or if you notice that the selections, callbacks and interactive filtering aren't working as intended, you may have to manually activate the extension: + +```shell +jupyter labextension enable mols2grid ``` -If you notice that the selections, callbacks and interactive filtering aren't working as intended, you may have to manually activate the extension: -- for Jupyter Lab: `jupyter labextension install mols2grid` -- for Jupyter Notebook: `jupyter nbextension install mols2grid` +You should also make sure that you have installed compatible versions of `ipywidgets` and the +`jupyterlab`/`notebook` stack. The following specs are currently supported: +- `ipywidgets=7`, `jupyterlab=3`, `notebook=6` +- `ipywidgets=8`, `jupyterlab=4`, `notebook=7` **Compatibility** diff --git a/docs/environment.yml b/docs/environment.yml index c91c44c..a91fa1d 100644 --- a/docs/environment.yml +++ b/docs/environment.yml @@ -3,16 +3,14 @@ channels: - conda-forge - defaults dependencies: - - ipykernel==6.26.0 - - ipywidgets==7.8.0 - - notebook<7.0.0 + - ipywidgets=8 + - notebook=7 - mistune<3.0.0 - - jedi==0.19.1 - - jinja2==3.1.2 - nbsphinx==0.8.8 - - nodejs==18.18.2 - - pandas==2.1.4 - - rdkit==2023.09.3 + - nodejs==18.12.1 + - pandas=2.1 + - pip + - rdkit - recommonmark==0.7.1 - sphinx==4.5.0 - yarn==1.22.19 diff --git a/mols2grid/_version.py b/mols2grid/_version.py index 5648967..159d48b 100644 --- a/mols2grid/_version.py +++ b/mols2grid/_version.py @@ -1 +1 @@ -__version__ = "2.0.1-a2" +__version__ = "2.0.1" diff --git a/package.json b/package.json index 269ede4..0697b37 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mols2grid", - "version": "2.0.1a2", + "version": "2.0.1", "description": "Custom widget for the Python mols2grid package", "keywords": [ "jupyter", @@ -54,7 +54,7 @@ "devDependencies": { "@babel/core": "^7.5.0", "@babel/preset-env": "^7.5.0", - "@jupyterlab/builder": "^3.0.0", + "@jupyterlab/builder": "^4.0.0", "@lumino/application": "^1.6.0", "@lumino/widgets": "^1.6.0", "@types/jest": "^26.0.0", diff --git a/pyproject.toml b/pyproject.toml index b5e92e1..0d65257 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [build-system] requires = [ "hatchling", - "jupyterlab==3.*", + "jupyterlab==4.*", ] build-backend = "hatchling.build" @@ -23,6 +23,9 @@ keywords = [ classifiers = [ "Development Status :: 5 - Production/Stable", "Framework :: Jupyter", + "Framework :: Jupyter :: JupyterLab", + "Framework :: Jupyter :: JupyterLab :: Extensions", + "Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt", "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", @@ -38,7 +41,7 @@ dependencies = [ "ipywidgets>=7.6.0,<9", "jinja2>=2.11.0", "numpy", - "pandas", + "pandas" ] dynamic = ["version"] @@ -46,9 +49,15 @@ dynamic = ["version"] file = "LICENSE" [project.optional-dependencies] +rdkit = [ + "rdkit", +] build = [ "build", ] +packaging = [ + "jupyter-packaging~=0.10", +] tests = [ "cairosvg==2.5.2", "flaky==3.7.0", @@ -63,7 +72,7 @@ docs = [ "mistune<3.0.0", ] dev = [ - "mols2grid[build,tests,docs]", + "mols2grid[build,tests,docs,packaging]", ] [project.urls] diff --git a/tests/environment.yml b/tests/environment.yml index 5cb1621..fa36c76 100644 --- a/tests/environment.yml +++ b/tests/environment.yml @@ -3,10 +3,8 @@ channels: - conda-forge - defaults dependencies: - - nodejs==17.9.0 - - yarn==1.22.18 - - pandas - - jinja2>=2.11.0 - - jupyterlab - - ipywidgets>=7,<8 + - nodejs==18.12.1 + - yarn==1.22.19 + - pandas=2 + - jinja2>=3.1.2 - pytest==6.2.5 diff --git a/tests/notebooks/README.md b/tests/notebooks/README.md new file mode 100644 index 0000000..9f6213a --- /dev/null +++ b/tests/notebooks/README.md @@ -0,0 +1 @@ +See the [ipywidgets dev guide](https://github.com/jupyter-widgets/ipywidgets/blob/main/docs/source/dev_testing.md#visual-regression-tests) for more info. \ No newline at end of file diff --git a/tests/notebooks/jupyter_server_config.py b/tests/notebooks/jupyter_server_config.py new file mode 100644 index 0000000..69ec9fe --- /dev/null +++ b/tests/notebooks/jupyter_server_config.py @@ -0,0 +1,35 @@ +try: + from jupyterlab.galata import configure_jupyter_server + + configure_jupyter_server(c) +except (ImportError, ModuleNotFoundError): + # see https://github.com/jupyterlab/jupyterlab/blob/main/jupyterlab/galata/__init__.py + import getpass + import os + from pathlib import Path + from tempfile import mkdtemp + + import jupyterlab + + # Test if we are running in a docker + if getpass.getuser() == "jovyan": + c.ServerApp.ip = "0.0.0.0" # noqa S104 + + c.ServerApp.port = 8888 + c.ServerApp.port_retries = 0 + c.ServerApp.open_browser = False + # Add test helpers extension shipped with JupyterLab + c.LabServerApp.extra_labextensions_path = str( + Path(jupyterlab.__file__).parent / "galata" + ) + + c.ServerApp.root_dir = os.environ.get( + "JUPYTERLAB_GALATA_ROOT_DIR", mkdtemp(prefix="galata-test-") + ) + c.ServerApp.token = "" + c.ServerApp.password = "" + c.ServerApp.disable_check_xsrf = True + c.LabApp.expose_app_in_browser = True + +# Uncomment to set server log level to debug level +# c.ServerApp.log_level = "DEBUG" diff --git a/tests/notebooks/package.json b/tests/notebooks/package.json new file mode 100644 index 0000000..e172a16 --- /dev/null +++ b/tests/notebooks/package.json @@ -0,0 +1,22 @@ +{ + "name": "@mols2grid/ui-tests", + "private": true, + "version": "0.1.0", + "description": "mols2grid UI Tests", + "scripts": { + "start": "jupyter lab --config ./jupyter_server_config.py", + "start:detached": "jlpm start&", + "test": "npx playwright test", + "test:debug": "PWDEBUG=1 npx playwright test", + "test:report": "http-server ./playwright-report -a localhost -o", + "test:update": "npx playwright test --update-snapshots", + "deduplicate": "jlpm && yarn-deduplicate -s fewer --fail" + }, + "author": "Cédric Bouysset", + "license": "BSD-3-Clause", + "devDependencies": { + "@jupyterlab/galata": "^5.0.1", + "@playwright/test": "^1.32.0", + "yarn-deduplicate": "^6.0.1" + } +} diff --git a/tests/notebooks/playwright.config.js b/tests/notebooks/playwright.config.js new file mode 100644 index 0000000..169c864 --- /dev/null +++ b/tests/notebooks/playwright.config.js @@ -0,0 +1,13 @@ +const baseConfig = require('@jupyterlab/galata/lib/playwright-config'); + +module.exports = { + ...baseConfig, + timeout: 240000, + webServer: { + command: 'jlpm start', + url: 'http://localhost:8888/lab', + timeout: 120 * 1000, + reuseExistingServer: !process.env.CI, + }, + retries: 1, +}; \ No newline at end of file diff --git a/tests/notebooks/tests/mols2grid.test.ts b/tests/notebooks/tests/mols2grid.test.ts new file mode 100644 index 0000000..f2d230a --- /dev/null +++ b/tests/notebooks/tests/mols2grid.test.ts @@ -0,0 +1,46 @@ +// Copyright (c) Jupyter Development Team. +// Distributed under the terms of the Modified BSD License. + +import { test } from '@jupyterlab/galata'; + +import { expect } from '@playwright/test'; + +import * as path from 'path'; + +test.describe('mols2grid Visual Regression', () => { + test.beforeEach(async ({ page, tmpPath }) => { + await page.contents.uploadDirectory( + path.resolve(__dirname), + tmpPath + ); + await page.filebrowser.openDirectory(tmpPath); + }); + + test('Run notebook tests.ipynb and capture cell outputs', async ({ + page, + tmpPath, + }) => { + const notebook = 'tests.ipynb'; + await page.notebook.openByPath(`${tmpPath}/${notebook}`); + await page.notebook.activate(notebook); + + const captures = new Array(); + const cellCount = await page.notebook.getCellCount(); + + await page.notebook.runCellByCell({ + onAfterCellRun: async (cellIndex: number) => { + const cell = await page.notebook.getCellOutput(cellIndex); + if (cell) { + captures.push(await cell.screenshot()); + } + }, + }); + + await page.notebook.save(); + + for (let i = 0; i < cellCount; i++) { + const image = `tests-cell-${i}.png`; + expect(captures[i]).toMatchSnapshot(image); + } + }); +}); \ No newline at end of file diff --git a/tests/notebooks/tests/tests.ipynb b/tests/notebooks/tests/tests.ipynb new file mode 100644 index 0000000..29d9954 --- /dev/null +++ b/tests/notebooks/tests/tests.ipynb @@ -0,0 +1,47 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "from time import sleep\n", + "from IPython.display import display\n", + "from rdkit import RDConfig\n", + "import mols2grid\n", + "\n", + "assert Path(RDConfig.RDDocsDir).is_dir(), \"Test data not available!\"\n", + "\n", + "SDF_FILE = f\"{RDConfig.RDDocsDir}/Book/data/solubility.test.sdf\"\n", + "\n", + "view = mols2grid.display(SDF_FILE)\n", + "display(view)\n", + "# give some time for RDKit.js to load and display the mols\n", + "sleep(5)" + ] + } + ], + "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.8.17" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/tests/notebooks/yarn.lock b/tests/notebooks/yarn.lock new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_interface.py b/tests/test_interface.py index 0ea4f89..7a93915 100644 --- a/tests/test_interface.py +++ b/tests/test_interface.py @@ -348,8 +348,8 @@ def test_coordgen(driver: FirefoxDriver, mols, coordGen, prerender, expected): False, True, ( - "ffffff7fff3fffbff907e02fe13ff80fcbafe33fe033cb07fa4ffa4fff97ffd7" - if rdkit_version == "2020.03.1" + "ffffff3ffcbffc2fff0ff93ff067e667f46ff5038301c027e487ec9ffa7fffff" + if rdkit_version == "2021.03.1" else "ff7ffe1ff91ffd3ff00ff0cffcbff0bff00ffd3fe1bff887f29ff30fff6fff7f" ), marks=skip_no_coordgen, diff --git a/yarn.lock b/yarn.lock index 3b9621b..e093a78 100644 --- a/yarn.lock +++ b/yarn.lock @@ -995,11 +995,6 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@gar/promisify@^1.0.1": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" - integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== - "@humanwhocodes/config-array@^0.5.0": version "0.5.0" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" @@ -1268,45 +1263,41 @@ y-protocols "^1.0.5" yjs "^13.5.40" -"@jupyterlab/builder@^3.0.0": - version "3.6.6" - resolved "https://registry.yarnpkg.com/@jupyterlab/builder/-/builder-3.6.6.tgz#e3b815c1e6916fedf08e47b4d63b45511df2eeed" - integrity sha512-J4ZEUrvxc7sgjT3t7tCpoeDAA3ZeWJa3ph25+ElgQRAe6a2/X3sVyWCcpQzHG6l/No5DX5d9K6+Jtwx5ihmOJQ== - dependencies: - "@lumino/algorithm" "^1.9.0" - "@lumino/application" "^1.31.4" - "@lumino/commands" "^1.19.0" - "@lumino/coreutils" "^1.11.0" - "@lumino/disposable" "^1.10.0" - "@lumino/domutils" "^1.8.0" - "@lumino/dragdrop" "^1.13.0" - "@lumino/messaging" "^1.10.0" - "@lumino/properties" "^1.8.0" - "@lumino/signaling" "^1.10.0" - "@lumino/virtualdom" "^1.14.0" - "@lumino/widgets" "^1.37.2" - ajv "^6.12.3" - commander "~6.0.0" - css-loader "^5.0.1" +"@jupyterlab/builder@^4.0.0": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@jupyterlab/builder/-/builder-4.0.9.tgz#8ab00144fbcc0bd20996c9fc003737c863d0a9ed" + integrity sha512-NsLpSb8bIV0mZsmd1oAKhfNNafoNav6Wf6kgYYI5pd9Hp72kQ17++RzQc0MvCFwkXVe2nPaFrIQTXEld2EM2sw== + dependencies: + "@lumino/algorithm" "^2.0.1" + "@lumino/application" "^2.2.1" + "@lumino/commands" "^2.1.3" + "@lumino/coreutils" "^2.1.2" + "@lumino/disposable" "^2.1.2" + "@lumino/domutils" "^2.0.1" + "@lumino/dragdrop" "^2.1.4" + "@lumino/messaging" "^2.0.1" + "@lumino/properties" "^2.0.1" + "@lumino/signaling" "^2.1.2" + "@lumino/virtualdom" "^2.0.1" + "@lumino/widgets" "^2.3.0" + ajv "^8.12.0" + commander "^9.4.1" + css-loader "^6.7.1" duplicate-package-checker-webpack-plugin "^3.0.0" - file-loader "~6.0.0" - fs-extra "^9.0.1" + fs-extra "^10.1.0" glob "~7.1.6" license-webpack-plugin "^2.3.14" - mini-css-extract-plugin "~1.3.2" + mini-css-extract-plugin "^2.7.0" + mini-svg-data-uri "^1.4.4" path-browserify "^1.0.0" process "^0.11.10" - raw-loader "~4.0.0" source-map-loader "~1.0.2" - style-loader "~2.0.0" + style-loader "~3.3.1" supports-color "^7.2.0" - svg-url-loader "~6.0.0" - terser-webpack-plugin "^4.1.0" - to-string-loader "^1.1.6" - url-loader "~4.1.0" - webpack "^5.41.1" - webpack-cli "^4.1.0" - webpack-merge "^5.1.2" + terser-webpack-plugin "^5.3.7" + webpack "^5.76.1" + webpack-cli "^5.0.1" + webpack-merge "^5.8.0" worker-loader "^3.0.2" "@jupyterlab/coreutils@^6.0.9": @@ -1371,7 +1362,7 @@ "@lumino/properties" "^2.0.1" "@lumino/signaling" "^2.1.2" -"@lumino/algorithm@^1.9.0", "@lumino/algorithm@^1.9.2": +"@lumino/algorithm@^1.9.2": version "1.9.2" resolved "https://registry.yarnpkg.com/@lumino/algorithm/-/algorithm-1.9.2.tgz#b95e6419aed58ff6b863a51bfb4add0f795141d3" integrity sha512-Z06lp/yuhz8CtIir3PNTGnuk7909eXt4ukJsCzChsGuot2l5Fbs96RJ/FOHgwCedaX74CtxPjXHXoszFbUA+4A== @@ -1381,7 +1372,7 @@ resolved "https://registry.yarnpkg.com/@lumino/algorithm/-/algorithm-2.0.1.tgz#1045f4629f96076b431fc1a8c0005e13d8b95a56" integrity sha512-iA+uuvA7DeNFB0/cQpIWNgO1c6z4pOSigifjstLy+rxf1U5ZzxIq+xudnEuTbWgKSTviG02j4cKwCyx1PO6rzA== -"@lumino/application@^1.31.4", "@lumino/application@^1.6.0": +"@lumino/application@^1.6.0": version "1.31.4" resolved "https://registry.yarnpkg.com/@lumino/application/-/application-1.31.4.tgz#b804fcc46fb77deb41aee94c48bea990f735d6b9" integrity sha512-dOSsDJ1tXOxC3fnSHvtDQK5RcICLEVPtO19HeCGwurb5W2ZZ55SZT2b5jZu6V/v8lGdtkNbr1RJltRpJRSRb/A== @@ -1390,6 +1381,15 @@ "@lumino/coreutils" "^1.12.1" "@lumino/widgets" "^1.37.2" +"@lumino/application@^2.2.1": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@lumino/application/-/application-2.3.0.tgz#10c79101c6151ac9c308cec6ab549a9a9d19ed19" + integrity sha512-08jqDsjciXtK4yy/8o01qf9qxYYxzbYO1FkTu+ucV+jmbVkfAQuS1ApLIgmMiTbLw45SWUwk+x+TnCgVQZaDzA== + dependencies: + "@lumino/commands" "^2.2.0" + "@lumino/coreutils" "^2.1.2" + "@lumino/widgets" "^2.3.1" + "@lumino/collections@^1.9.3": version "1.9.3" resolved "https://registry.yarnpkg.com/@lumino/collections/-/collections-1.9.3.tgz#370dc2d50aa91371288a4f7376bea5a3191fc5dc" @@ -1404,7 +1404,7 @@ dependencies: "@lumino/algorithm" "^2.0.1" -"@lumino/commands@^1.19.0", "@lumino/commands@^1.21.1": +"@lumino/commands@^1.21.1": version "1.21.1" resolved "https://registry.yarnpkg.com/@lumino/commands/-/commands-1.21.1.tgz#eda8b3cf5ef73b9c8ce93b3b5cf66bb053df2a76" integrity sha512-d1zJmwz5bHU0BM/Rl3tRdZ7/WgXnFB0bM7x7Bf0XDlmX++jnU9k0j3mh6/5JqCGLmIApKCRwVqSaV7jPmSJlcQ== @@ -1430,23 +1430,15 @@ "@lumino/signaling" "^2.1.2" "@lumino/virtualdom" "^2.0.1" -"@lumino/coreutils@^1.11.0", "@lumino/coreutils@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@lumino/coreutils/-/coreutils-1.12.1.tgz#79860c9937483ddf6cda87f6c2b9da8eb1a5d768" - integrity sha512-JLu3nTHzJk9N8ohZ85u75YxemMrmDzJdNgZztfP7F7T7mxND3YVNCkJG35a6aJ7edu1sIgCjBxOvV+hv27iYvQ== - "@lumino/coreutils@^1.11.0 || ^2.0.0", "@lumino/coreutils@^1.11.1 || ^2.1", "@lumino/coreutils@^2.1.2": version "2.1.2" resolved "https://registry.yarnpkg.com/@lumino/coreutils/-/coreutils-2.1.2.tgz#354e658353e99969329c9ee33b0692ecd97abe1f" integrity sha512-vyz7WzchTO4HQ8iVAxvSUmb5o/8t3cz1vBo8V4ZIaPGada0Jx0xe3tKQ8bXp4pjHc+AEhMnkCnlUyVYMWbnj4A== -"@lumino/disposable@^1.10.0", "@lumino/disposable@^1.10.4": - version "1.10.4" - resolved "https://registry.yarnpkg.com/@lumino/disposable/-/disposable-1.10.4.tgz#73b452044fecf988d7fa73fac9451b1a7f987323" - integrity sha512-4ZxyYcyzUS+ZeB2KAH9oAH3w0DUUceiVr+FIZHZ2TAYGWZI/85WlqJtfm0xjwEpCwLLW1TDqJrISuZu3iMmVMA== - dependencies: - "@lumino/algorithm" "^1.9.2" - "@lumino/signaling" "^1.11.1" +"@lumino/coreutils@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@lumino/coreutils/-/coreutils-1.12.1.tgz#79860c9937483ddf6cda87f6c2b9da8eb1a5d768" + integrity sha512-JLu3nTHzJk9N8ohZ85u75YxemMrmDzJdNgZztfP7F7T7mxND3YVNCkJG35a6aJ7edu1sIgCjBxOvV+hv27iYvQ== "@lumino/disposable@^1.10.0 || ^2.0.0", "@lumino/disposable@^2.1.2": version "2.1.2" @@ -1455,7 +1447,15 @@ dependencies: "@lumino/signaling" "^2.1.2" -"@lumino/domutils@^1.8.0", "@lumino/domutils@^1.8.2": +"@lumino/disposable@^1.10.4": + version "1.10.4" + resolved "https://registry.yarnpkg.com/@lumino/disposable/-/disposable-1.10.4.tgz#73b452044fecf988d7fa73fac9451b1a7f987323" + integrity sha512-4ZxyYcyzUS+ZeB2KAH9oAH3w0DUUceiVr+FIZHZ2TAYGWZI/85WlqJtfm0xjwEpCwLLW1TDqJrISuZu3iMmVMA== + dependencies: + "@lumino/algorithm" "^1.9.2" + "@lumino/signaling" "^1.11.1" + +"@lumino/domutils@^1.8.2": version "1.8.2" resolved "https://registry.yarnpkg.com/@lumino/domutils/-/domutils-1.8.2.tgz#d15cdbae12bea52852bbc13c4629360f9f05b7f5" integrity sha512-QIpMfkPJrs4GrWBuJf2Sn1fpyVPmvqUUAeD8xAQo8+4V5JAT0vUDLxZ9HijefMgNCi3+Bs8Z3lQwRCrz+cFP1A== @@ -1465,7 +1465,7 @@ resolved "https://registry.yarnpkg.com/@lumino/domutils/-/domutils-2.0.1.tgz#1852eadd2658cf754e17f2d0e5c18d1737a91530" integrity sha512-tbcfhsdKH04AMjSgYAYGD2xE80YcjrqKnfMTeU2NHt4J294Hzxs1GvEmSMk5qJ3Bbgwx6Z4BbQ7apnFg8Gc6cA== -"@lumino/dragdrop@^1.13.0", "@lumino/dragdrop@^1.14.5": +"@lumino/dragdrop@^1.14.5": version "1.14.5" resolved "https://registry.yarnpkg.com/@lumino/dragdrop/-/dragdrop-1.14.5.tgz#1db76c8a01f74cb1b0428db6234e820bb58b93ba" integrity sha512-LC5xB82+xGF8hFyl716TMpV32OIMIMl+s3RU1PaqDkD6B7PkgiVk6NkJ4X9/GcEvl2igkvlGQt/3L7qxDAJNxw== @@ -1491,7 +1491,7 @@ resolved "https://registry.yarnpkg.com/@lumino/keyboard/-/keyboard-2.0.1.tgz#a16db961e29a94f87b2669c989b2b358590ce1f6" integrity sha512-R2mrH9HCEcv/0MSAl7bEUbjCNOnhrg49nXZBEVckg//TEG+sdayCsyrbJNMPcZ07asIPKc6mq3v7DpAmDKqh+w== -"@lumino/messaging@^1.10.0", "@lumino/messaging@^1.10.1 || ^2.1", "@lumino/messaging@^1.10.3": +"@lumino/messaging@^1.10.1 || ^2.1", "@lumino/messaging@^1.10.3": version "1.10.3" resolved "https://registry.yarnpkg.com/@lumino/messaging/-/messaging-1.10.3.tgz#b6227bdfc178a8542571625ecb68063691b6af3c" integrity sha512-F/KOwMCdqvdEG8CYAJcBSadzp6aI7a47Fr60zAKGqZATSRRRV41q53iXU7HjFPqQqQIvdn9Z7J32rBEAyQAzww== @@ -1516,7 +1516,7 @@ "@lumino/disposable" "^2.1.2" "@lumino/signaling" "^2.1.2" -"@lumino/properties@^1.8.0", "@lumino/properties@^1.8.2": +"@lumino/properties@^1.8.2": version "1.8.2" resolved "https://registry.yarnpkg.com/@lumino/properties/-/properties-1.8.2.tgz#91131f2ca91a902faa138771eb63341db78fc0fd" integrity sha512-EkjI9Cw8R0U+xC9HxdFSu7X1tz1H1vKu20cGvJ2gU+CXlMB1DvoYJCYxCThByHZ+kURTAap4SE5x8HvKwNPbig== @@ -1526,14 +1526,6 @@ resolved "https://registry.yarnpkg.com/@lumino/properties/-/properties-2.0.1.tgz#349407042df99d94943798078454dc11a327684b" integrity sha512-RPtHrp8cQqMnTC915lOIdrmsbPDCC7PhPOZb2YY7/Jj6dEdwmGhoMthc2tBEYWoHP+tU/hVm8UR/mEQby22srQ== -"@lumino/signaling@^1.10.0", "@lumino/signaling@^1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@lumino/signaling/-/signaling-1.11.1.tgz#438f447a1b644fd286549804f9851b5aec9679a2" - integrity sha512-YCUmgw08VoyMN5KxzqPO3KMx+cwdPv28tAN06C0K7Q/dQf+oufb1XocuhZb5selTrTmmuXeizaYxgLIQGdS1fA== - dependencies: - "@lumino/algorithm" "^1.9.2" - "@lumino/properties" "^1.8.2" - "@lumino/signaling@^1.10.0 || ^2.0.0", "@lumino/signaling@^2.1.2": version "2.1.2" resolved "https://registry.yarnpkg.com/@lumino/signaling/-/signaling-2.1.2.tgz#b5f127463165884174f1446e8364794af831a852" @@ -1542,7 +1534,15 @@ "@lumino/algorithm" "^2.0.1" "@lumino/coreutils" "^2.1.2" -"@lumino/virtualdom@^1.14.0", "@lumino/virtualdom@^1.14.3": +"@lumino/signaling@^1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@lumino/signaling/-/signaling-1.11.1.tgz#438f447a1b644fd286549804f9851b5aec9679a2" + integrity sha512-YCUmgw08VoyMN5KxzqPO3KMx+cwdPv28tAN06C0K7Q/dQf+oufb1XocuhZb5selTrTmmuXeizaYxgLIQGdS1fA== + dependencies: + "@lumino/algorithm" "^1.9.2" + "@lumino/properties" "^1.8.2" + +"@lumino/virtualdom@^1.14.3": version "1.14.3" resolved "https://registry.yarnpkg.com/@lumino/virtualdom/-/virtualdom-1.14.3.tgz#e490c36ff506d877cf45771d6968e3e26a8919fd" integrity sha512-5joUC1yuxeXbpfbSBm/OR8Mu9HoTo6PDX0RKqzlJ9o97iml7zayFN/ynzcxScKGQAo9iaXOY8uVIvGUT8FnsGw== @@ -1556,7 +1556,7 @@ dependencies: "@lumino/algorithm" "^2.0.1" -"@lumino/widgets@^1.30.0 || ^2.1": +"@lumino/widgets@^1.30.0 || ^2.1", "@lumino/widgets@^2.3.0", "@lumino/widgets@^2.3.1": version "2.3.1" resolved "https://registry.yarnpkg.com/@lumino/widgets/-/widgets-2.3.1.tgz#5c62de6cc7e2a2a84a1d1c63d719dad3a3de74ea" integrity sha512-t3yKoXY4P1K1Tiv7ABZLKjwtn2gFIbaK0jnjFhoHNlzX5q43cm7FjtCFQWrvJbBN6Heq9qq00JPOWXeZ3IlQdg== @@ -1590,22 +1590,6 @@ "@lumino/signaling" "^1.11.1" "@lumino/virtualdom" "^1.14.3" -"@npmcli/fs@^1.0.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" - integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== - dependencies: - "@gar/promisify" "^1.0.1" - semver "^7.3.5" - -"@npmcli/move-file@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" - integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== - dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" - "@rjsf/utils@^5.1.0": version "5.15.1" resolved "https://registry.yarnpkg.com/@rjsf/utils/-/utils-5.15.1.tgz#42eb045c7ab5b24b49a05040ea998523e48732ea" @@ -1744,7 +1728,7 @@ dependencies: "@types/sizzle" "*" -"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8": +"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -2003,6 +1987,11 @@ resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.2.0.tgz#7b20ce1c12533912c3b217ea68262365fa29a6f5" integrity sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg== +"@webpack-cli/configtest@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" + integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== + "@webpack-cli/info@^1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.5.0.tgz#6c78c13c5874852d6e2dd17f08a41f3fe4c261b1" @@ -2010,11 +1999,21 @@ dependencies: envinfo "^7.7.3" +"@webpack-cli/info@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" + integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== + "@webpack-cli/serve@^1.7.0": version "1.7.0" resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.7.0.tgz#e1993689ac42d2b16e9194376cfb6753f6254db1" integrity sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q== +"@webpack-cli/serve@^2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" + integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== + "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -2070,20 +2069,26 @@ agent-base@6: dependencies: debug "4" -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" + ajv "^8.0.0" ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2093,7 +2098,7 @@ ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.1, ajv@^8.12.0: +ajv@^8.0.0, ajv@^8.0.1, ajv@^8.12.0, ajv@^8.9.0: version "8.12.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== @@ -2213,11 +2218,6 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -2408,30 +2408,6 @@ buffer-from@1.x, buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -cacache@^15.0.5: - version "15.3.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" - integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== - dependencies: - "@npmcli/fs" "^1.0.0" - "@npmcli/move-file" "^1.0.1" - chownr "^2.0.0" - fs-minipass "^2.0.0" - glob "^7.1.4" - infer-owner "^1.0.4" - lru-cache "^6.0.0" - minipass "^3.1.1" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^1.0.3" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^8.0.1" - tar "^6.0.2" - unique-filename "^1.1.1" - cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -2472,9 +2448,9 @@ camelcase@^6.0.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001565: - version "1.0.30001570" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz#b4e5c1fa786f733ab78fc70f592df6b3f23244ca" - integrity sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw== + version "1.0.30001571" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001571.tgz#4182e93d696ff42930f4af7eba515ddeb57917ac" + integrity sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ== capture-exit@^2.0.0: version "2.0.0" @@ -2505,11 +2481,6 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - chrome-trace-event@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" @@ -2535,11 +2506,6 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -2612,6 +2578,11 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" +commander@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -2622,15 +2593,10 @@ commander@^7.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== -commander@~6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.0.0.tgz#2b270da94f8fb9014455312f829a1129dbf8887e" - integrity sha512-s7EA+hDtTYNhuXkTlhqew4txMZVdszBmKWSPEMxGr8ru8JXR7bLUFIAtPhcSuFdJQ0ILMxnJi8GkQL0yvDy/YA== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== +commander@^9.4.1: + version "9.5.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== component-emitter@^1.2.1: version "1.3.1" @@ -2727,21 +2693,19 @@ css-loader@^3.2.0: schema-utils "^2.7.0" semver "^6.3.0" -css-loader@^5.0.1: - version "5.2.7" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.7.tgz#9b9f111edf6fb2be5dc62525644cbc9c232064ae" - integrity sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg== +css-loader@^6.7.1: + version "6.8.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.8.1.tgz#0f8f52699f60f5e679eab4ec0fcd68b8e8a50a88" + integrity sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g== dependencies: icss-utils "^5.1.0" - loader-utils "^2.0.0" - postcss "^8.2.15" + postcss "^8.4.21" postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.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.1.0" - schema-utils "^3.0.0" - semver "^7.3.5" + postcss-value-parser "^4.2.0" + semver "^7.3.8" cssesc@^3.0.0: version "3.0.0" @@ -2893,9 +2857,9 @@ duplicate-package-checker-webpack-plugin@^3.0.0: semver "^5.4.1" electron-to-chromium@^1.4.601: - version "1.4.615" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.615.tgz#b1c41839962d2e4e63dca05519da9040e34848c2" - integrity sha512-/bKPPcgZVUziECqDc+0HkT87+0zhaWSZHNXqF8FLd2lQcptpmUFwoCSWjCdOng9Gdq+afKArPdEg/0ZW461Eng== + version "1.4.616" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.616.tgz#4bddbc2c76e1e9dbf449ecd5da3d8119826ea4fb" + integrity sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg== emittery@^0.7.1: version "0.7.2" @@ -3324,14 +3288,6 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-loader@~6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.0.0.tgz#97bbfaab7a2460c07bcbd72d3a6922407f67649f" - integrity sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ== - dependencies: - loader-utils "^2.0.0" - schema-utils "^2.6.5" - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -3349,15 +3305,6 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-cache-dir@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - find-root@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" @@ -3418,6 +3365,15 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" +fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -3427,23 +3383,6 @@ fs-extra@^7.0.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -3783,16 +3722,6 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -3820,6 +3749,11 @@ interpret@^2.2.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== + is-accessor-descriptor@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz#3223b10628354644b86260db29b3e693f5ceedd4" @@ -4494,7 +4428,7 @@ jest-watcher@^26.6.2: jest-util "^26.6.2" string-length "^4.0.1" -jest-worker@^26.5.0, jest-worker@^26.6.2: +jest-worker@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== @@ -4740,7 +4674,7 @@ loader-runner@^4.2.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== -loader-utils@^1.0.0, loader-utils@^1.2.3: +loader-utils@^1.2.3: version "1.4.2" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== @@ -4749,7 +4683,7 @@ loader-utils@^1.0.0, loader-utils@^1.2.3: emojis-list "^3.0.0" json5 "^1.0.1" -loader-utils@^2.0.0, loader-utils@~2.0.0: +loader-utils@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== @@ -4804,13 +4738,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - make-dir@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" @@ -4904,14 +4831,17 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mini-css-extract-plugin@~1.3.2: - version "1.3.9" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.3.9.tgz#47a32132b0fd97a119acd530e8421e8f6ab16d5e" - integrity sha512-Ac4s+xhVbqlyhXS5J/Vh/QXUz3ycXlCqoCPpg0vdfhsIBH9eg/It/9L1r1XhSCH737M1lqcWnMuWL13zcygn5A== +mini-css-extract-plugin@^2.7.0: + version "2.7.6" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz#282a3d38863fddcd2e0c220aaed5b90bc156564d" + integrity sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw== dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - webpack-sources "^1.1.0" + schema-utils "^4.0.0" + +mini-svg-data-uri@^1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz#8ab0aabcdf8c29ad5693ca595af19dd2ead09939" + integrity sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg== minimatch@^3.0.4, minimatch@^3.1.1: version "3.1.2" @@ -4925,47 +4855,6 @@ minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.6, minimist@~1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-pipeline@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.1: - version "3.3.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" - integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== - dependencies: - yallist "^4.0.0" - -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -4974,7 +4863,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@1.x, mkdirp@^1.0.3, mkdirp@^1.0.4: +mkdirp@1.x: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== @@ -5197,13 +5086,6 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -5211,13 +5093,6 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -5325,7 +5200,7 @@ pirates@^4.0.1: resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== -pkg-dir@^4.1.0, pkg-dir@^4.2.0: +pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== @@ -5359,7 +5234,7 @@ postcss-modules-local-by-default@^3.0.2: postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" -postcss-modules-local-by-default@^4.0.0: +postcss-modules-local-by-default@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz#b08eb4f083050708998ba2c6061b50c2870ca524" integrity sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA== @@ -5377,9 +5252,9 @@ postcss-modules-scope@^2.2.0: postcss-selector-parser "^6.0.0" postcss-modules-scope@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" - integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== + version "3.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.1.0.tgz#fbfddfda93a31f310f1d152c2bb4d3f3c5592ee0" + integrity sha512-SaIbK8XW+MZbd0xHPf7kdfA/3eOt7vxJ72IRecn3EzuZVLr1r0orzf0MX/pN8m+NMDoo6X/SQd8oeKqGZd8PXg== dependencies: postcss-selector-parser "^6.0.4" @@ -5406,7 +5281,7 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2, postcss-selector cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-value-parser@^4.1.0: +postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== @@ -5419,7 +5294,7 @@ postcss@^7.0.14, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.2.15: +postcss@^8.4.21: version "8.4.32" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.32.tgz#1dac6ac51ab19adb21b8b34fd2d93a86440ef6c9" integrity sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw== @@ -5470,11 +5345,6 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== - prompts@^2.0.1: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -5518,14 +5388,6 @@ randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" -raw-loader@~4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" - integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - react-is@^17.0.1: version "17.0.2" resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" @@ -5584,6 +5446,13 @@ rechoir@^0.7.0: dependencies: resolve "^1.9.0" +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== + dependencies: + resolve "^1.20.0" + regenerate-unicode-properties@^10.1.0: version "10.1.1" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" @@ -5706,7 +5575,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== -resolve@^1.10.0, resolve@^1.14.2, resolve@^1.18.1, resolve@^1.9.0: +resolve@^1.10.0, resolve@^1.14.2, resolve@^1.18.1, resolve@^1.20.0, resolve@^1.9.0: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -5802,7 +5671,7 @@ saxes@^5.0.1: dependencies: xmlchars "^2.2.0" -schema-utils@^2.6.5, schema-utils@^2.7.0: +schema-utils@^2.7.0: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== @@ -5820,30 +5689,33 @@ schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: ajv "^6.12.5" ajv-keywords "^3.5.2" +schema-utils@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" + integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@7.x, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.5.3: +semver@7.x, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.8, semver@^7.5.3: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: +semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -serialize-javascript@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" - integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== - dependencies: - randombytes "^2.1.0" - serialize-javascript@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" @@ -6099,13 +5971,6 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -ssri@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" - integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== - dependencies: - minipass "^3.1.1" - stack-utils@^2.0.2: version "2.0.6" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" @@ -6221,13 +6086,10 @@ style-loader@^1.0.0: loader-utils "^2.0.0" schema-utils "^2.7.0" -style-loader@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-2.0.0.tgz#9669602fd4690740eaaec137799a03addbbc393c" - integrity sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" +style-loader@~3.3.1: + version "3.3.3" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.3.tgz#bba8daac19930169c0c9c96706749a597ae3acff" + integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw== supports-color@^5.3.0: version "5.5.0" @@ -6263,14 +6125,6 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -svg-url-loader@~6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/svg-url-loader/-/svg-url-loader-6.0.0.tgz#b94861d9f6badfb8ca3e7d3ec4655c1bf732ac5d" - integrity sha512-Qr5SCKxyxKcRnvnVrO3iQj9EX/v40UiGEMshgegzV7vpo3yc+HexELOdtWcA3MKjL8IyZZ1zOdcILmDEa/8JJQ== - dependencies: - file-loader "~6.0.0" - loader-utils "~2.0.0" - symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -6297,18 +6151,6 @@ tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tar@^6.0.2: - version "6.2.0" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" - integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^5.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -6317,21 +6159,6 @@ terminal-link@^2.0.0: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" -terser-webpack-plugin@^4.1.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" - integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== - dependencies: - cacache "^15.0.5" - find-cache-dir "^3.3.1" - jest-worker "^26.5.0" - p-limit "^3.0.2" - schema-utils "^3.0.0" - serialize-javascript "^5.0.1" - source-map "^0.6.1" - terser "^5.3.4" - webpack-sources "^1.4.3" - terser-webpack-plugin@^5.3.7: version "5.3.9" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1" @@ -6343,7 +6170,7 @@ terser-webpack-plugin@^5.3.7: serialize-javascript "^6.0.1" terser "^5.16.8" -terser@^5.16.8, terser@^5.3.4: +terser@^5.16.8: version "5.26.0" resolved "https://registry.yarnpkg.com/terser/-/terser-5.26.0.tgz#ee9f05d929f4189a9c28a0feb889d96d50126fe1" integrity sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ== @@ -6414,13 +6241,6 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -to-string-loader@^1.1.6: - version "1.2.0" - resolved "https://registry.yarnpkg.com/to-string-loader/-/to-string-loader-1.2.0.tgz#4364aa044b9aa876473f4d7a36ef7d216a276e9c" - integrity sha512-KsWUL8FccgBW9FPFm4vYoQbOOcO5m6hKOGYoXjbseD9/4Ft+ravXN5jolQ9kTKYcK4zPt1j+khx97GPGnVoi6A== - dependencies: - loader-utils "^1.0.0" - tough-cookie@^4.0.0: version "4.1.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" @@ -6613,20 +6433,6 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -6670,15 +6476,6 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== -url-loader@~4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" - integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== - dependencies: - loader-utils "^2.0.0" - mime-types "^2.1.27" - schema-utils "^3.0.0" - url-parse@^1.5.3, url-parse@~1.5.4: version "1.5.10" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" @@ -6793,7 +6590,7 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-cli@^4.0.0, webpack-cli@^4.1.0: +webpack-cli@^4.0.0: version "4.10.0" resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.10.0.tgz#37c1d69c8d85214c5a65e589378f53aec64dab31" integrity sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w== @@ -6811,7 +6608,26 @@ webpack-cli@^4.0.0, webpack-cli@^4.1.0: rechoir "^0.7.0" webpack-merge "^5.7.3" -webpack-merge@^5.1.2, webpack-merge@^5.7.3: +webpack-cli@^5.0.1: + version "5.1.4" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" + integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^2.1.1" + "@webpack-cli/info" "^2.0.2" + "@webpack-cli/serve" "^2.0.5" + colorette "^2.0.14" + commander "^10.0.1" + cross-spawn "^7.0.3" + envinfo "^7.7.3" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^3.1.1" + rechoir "^0.8.0" + webpack-merge "^5.7.3" + +webpack-merge@^5.7.3, webpack-merge@^5.8.0: version "5.10.0" resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== @@ -6820,7 +6636,7 @@ webpack-merge@^5.1.2, webpack-merge@^5.7.3: flat "^5.0.2" wildcard "^2.0.0" -webpack-sources@^1.1.0, webpack-sources@^1.2.0, webpack-sources@^1.4.3: +webpack-sources@^1.2.0: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -6833,7 +6649,7 @@ webpack-sources@^3.2.3: resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@^5.41.1, webpack@^5.61.0: +webpack@^5.61.0, webpack@^5.76.1: version "5.89.0" resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.89.0.tgz#56b8bf9a34356e93a6625770006490bf3a7f32dc" integrity sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw== @@ -7040,8 +6856,3 @@ yjs@^13.5.40: integrity sha512-1JcyQek1vaMyrDm7Fqfa+pvHg/DURSbVo4VmeN7wjnTKB/lZrfIPhdCj7d8sboK6zLfRBJXegTjc9JlaDd8/Zw== dependencies: lib0 "^0.2.86" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==