From 96a8c59819e468be64b87d3fc024519182b9bec7 Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Wed, 24 Feb 2021 19:07:30 +0100 Subject: [PATCH 01/18] Switch to a lab-based app for the Voila frontend Co-authored-by: martinRenou --- .binder/environment.yml | 1 - .binder/postBuild | 5 +- .eslintignore | 1 + .prettierignore | 3 +- docs/source/contribute.rst | 17 + docs/source/using.rst | 22 - notebooks/mimerenderers.ipynb | 159 + packages/jupyterlab-preview/src/preview.tsx | 4 +- packages/voila/index.js | 191 + packages/voila/package.json | 64 +- packages/voila/publicpath.js | 37 + packages/voila/src/app.ts | 149 + packages/voila/src/index.ts | 12 +- packages/voila/src/kernel.ts | 31 - packages/voila/src/loader.ts | 81 - packages/voila/src/manager.ts | 125 +- packages/voila/src/mathjax.ts | 59 - packages/voila/src/plugins.ts | 146 + packages/voila/src/rendermime.ts | 30 - packages/voila/src/shell.ts | 71 + packages/voila/src/typings.d.ts | 5 - packages/voila/style.css | 3 + packages/voila/style/index.css | 131 - packages/voila/webpack.config.js | 112 +- pyproject.toml | 2 +- setup.cfg | 3 +- setup.py | 1 - .../voila/templates/base/static/main.js | 74 - .../templates/base/static/require.min.js | 1 - .../templates/base/voila_setup.macro.html.j2 | 23 +- .../voila/templates/classic/index.html.j2 | 23 +- .../jupyter/voila/templates/lab/index.html.j2 | 25 +- tests/app/config_paths_test.py | 1 - tests/app/nbextensions_test.py | 1 + tests/app/template_sanity_test.py | 3 +- tests/configs/general/voila.json | 3 +- tests/execute_output_test.py | 3 + tests/notebooks/output.ipynb | 43 +- .../templates/test_template/index.html.j2 | 4 +- .../voila/templates/test_template/voila.tpl | 4 +- voila/app.py | 39 +- voila/configuration.py | 2 - voila/exporter.py | 10 +- voila/handler.py | 3 + voila/notebook_renderer.py | 26 +- voila/server_extension.py | 44 +- voila/utils.py | 40 + voila/voila_kernel_manager.py | 3 +- yarn.lock | 3071 ++++++----------- 49 files changed, 2124 insertions(+), 2787 deletions(-) create mode 100644 notebooks/mimerenderers.ipynb create mode 100644 packages/voila/index.js create mode 100644 packages/voila/publicpath.js create mode 100644 packages/voila/src/app.ts delete mode 100644 packages/voila/src/kernel.ts delete mode 100644 packages/voila/src/loader.ts delete mode 100644 packages/voila/src/mathjax.ts create mode 100644 packages/voila/src/plugins.ts delete mode 100644 packages/voila/src/rendermime.ts create mode 100644 packages/voila/src/shell.ts delete mode 100644 packages/voila/src/typings.d.ts create mode 100644 packages/voila/style.css delete mode 100644 share/jupyter/voila/templates/base/static/main.js delete mode 100644 share/jupyter/voila/templates/base/static/require.min.js diff --git a/.binder/environment.yml b/.binder/environment.yml index a7b2f3e73..d35cf7e7b 100644 --- a/.binder/environment.yml +++ b/.binder/environment.yml @@ -7,6 +7,5 @@ dependencies: - bqplot - scipy - ipympl - - ipympl - xleaflet=0.16.0 - xeus-cling=0.13.0 diff --git a/.binder/postBuild b/.binder/postBuild index 8d681899f..2c26cb1bf 100644 --- a/.binder/postBuild +++ b/.binder/postBuild @@ -6,4 +6,7 @@ jlpm && jlpm run build python -m pip install -e . jupyter labextension develop . --overwrite jupyter server extension enable voila.server_extension --sys-prefix -jupyter serverextension enable voila.server_extension --sys-prefix \ No newline at end of file +jupyter serverextension enable voila.server_extension --sys-prefix + +# force installing ipywidgets 8 +python -m pip install --pre -U ipywidgets \ No newline at end of file diff --git a/.eslintignore b/.eslintignore index 26697c3ce..116757811 100644 --- a/.eslintignore +++ b/.eslintignore @@ -15,6 +15,7 @@ node_modules coverage *.map.js *.bundle.js +*.voila.js # jetbrains IDE stuff .idea/ diff --git a/.prettierignore b/.prettierignore index 7da777435..e6129f266 100644 --- a/.prettierignore +++ b/.prettierignore @@ -7,5 +7,6 @@ node_modules build notebooks/ .vscode/ +.pytest_cache -ui-tests/playwright-report \ No newline at end of file +ui-tests/playwright-report diff --git a/docs/source/contribute.rst b/docs/source/contribute.rst index 0030450ab..a68983ef6 100755 --- a/docs/source/contribute.rst +++ b/docs/source/contribute.rst @@ -189,6 +189,23 @@ To lint the packages: # run prettier jlpm run prettier +About the Voila Frontend +======================== + +The Voila frontend is built as a JupyterLab-based application using JupyterLab components. + +This makes it possible to reuse existing plugins and extensions for Jupyterlab such as core JupyterLab plugin like the JSON viewer, +as well as third-party mime renderers like the `FASTA viewer `_. + +The Voila frontend is able to load existing JupyterLab extensions installed as prebuilt extensions under ``${PREFIX}/share/labextensions``, +similar to the way it works in JupyterLab. + +These extensions are typically distributed via ``pip`` and ``conda`` packages and can easily be installed by end users without requiring Node.js. +Widget packages usually now include a prebuilt extension for JupyterLab 3.0 by default, which should automatically work in Voila too. + +Check out the `JupyterLab Documentation on prebuilt extensions `_ for more info. + +The code for the frontend is located under ``packages/voila``, with support for loading federated extensions in ``packages/voila/index.js``. Tests ===== diff --git a/docs/source/using.rst b/docs/source/using.rst index 7bac3b1e5..93591638c 100755 --- a/docs/source/using.rst +++ b/docs/source/using.rst @@ -132,25 +132,3 @@ The examples can then be served with: cd notebooks/ voila - - -Using third-party Widgets with Voilà -==================================== - -By default, Voilà doesn't serve Jupyter Widgets installed as a classic notebook extension (nbextension). - -Instead, it fallbacks to fetching the files from a CDN. This might result in an error (404) in case the -custom widget has not been published to ``npm``, or when Voilà runs in an environment without an Internet -connection. - -To let the Voilà standalone app serve the nbextensions, use the ``enable_nbextensions`` flag as follows: - -.. code-block:: bash - - voila --enable_nbextensions=True - -When using Voilà as a server extension: - -.. code-block:: bash - - jupyter notebook --VoilaConfiguration.enable_nbextensions=True diff --git a/notebooks/mimerenderers.ipynb b/notebooks/mimerenderers.ipynb new file mode 100644 index 000000000..e8116a73e --- /dev/null +++ b/notebooks/mimerenderers.ipynb @@ -0,0 +1,159 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# JSON" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from ipywidgets import Button, Output\n", + "from IPython import display\n", + "\n", + "button = Button(description='Output JSON')\n", + "output = Output()\n", + "obj = {\n", + " \"abcde\": 1234,\n", + " \"nested\": list(range(10))\n", + "}\n", + "\n", + "@output.capture()\n", + "def on_click(change):\n", + " display.display(display.JSON(obj))\n", + " \n", + " \n", + "button.on_click(on_click)\n", + "display.display(button)\n", + "output" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "display.JSON(obj)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fasta" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fasta_button = Button(description='Output FASTA')\n", + "fasta_output = Output()\n", + "\n", + "\n", + "def Fasta(data=''):\n", + " bundle = {}\n", + " bundle['application/vnd.fasta.fasta'] = data\n", + " bundle['text/plain'] = data\n", + " display.display(bundle, raw=True)\n", + " \n", + " \n", + "@fasta_output.capture()\n", + "def on_click(change):\n", + " Fasta(\"\"\">SEQUENCE_1\n", + "MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG\n", + "LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK\n", + "IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL\n", + "MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGLEKKTEDFAAEVAAQL\n", + ">SEQUENCE_2\n", + "SATVSEINSETDFVAKNDQFIALTKDTTAHIQSNSLQSVEELHSSTINGVKFEEYLKSQI\n", + "ATIGENLVVRRFATLKAGANGVVNGYIHTNGRVGVVIAAACDSAEVASKSRDLLRQICMH\"\"\")\n", + "\n", + "\n", + "fasta_button.on_click(on_click)\n", + "display.display(fasta_button)\n", + "fasta_output" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# GeoJSON" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from IPython.display import GeoJSON\n", + "\n", + "\n", + "geojson_button = Button(description='Output GeoJSON')\n", + "geojson_output = Output()\n", + "\n", + " \n", + "@geojson_output.capture()\n", + "def on_click(change):\n", + " obj = GeoJSON({\n", + " \"type\": \"Feature\",\n", + " \"geometry\": {\n", + " \"type\": \"Point\",\n", + " \"coordinates\": [-118.4563712, 34.0163116]\n", + " }\n", + " })\n", + " display.display(obj)\n", + " \n", + "\n", + "geojson_button.on_click(on_click)\n", + "display.display(geojson_button)\n", + "geojson_output" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.9.1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/packages/jupyterlab-preview/src/preview.tsx b/packages/jupyterlab-preview/src/preview.tsx index 7269699f0..e4f50244c 100644 --- a/packages/jupyterlab-preview/src/preview.tsx +++ b/packages/jupyterlab-preview/src/preview.tsx @@ -146,8 +146,8 @@ export class VoilaPreview extends DocumentWidget { * Reload the preview. */ reload(): void { - const iframe = this.content.node.querySelector('iframe')!; - if (iframe.contentWindow) { + const iframe = this.content.node.querySelector('iframe'); + if (iframe && iframe.contentWindow) { iframe.contentWindow.location.reload(); } } diff --git a/packages/voila/index.js b/packages/voila/index.js new file mode 100644 index 000000000..15b3107c1 --- /dev/null +++ b/packages/voila/index.js @@ -0,0 +1,191 @@ +/*************************************************************************** + * Copyright (c) 2018, Voilà contributors * + * Copyright (c) 2018, QuantStack * + * * + * Distributed under the terms of the BSD 3-Clause License. * + * * + * The full license is in the file LICENSE, distributed with this software. * + ****************************************************************************/ + +// 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 './style.css'; + +import { PageConfig, URLExt } from '@jupyterlab/coreutils'; + +import { VoilaApp } from '@voila-dashboards/voila'; + +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); + return factory(); + } catch (e) { + console.warn( + `Failed to create module: package: ${scope}; module: ${module}` + ); + throw e; + } +} + +const disabled = ['@jupyter-widgets/jupyterlab-manager']; + +/** + * The main function + */ +async function main() { + let mods = [ + // @jupyterlab plugins + require('@jupyterlab/markdownviewer-extension'), + require('@jupyterlab/mathjax2-extension'), + require('@jupyterlab/rendermime-extension'), + // TODO: add the settings endpoint to re-enable the theme plugins? + // This would also need the theme manager plugin and settings + // require('@jupyterlab/theme-light-extension'), + // require('@jupyterlab/theme-dark-extension'), + require('./plugins') + ]; + + const mimeExtensions = [require('@jupyterlab/json-extension')]; + + /** + * 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) { + if ( + PageConfig.Extension.isDisabled(plugin.id) || + disabled.includes(plugin.id) || + disabled.includes(plugin.id.split(':')[0]) + ) { + continue; + } + yield plugin; + } + } + + const extensionData = JSON.parse( + PageConfig.getOption('federated_extensions') + ); + + console.log('extension data', extensionData); + + const federatedExtensionPromises = []; + const federatedMimeExtensionPromises = []; + const federatedStylePromises = []; + + const extensions = await Promise.allSettled( + extensionData.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) { + federatedStylePromises.push(createModule(data.name, data.style)); + } + }); + + // 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); + }); + + const app = new VoilaApp({ mimeExtensions }); + app.registerPluginModules(mods); + await app.start(); + + window.jupyterapp = app; +} + +window.addEventListener('load', main); diff --git a/packages/voila/package.json b/packages/voila/package.json index 2e889a986..1d1719da4 100644 --- a/packages/voila/package.json +++ b/packages/voila/package.json @@ -8,47 +8,69 @@ "main": "lib/index.js", "browserslist": ">0.8%, not ie 11, not op_mini all, not dead", "dependencies": { - "@jupyter-widgets/base": "^4.1.0", - "@jupyter-widgets/controls": "^3.1.0", - "@jupyter-widgets/jupyterlab-manager": "^3.1.0", + "@jupyter-widgets/base": "^6.0.0-rc.0", + "@jupyter-widgets/controls": "^5.0.0-rc.0", + "@jupyter-widgets/jupyterlab-manager": "^5.0.0-rc.0", + "@jupyterlab/json-extension": "^3.0.0", + "@jupyterlab/markdownviewer-extension": "^3.0.0", + "@jupyterlab/mathjax2-extension": "^3.0.0", + "@jupyterlab/rendermime-extension": "^3.0.0", "@jupyterlab/application": "^3.0.0", "@jupyterlab/apputils": "^3.0.0", "@jupyterlab/coreutils": "^5.0.0", "@jupyterlab/docregistry": "^3.0.0", - "@jupyterlab/javascript-extension": "~3.0.0", + "@jupyterlab/logconsole": "^3.0.0", + "@jupyterlab/mainmenu": "^3.0.0", "@jupyterlab/notebook": "^3.0.0", "@jupyterlab/outputarea": "^3.0.0", "@jupyterlab/rendermime": "^3.0.0", "@jupyterlab/services": "^6.1.8", - "@lumino/algorithm": "^1.3.3", - "@lumino/commands": "^1.12.0", - "@lumino/domutils": "^1.2.3", - "@lumino/messaging": "^1.4.3", - "@lumino/signaling": "^1.4.3", - "@lumino/virtualdom": "^1.8.0", - "@lumino/widgets": "^1.18.0", - "mathjax-full": "^3.0.0" + "@jupyterlab/settingregistry": "^3.0.0", + "@jupyterlab/translation": "^3.0.0", + "@jupyterlab/ui-components": "^3.0.0", + "@lumino/algorithm": "^1.6.2", + "@lumino/commands": "^1.15.2", + "@lumino/coreutils": "^1.8.2", + "@lumino/disposable": "^1.7.2", + "@lumino/domutils": "^1.5.2", + "@lumino/dragdrop": "^1.10.2", + "@lumino/messaging": "^1.7.2", + "@lumino/properties": "^1.5.2", + "@lumino/signaling": "^1.7.2", + "@lumino/virtualdom": "^1.11.2", + "@lumino/widgets": "^1.26.2", + "react": "^17.0.1" }, "devDependencies": { "@babel/core": "^7.2.2", "@babel/preset-env": "^7.3.1", + "@jupyterlab/builder": "^3.0.0", "babel-loader": "^8.0.5", - "css-loader": "^5.0.0", - "file-loader": "^4.0.0", + "css-loader": "~5.0.2", + "file-loader": "^6.2.0", "npm-run-all": "^4.1.5", "p-limit": "^2.2.2", "style-loader": "^2.0.0", "typescript": "~4.1.3", - "url-loader": "^1.0.0", - "webpack": "^4.29.3", - "webpack-cli": "^3.2.3" + "url-loader": "^4.1.1", + "webpack": "^5.24.1", + "webpack-cli": "^4.5.0", + "fs-extra": "^9.1.0", + "glob": "~7.1.6", + "mini-css-extract-plugin": "~0.9.0", + "raw-loader": "^4.0.2", + "rimraf": "^3.0.2", + "svg-url-loader": "^7.1.1", + "watch": "^1.0.2", + "webpack-bundle-analyzer": "^4.4.0", + "webpack-merge": "^5.7.3", + "whatwg-fetch": "^3.0.0" }, - "style": "style/index.css", "scripts": { - "build": "npm run build:lib && webpack", + "build": "npm run build:lib && webpack --mode=development", "build:lib": "tsc", - "build:prod": "npm run build:lib && webpack --production", - "clean": "jlpm run clean:lib", + "build:prod": "npm run build:lib && webpack --mode=production", + "clean": "jlpm run clean:lib && rimraf build", "clean:lib": "rimraf lib tsconfig.tsbuildinfo", "prepare": "npm run build:lib && webpack", "test": "echo \"Error: no test specified\" && exit 1", diff --git a/packages/voila/publicpath.js b/packages/voila/publicpath.js new file mode 100644 index 000000000..751281fe5 --- /dev/null +++ b/packages/voila/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/packages/voila/src/app.ts b/packages/voila/src/app.ts new file mode 100644 index 000000000..9efcf14d9 --- /dev/null +++ b/packages/voila/src/app.ts @@ -0,0 +1,149 @@ +import { + JupyterFrontEnd, + JupyterFrontEndPlugin, + createRendermimePlugins +} from '@jupyterlab/application'; + +import { PageConfig } from '@jupyterlab/coreutils'; + +import { IRenderMime } from '@jupyterlab/rendermime'; + +import { IShell, VoilaShell } from './shell'; + +/** + * App is the main application class. It is instantiated once and shared. + */ +export class VoilaApp extends JupyterFrontEnd { + /** + * Construct a new App object. + * + * @param options The instantiation options for an application. + */ + constructor(options: App.IOptions = { shell: new VoilaShell() }) { + super({ + shell: options.shell ?? new VoilaShell() + }); + + if (options.mimeExtensions) { + for (const plugin of createRendermimePlugins(options.mimeExtensions)) { + this.registerPlugin(plugin); + } + } + } + + /** + * The name of the application. + */ + readonly name = 'Voila'; + + /** + * A namespace/prefix plugins may use to denote their provenance. + */ + readonly namespace = this.name; + + /** + * The version of the application. + */ + readonly version = 'unknown'; + + /** + * The JupyterLab application paths dictionary. + */ + get paths(): JupyterFrontEnd.IPaths { + return { + urls: { + base: PageConfig.getOption('baseUrl'), + notFound: PageConfig.getOption('notFoundUrl'), + app: PageConfig.getOption('appUrl'), + static: PageConfig.getOption('staticUrl'), + settings: PageConfig.getOption('settingsUrl'), + themes: PageConfig.getOption('themesUrl'), + doc: PageConfig.getOption('docUrl'), + translations: PageConfig.getOption('translationsApiUrl'), + hubHost: PageConfig.getOption('hubHost') || undefined, + hubPrefix: PageConfig.getOption('hubPrefix') || undefined, + hubUser: PageConfig.getOption('hubUser') || undefined, + hubServerName: PageConfig.getOption('hubServerName') || undefined + }, + directories: { + appSettings: PageConfig.getOption('appSettingsDir'), + schemas: PageConfig.getOption('schemasDir'), + static: PageConfig.getOption('staticDir'), + templates: PageConfig.getOption('templatesDir'), + themes: PageConfig.getOption('themesDir'), + userSettings: PageConfig.getOption('userSettingsDir'), + serverRoot: PageConfig.getOption('serverRoot'), + workspaces: PageConfig.getOption('workspacesDir') + } + }; + } + + /** + * Register plugins from a plugin module. + * + * @param mod - The plugin module to register. + */ + registerPluginModule(mod: App.IPluginModule): void { + let data = mod.default; + // Handle commonjs exports. + if (!Object.prototype.hasOwnProperty.call(mod, '__esModule')) { + data = mod as any; + } + if (!Array.isArray(data)) { + data = [data]; + } + data.forEach(item => { + try { + this.registerPlugin(item); + } catch (error) { + console.error(error); + } + }); + } + + /** + * Register the plugins from multiple plugin modules. + * + * @param mods - The plugin modules to register. + */ + registerPluginModules(mods: App.IPluginModule[]): void { + mods.forEach(mod => { + this.registerPluginModule(mod); + }); + } +} + +/** + * A namespace for App statics. + */ +export namespace App { + /** + * The instantiation options for an App application. + */ + export interface IOptions + extends JupyterFrontEnd.IOptions, + Partial { + paths?: Partial; + } + + /** + * The information about a Voila application. + */ + export interface IInfo { + /** + * The mime renderer extensions. + */ + readonly mimeExtensions: IRenderMime.IExtensionModule[]; + } + + /** + * The interface for a module that exports a plugin or plugins as + * the default value. + */ + export interface IPluginModule { + /** + * The default export. + */ + default: JupyterFrontEndPlugin | JupyterFrontEndPlugin[]; + } +} diff --git a/packages/voila/src/index.ts b/packages/voila/src/index.ts index 0eb596b68..4a4f58515 100644 --- a/packages/voila/src/index.ts +++ b/packages/voila/src/index.ts @@ -7,14 +7,4 @@ * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ -import '../style/index.css'; - -export { - RenderMimeRegistry, - standardRendererFactories -} from '@jupyterlab/rendermime'; - -export { extendedRendererFactories } from './rendermime'; -export { WidgetManager } from './manager'; -export { connectKernel } from './kernel'; -export { renderMathJax } from './mathjax'; +export * from './app'; diff --git a/packages/voila/src/kernel.ts b/packages/voila/src/kernel.ts deleted file mode 100644 index d251defce..000000000 --- a/packages/voila/src/kernel.ts +++ /dev/null @@ -1,31 +0,0 @@ -/*************************************************************************** - * Copyright (c) 2018, Voilà contributors * - * Copyright (c) 2018, QuantStack * - * * - * Distributed under the terms of the BSD 3-Clause License. * - * * - * The full license is in the file LICENSE, distributed with this software. * - ****************************************************************************/ - -import { PageConfig } from '@jupyterlab/coreutils'; - -import { Kernel, KernelAPI, ServerConnection } from '@jupyterlab/services'; - -import { KernelConnection } from '@jupyterlab/services/lib/kernel/default'; - -export async function connectKernel( - baseUrl?: string, - kernelId?: string, - options?: Partial -): Promise { - baseUrl = baseUrl ?? PageConfig.getBaseUrl(); - kernelId = kernelId ?? PageConfig.getOption('kernelId'); - const serverSettings = ServerConnection.makeSettings({ baseUrl, ...options }); - - const model = await KernelAPI.getKernelModel(kernelId, serverSettings); - if (!model) { - return; - } - const kernel = new KernelConnection({ model, serverSettings }); - return kernel; -} diff --git a/packages/voila/src/loader.ts b/packages/voila/src/loader.ts deleted file mode 100644 index 440f9e18e..000000000 --- a/packages/voila/src/loader.ts +++ /dev/null @@ -1,81 +0,0 @@ -/*************************************************************************** - * Copyright (c) 2018, Voilà contributors * - * Copyright (c) 2018, QuantStack * - * * - * Distributed under the terms of the BSD 3-Clause License. * - * * - * The full license is in the file LICENSE, distributed with this software. * - ****************************************************************************/ - -const cdn = 'https://cdn.jsdelivr.net/npm/'; - -/** - * Load a package using requirejs and return a promise - * - * @param pkg Package name or names to load - */ -function requirePromise(pkg: string[]) { - return new Promise((resolve, reject) => { - const require = window.requirejs; - if (require === undefined) { - reject('Requirejs is needed, please ensure it is loaded on the page.'); - } else { - require(pkg, resolve, reject); - } - }); -} - -function moduleNameToCDNUrl(moduleName: string, moduleVersion: string) { - let packageName = moduleName; - let fileName = 'index'; // default filename - // if a '/' is present, like 'foo/bar', packageName is changed to 'foo', and path to 'bar' - // We first find the first '/' - let index = moduleName.indexOf('/'); - if (index !== -1 && moduleName[0] === '@') { - // if we have a namespace, it's a different story - // @foo/bar/baz should translate to @foo/bar and baz - // so we find the 2nd '/' - index = moduleName.indexOf('/', index + 1); - } - if (index !== -1) { - fileName = moduleName.substr(index + 1); - packageName = moduleName.substr(0, index); - } - return `${cdn}${packageName}@${moduleVersion}/dist/${fileName}`; -} - -/** - * Load an amd module locally and fall back to specified CDN if unavailable. - * - * @param moduleName The name of the module to load.. - * @param version The semver range for the module, if loaded from a CDN. - * - * By default, the CDN service used is cdn.jsdelivr.net. However, this default can be - * overridden by specifying another URL via the HTML attribute - * "data-jupyter-widgets-cdn" on a script tag of the page. - * - * The semver range is only used with the CDN. - */ -export function requireLoader( - moduleName: string, - moduleVersion: string -): Promise { - return requirePromise([`${moduleName}`]).catch(err => { - const failedId = err.requireModules && err.requireModules[0]; - if (failedId) { - console.log(`Falling back to ${cdn} for ${moduleName}@${moduleVersion}`); - const require = window.requirejs; - if (require === undefined) { - throw new Error( - 'Requirejs is needed, please ensure it is loaded on the page.' - ); - } - const conf: { paths: { [key: string]: string } } = { paths: {} }; - conf.paths[moduleName] = moduleNameToCDNUrl(moduleName, moduleVersion); - require.undef(failedId); - require.config(conf); - - return requirePromise([`${moduleName}`]); - } - }); -} diff --git a/packages/voila/src/manager.ts b/packages/voila/src/manager.ts index bb4e44136..e427c63e4 100644 --- a/packages/voila/src/manager.ts +++ b/packages/voila/src/manager.ts @@ -7,98 +7,49 @@ * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ -import { - WidgetManager as JupyterLabManager, - WidgetRenderer -} from '@jupyter-widgets/jupyterlab-manager'; +import { WidgetRenderer, output } from '@jupyter-widgets/jupyterlab-manager'; -import { output } from '@jupyter-widgets/jupyterlab-manager'; +import { KernelWidgetManager } from '@jupyter-widgets/jupyterlab-manager'; import * as base from '@jupyter-widgets/base'; -import * as controls from '@jupyter-widgets/controls'; -import * as Application from '@jupyterlab/application'; -import * as AppUtils from '@jupyterlab/apputils'; -import * as CoreUtils from '@jupyterlab/coreutils'; -import * as DocRegistry from '@jupyterlab/docregistry'; -import * as OutputArea from '@jupyterlab/outputarea'; +import * as controls from '@jupyter-widgets/controls'; -import { DocumentRegistry } from '@jupyterlab/docregistry'; -import { INotebookModel } from '@jupyterlab/notebook'; import { IRenderMimeRegistry } from '@jupyterlab/rendermime'; import * as LuminoWidget from '@lumino/widgets'; -import * as LuminoSignaling from '@lumino/signaling'; -import * as LuminoVirtualdom from '@lumino/virtualdom'; -import * as LuminoAlgorithm from '@lumino/algorithm'; -import * as LuminoCommands from '@lumino/commands'; -import * as LuminoDomutils from '@lumino/domutils'; import { MessageLoop } from '@lumino/messaging'; import { Widget } from '@lumino/widgets'; -import { requireLoader } from './loader'; - -if (typeof window !== 'undefined' && typeof window.define !== 'undefined') { - window.define('@jupyter-widgets/base', base); - window.define('@jupyter-widgets/controls', controls); - window.define('@jupyter-widgets/output', output); - - window.define('@jupyterlab/application', Application); - window.define('@jupyterlab/apputils', AppUtils); - window.define('@jupyterlab/coreutils', CoreUtils); - window.define('@jupyterlab/docregistry', DocRegistry); - window.define('@jupyterlab/outputarea', OutputArea); - - window.define('@phosphor/widgets', LuminoWidget); - window.define('@phosphor/signaling', LuminoSignaling); - window.define('@phosphor/virtualdom', LuminoVirtualdom); - window.define('@phosphor/algorithm', LuminoAlgorithm); - window.define('@phosphor/commands', LuminoCommands); - window.define('@phosphor/domutils', LuminoDomutils); - - window.define('@lumino/widgets', LuminoWidget); - window.define('@lumino/signaling', LuminoSignaling); - window.define('@lumino/virtualdom', LuminoVirtualdom); - window.define('@lumino/algorithm', LuminoAlgorithm); - window.define('@lumino/commands', LuminoCommands); - window.define('@lumino/domutils', LuminoDomutils); -} +import { Kernel } from '@jupyterlab/services'; const WIDGET_MIMETYPE = 'application/vnd.jupyter.widget-view+json'; -/** - * Time (in ms) after which we consider the control comm target not responding. - */ -export const CONTROL_COMM_TIMEOUT = 4000; - /** * A custom widget manager to render widgets with Voila */ -export class WidgetManager extends JupyterLabManager { +export class WidgetManager extends KernelWidgetManager { constructor( - context: DocumentRegistry.IContext, - rendermime: IRenderMimeRegistry, - settings: JupyterLabManager.Settings + kernel: Kernel.IKernelConnection, + rendermime: IRenderMimeRegistry ) { - super(context, rendermime, settings); + super(kernel, rendermime); rendermime.addFactory( { safe: false, mimeTypes: [WIDGET_MIMETYPE], - createRenderer: options => new WidgetRenderer(options, this) + createRenderer: options => new WidgetRenderer(options) }, 1 ); this._registerWidgets(); - this._loader = requireLoader; } async build_widgets(): Promise { - await this._loadFromKernel(); const tags = document.body.querySelectorAll( - 'script[type="application/vnd.jupyter.widget-view+json"]' + `script[type="${WIDGET_MIMETYPE}"]` ); tags.forEach(async viewtag => { @@ -111,10 +62,8 @@ export class WidgetManager extends JupyterLabManager { const model = await this.get_model(model_id); const widgetel = document.createElement('div'); viewtag.parentElement.insertBefore(widgetel, viewtag); - // TODO: fix typing - await this.display_model(undefined as any, model, { - el: widgetel - }); + const view = await this.create_view(model); + this.display_view(view, widgetel); } catch (error) { // Each widget view tag rendering is wrapped with a try-catch statement. // @@ -125,58 +74,28 @@ export class WidgetManager extends JupyterLabManager { // // This workaround may not be necessary anymore with templates that make use // of progressive rendering. + console.error(error); } }); } - async display_view(msg: any, view: any, options: any): Promise { - if (options.el) { - LuminoWidget.Widget.attach(view.pWidget, options.el); + async display_view( + view: base.DOMWidgetView, + el: HTMLElement + ): Promise { + if (el) { + LuminoWidget.Widget.attach(view.luminoWidget, el); } if (view.el) { view.el.setAttribute('data-voila-jupyter-widget', ''); view.el.addEventListener('jupyterWidgetResize', (e: Event) => { MessageLoop.postMessage( - view.pWidget, + view.luminoWidget, LuminoWidget.Widget.ResizeMessage.UnknownSize ); }); } - return view.pWidget; - } - - async loadClass( - className: string, - moduleName: string, - moduleVersion: string - ): Promise { - if ( - moduleName === '@jupyter-widgets/base' || - moduleName === '@jupyter-widgets/controls' || - moduleName === '@jupyter-widgets/output' - ) { - return super.loadClass(className, moduleName, moduleVersion); - } else { - // TODO: code duplicate from HTMLWidgetManager, consider a refactor - return this._loader(moduleName, moduleVersion).then(module => { - if (module[className]) { - return module[className]; - } else { - return Promise.reject( - 'Class ' + - className + - ' not found in module ' + - moduleName + - '@' + - moduleVersion - ); - } - }); - } - } - - restoreWidgets(notebook: INotebookModel): Promise { - return Promise.resolve(); + return view.luminoWidget; } private _registerWidgets(): void { @@ -196,6 +115,4 @@ export class WidgetManager extends JupyterLabManager { exports: output as any }); } - - private _loader: (name: any, version: any) => Promise; } diff --git a/packages/voila/src/mathjax.ts b/packages/voila/src/mathjax.ts deleted file mode 100644 index c35b1b46d..000000000 --- a/packages/voila/src/mathjax.ts +++ /dev/null @@ -1,59 +0,0 @@ -// MathJax core -import { mathjax } from 'mathjax-full/js/mathjax'; - -// TeX input -import { TeX } from 'mathjax-full/js/input/tex'; - -// HTML output -import { CHTML } from 'mathjax-full/js/output/chtml'; - -import { browserAdaptor } from 'mathjax-full/js/adaptors/browserAdaptor'; - -import { TeXFont } from 'mathjax-full/js/output/chtml/fonts/tex'; - -import { RegisterHTMLHandler } from 'mathjax-full/js/handlers/html'; - -import { AllPackages } from 'mathjax-full/js/input/tex/AllPackages'; - -// Register the HTML document handler -RegisterHTMLHandler(browserAdaptor()); - -// Override dynamically generated fonts in favor -// of our font css that is picked up by webpack. -class emptyFont extends TeXFont { - readonly defaultFonts = {}; -} - -const chtml = new CHTML({ - font: new emptyFont() -}); - -const tex = new TeX({ - packages: AllPackages, - inlineMath: [ - ['$', '$'], - ['\\(', '\\)'] - ], - displayMath: [ - ['$$', '$$'], - ['\\[', '\\]'] - ], - processEscapes: true, - processEnvironments: true -}); - -// initialize mathjax with with the browser DOM document; other documents are possible -const html = mathjax.document(document, { - InputJax: tex, - OutputJax: chtml -}); - -export function renderMathJax(): void { - html - .findMath() - .compile() - .getMetrics() - .typeset() - .updateDocument() - .reset(); -} diff --git a/packages/voila/src/plugins.ts b/packages/voila/src/plugins.ts new file mode 100644 index 000000000..3d29864a9 --- /dev/null +++ b/packages/voila/src/plugins.ts @@ -0,0 +1,146 @@ +/*************************************************************************** + * Copyright (c) 2018, Voilà contributors * + * Copyright (c) 2018, QuantStack * + * * + * Distributed under the terms of the BSD 3-Clause License. * + * * + * The full license is in the file LICENSE, distributed with this software. * + ****************************************************************************/ + +import { + JupyterFrontEnd, + JupyterFrontEndPlugin +} from '@jupyterlab/application'; + +import { PageConfig } from '@jupyterlab/coreutils'; + +import { IRenderMimeRegistry } from '@jupyterlab/rendermime'; + +import { KernelAPI, ServerConnection } from '@jupyterlab/services'; + +import { KernelConnection } from '@jupyterlab/services/lib/kernel/default'; + +import { ITranslator, TranslationManager } from '@jupyterlab/translation'; + +import { + IJupyterWidgetRegistry, + IWidgetRegistryData +} from '@jupyter-widgets/base'; + +import { VoilaApp } from './app'; + +import { WidgetManager as VoilaWidgetManager } from './manager'; + +/** + * The default paths. + */ +const paths: JupyterFrontEndPlugin = { + id: '@voila-dashboards/voila:paths', + activate: ( + app: JupyterFrontEnd + ): JupyterFrontEnd.IPaths => { + return (app as VoilaApp).paths; + }, + autoStart: true, + provides: JupyterFrontEnd.IPaths +}; + +/** + * A plugin to stop polling the kernels, sessions and kernel specs. + * + * TODO: a cleaner solution would involve a custom ServiceManager to the VoilaApp + * to prevent the default behavior of polling the /api endpoints. + */ +const stopPolling: JupyterFrontEndPlugin = { + id: '@voila-dashboards/voila:stop-polling', + autoStart: true, + activate: (app: JupyterFrontEnd): void => { + app.serviceManager.sessions?.ready.then(value => { + app.serviceManager.sessions['_kernelManager']['_pollModels']?.stop(); + void app.serviceManager.sessions['_pollModels'].stop(); + }); + + app.serviceManager.kernelspecs?.ready.then(value => { + void app.serviceManager.kernelspecs.dispose(); + }); + } +}; + +/** + * A simplified Translator + */ +const translator: JupyterFrontEndPlugin = { + id: '@voila-dashboards/voila:translator', + activate: (app: JupyterFrontEnd): ITranslator => { + const translationManager = new TranslationManager(); + return translationManager; + }, + autoStart: true, + provides: ITranslator +}; + +/** + * The Voila widgets manager plugin. + */ +const widgetManager: JupyterFrontEndPlugin = { + id: '@voila-dashboards/voila:widget-manager', + autoStart: true, + requires: [IRenderMimeRegistry], + provides: IJupyterWidgetRegistry, + activate: async ( + app: JupyterFrontEnd, + rendermime: IRenderMimeRegistry + ): Promise => { + const baseUrl = PageConfig.getBaseUrl(); + const kernelId = PageConfig.getOption('kernelId'); + const serverSettings = ServerConnection.makeSettings({ baseUrl }); + + const model = await KernelAPI.getKernelModel(kernelId, serverSettings); + if (!model) { + return { + registerWidget(data: IWidgetRegistryData): void { + throw Error(`The model for kernel id ${kernelId} does not exist`); + } + }; + } + const kernel = new KernelConnection({ model, serverSettings }); + const manager = new VoilaWidgetManager(kernel, rendermime); + + manager.restored.connect(() => { + void manager.build_widgets(); + }); + + window.addEventListener('beforeunload', e => { + const data = new FormData(); + // it seems if we attach this to early, it will not be called + const matches = document.cookie.match('\\b_xsrf=([^;]*)\\b'); + const xsrfToken = (matches && matches[1]) || ''; + data.append('_xsrf', xsrfToken); + window.navigator.sendBeacon( + `${baseUrl}voila/api/shutdown/${kernel.id}`, + data + ); + kernel.dispose(); + }); + + console.log('Voila manager activated'); + + return { + registerWidget(data: IWidgetRegistryData): void { + manager.register(data); + } + }; + } +}; + +/** + * Export the plugins as default. + */ +const plugins: JupyterFrontEndPlugin[] = [ + paths, + stopPolling, + translator, + widgetManager +]; + +export default plugins; diff --git a/packages/voila/src/rendermime.ts b/packages/voila/src/rendermime.ts deleted file mode 100644 index d2dd14b96..000000000 --- a/packages/voila/src/rendermime.ts +++ /dev/null @@ -1,30 +0,0 @@ -/*************************************************************************** - * Copyright (c) 2021, Voilà contributors * - * Copyright (c) 2021, QuantStack * - * * - * Distributed under the terms of the BSD 3-Clause License. * - * * - * The full license is in the file LICENSE, distributed with this software. * - ****************************************************************************/ - -import { - htmlRendererFactory, - markdownRendererFactory, - latexRendererFactory, - svgRendererFactory, - imageRendererFactory, - textRendererFactory -} from '@jupyterlab/rendermime'; - -import { rendererFactory as javascriptRendererFactory } from '@jupyterlab/javascript-extension'; -import { IRenderMime } from '@jupyterlab/rendermime-interfaces'; - -export const extendedRendererFactories: ReadonlyArray = [ - htmlRendererFactory, - markdownRendererFactory, - latexRendererFactory, - svgRendererFactory, - imageRendererFactory, - javascriptRendererFactory, - textRendererFactory -]; diff --git a/packages/voila/src/shell.ts b/packages/voila/src/shell.ts new file mode 100644 index 000000000..9ba0780f0 --- /dev/null +++ b/packages/voila/src/shell.ts @@ -0,0 +1,71 @@ +/*************************************************************************** + * Copyright (c) 2018, Voilà contributors * + * Copyright (c) 2018, QuantStack * + * * + * Distributed under the terms of the BSD 3-Clause License. * + * * + * The full license is in the file LICENSE, distributed with this software. * + ****************************************************************************/ + +import { JupyterFrontEnd } from '@jupyterlab/application'; + +import { DocumentRegistry } from '@jupyterlab/docregistry'; + +import { IIterator, iter } from '@lumino/algorithm'; + +import { Widget } from '@lumino/widgets'; + +export type IShell = VoilaShell; + +/** + * A namespace for Shell statics + */ +export namespace IShell { + /** + * The areas of the application shell where widgets can reside. + */ + export type Area = 'main'; +} + +/** + * The application shell. + */ +export class VoilaShell extends Widget implements JupyterFrontEnd.IShell { + constructor() { + super(); + this.id = 'main'; + } + + activateById(id: string): void { + // no-op + } + + /** + * Add a widget to the application shell. + * + * @param widget - The widget being added. + * + * @param area - Optional region in the shell into which the widget should + * be added. + * + */ + add( + widget: Widget, + area?: IShell.Area, + options?: DocumentRegistry.IOpenOptions + ): void { + // no-op for now + // TODO: support adding widgets to areas? + } + + /** + * The current widget in the shell's main area. + */ + get currentWidget(): Widget | null { + return null; + } + + widgets(area: IShell.Area): IIterator { + return iter([]); + } +} diff --git a/packages/voila/src/typings.d.ts b/packages/voila/src/typings.d.ts deleted file mode 100644 index b4030638d..000000000 --- a/packages/voila/src/typings.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/naming-convention -declare interface Window { - define: any; - requirejs: any; -} diff --git a/packages/voila/style.css b/packages/voila/style.css new file mode 100644 index 000000000..03b669625 --- /dev/null +++ b/packages/voila/style.css @@ -0,0 +1,3 @@ +@import url('~@lumino/widgets/style/index.css'); + +@import url('~@jupyter-widgets/controls/css/widgets.built.css'); diff --git a/packages/voila/style/index.css b/packages/voila/style/index.css index 5afdbdcb0..e69de29bb 100644 --- a/packages/voila/style/index.css +++ b/packages/voila/style/index.css @@ -1,131 +0,0 @@ -@font-face /* 0 */ { - font-family: MJXZERO; - src: url('~mathjax-full/es5/output/chtml/fonts/woff-v2/MathJax_Zero.woff') - format('woff'); -} - -@font-face /* 1 */ { - font-family: MJXTEX; - src: url('~mathjax-full/es5/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff') - format('woff'); -} - -@font-face /* 2 */ { - font-family: MJXTEX-B; - src: url('~mathjax-full/es5/output/chtml/fonts/woff-v2/MathJax_Main-Bold.woff') - format('woff'); -} - -@font-face /* 3 */ { - font-family: MJXTEX-MI; - src: url('~mathjax-full/es5/output/chtml/fonts/woff-v2/MathJax_Main-Italic.woff') - format('woff'); -} - -@font-face /* 4 */ { - font-family: MJXTEX-I; - src: url('~mathjax-full/es5/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff') - format('woff'); -} - -@font-face /* 5 */ { - font-family: MJXTEX-BI; - src: url('~mathjax-full/es5/output/chtml/fonts/woff-v2/MathJax_Math-BoldItalic.woff') - format('woff'); -} - -@font-face /* 6 */ { - font-family: MJXTEX-S1; - src: url('~mathjax-full/es5/output/chtml/fonts/woff-v2/MathJax_Size1-Regular.woff') - format('woff'); -} - -@font-face /* 7 */ { - font-family: MJXTEX-S2; - src: url('~mathjax-full/es5/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff') - format('woff'); -} - -@font-face /* 8 */ { - font-family: MJXTEX-S3; - src: url('~mathjax-full/es5/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff') - format('woff'); -} - -@font-face /* 9 */ { - font-family: MJXTEX-S4; - src: url('~mathjax-full/es5/output/chtml/fonts/woff-v2/MathJax_Size4-Regular.woff') - format('woff'); -} - -@font-face /* 10 */ { - font-family: MJXTEX-A; - src: url('~mathjax-full/es5/output/chtml/fonts/woff-v2/MathJax_AMS-Regular.woff') - format('woff'); -} - -@font-face /* 11 */ { - font-family: MJXTEX-C; - src: url('~mathjax-full/es5/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Regular.woff') - format('woff'); -} - -@font-face /* 12 */ { - font-family: MJXTEX-C-B; - src: url('~mathjax-full/es5/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Bold.woff') - format('woff'); -} - -@font-face /* 13 */ { - font-family: MJXTEX-FR; - src: url('~mathjax-full/es5/output/chtml/fonts/woff-v2/MathJax_Fraktur-Regular.woff') - format('woff'); -} - -@font-face /* 14 */ { - font-family: MJXTEX-FR-B; - src: url('~mathjax-full/es5/output/chtml/fonts/woff-v2/MathJax_Fraktur-Bold.woff') - format('woff'); -} - -@font-face /* 15 */ { - font-family: MJXTEX-SS; - src: url('~mathjax-full/es5/output/chtml/fonts/woff-v2/MathJax_SansSerif-Regular.woff') - format('woff'); -} - -@font-face /* 16 */ { - font-family: MJXTEX-SS-B; - src: url('~mathjax-full/es5/output/chtml/fonts/woff-v2/MathJax_SansSerif-Bold.woff') - format('woff'); -} - -@font-face /* 17 */ { - font-family: MJXTEX-SS-I; - src: url('~mathjax-full/es5/output/chtml/fonts/woff-v2/MathJax_SansSerif-Italic.woff') - format('woff'); -} - -@font-face /* 18 */ { - font-family: MJXTEX-SC; - src: url('~mathjax-full/es5/output/chtml/fonts/woff-v2/MathJax_Script-Regular.woff') - format('woff'); -} - -@font-face /* 19 */ { - font-family: MJXTEX-T; - src: url('~mathjax-full/es5/output/chtml/fonts/woff-v2/MathJax_Typewriter-Regular.woff') - format('woff'); -} - -@font-face /* 20 */ { - font-family: MJXTEX-V; - src: url('~mathjax-full/es5/output/chtml/fonts/woff-v2/MathJax_Vector-Regular.woff') - format('woff'); -} - -@font-face /* 21 */ { - font-family: MJXTEX-VB; - src: url('~mathjax-full/es5/output/chtml/fonts/woff-v2/MathJax_Vector-Bold.woff') - format('woff'); -} diff --git a/packages/voila/webpack.config.js b/packages/voila/webpack.config.js index 374574989..a7dfc18ac 100644 --- a/packages/voila/webpack.config.js +++ b/packages/voila/webpack.config.js @@ -1,35 +1,53 @@ -var path = require('path'); - -var rules = [ - { test: /\.css$/, use: ['style-loader', 'css-loader'] }, - // required to load font-awesome - { - test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, - use: - 'url-loader?limit=10000&mimetype=application/font-woff&publicPath=/voila/static/' - }, - { - test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, - use: - 'url-loader?limit=10000&mimetype=application/font-woff&publicPath=/voila/static/' - }, - { - test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, - use: - 'url-loader?limit=10000&mimetype=application/octet-stream&publicPath=/voila/static/' - }, - { - test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, - use: 'file-loader&publicPath=/voila/static/' - }, - { - test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, - use: - 'url-loader?limit=10000&mimetype=image/svg+xml&publicPath=/voila/static/' - } -]; - -var distRoot = path.resolve( +// Copyright (c) Jupyter Development Team. +// Copyright (c) Voila Development Team. +// Distributed under the terms of the Modified BSD License. + +const fs = require('fs-extra'); +const path = require('path'); +const webpack = require('webpack'); +const merge = require('webpack-merge').default; +const { ModuleFederationPlugin } = webpack.container; + +const Build = require('@jupyterlab/builder').Build; +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); + +// Copy files to the build directory +const libDir = path.resolve(__dirname, 'lib'); +const index = path.resolve(__dirname, 'index.js'); +const style = path.resolve(__dirname, 'style.css'); +fs.copySync(libDir, buildDir); +fs.copySync(index, path.resolve(buildDir, 'index.js')); +fs.copySync(style, path.resolve(buildDir, 'style.css')); + +const extras = Build.ensureAssets({ + packageNames: names, + output: buildDir +}); + +// 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'; +} + +const distRoot = path.resolve( __dirname, '..', '..', @@ -42,14 +60,28 @@ var distRoot = path.resolve( ); module.exports = [ - { - entry: ['./lib/index.js'], + merge(baseConfig, { + mode: 'development', + entry: ['./publicpath.js', './' + path.relative(__dirname, entryPoint)], output: { - filename: 'voila.js', path: distRoot, - libraryTarget: 'amd' + library: { + type: 'var', + name: ['_JUPYTERLAB', 'CORE_OUTPUT'] + }, + filename: 'voila.js' }, - module: { rules: rules }, - devtool: 'source-map' - } -]; + plugins: [ + new ModuleFederationPlugin({ + library: { + type: 'var', + name: ['_JUPYTERLAB', 'CORE_LIBRARY_FEDERATION'] + }, + name: 'CORE_FEDERATION', + shared: { + ...data.dependencies + } + }) + ] + }) +].concat(extras); diff --git a/pyproject.toml b/pyproject.toml index e174c4b12..47adb4746 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,7 @@ version-cmd = "python scripts/bump-version.py --force" ignore = [ ".binder/**", "docs/**", "notebooks/**", "packages/**", - "share/**/*.js", "share/**/*.woff", "share/**/*.css", + "share/**/*.js", "share/**/*.txt", "share/**/*.woff", "share/**/*.css", "*.json", "*.gif", "yarn.lock", "environment.yml", "readthedocs.yml", ".*", "lint-staged.config.js", "scripts/**", diff --git a/setup.cfg b/setup.cfg index 911bca5eb..17347ccba 100644 --- a/setup.cfg +++ b/setup.cfg @@ -36,6 +36,7 @@ install_requires = jupyter_server>=1.18,<2.0.0 jupyterlab_server>=2.3.0,<3 jupyter_client>=6.1.3,<8 + jupyterlab_server>=2.3.0,<3 nbclient>=0.4.0,<0.6 nbconvert>=6.4.5,<7 websockets>=9.0 @@ -50,7 +51,7 @@ dev = test = numpy pandas - ipywidgets + ipywidgets>=8.0.0a6,<9 matplotlib mock pytest diff --git a/setup.py b/setup.py index 61fac8636..afcd3d4f7 100644 --- a/setup.py +++ b/setup.py @@ -43,7 +43,6 @@ "etc/jupyter/nbconfig/notebook.d", "voila.json", ), - ("share/jupyter/nbextensions/voila", "voila/static", "extension.js"), ("share/jupyter/labextensions/%s" % labext_name, str(lab_extension_dest), "**"), ("share/jupyter/labextensions/%s" % labext_name, str(HERE), "install.json"), ("share/jupyter/voila/templates", "share/jupyter/voila/templates", "**/*[!.map]"), diff --git a/share/jupyter/voila/templates/base/static/main.js b/share/jupyter/voila/templates/base/static/main.js deleted file mode 100644 index d280ec159..000000000 --- a/share/jupyter/voila/templates/base/static/main.js +++ /dev/null @@ -1,74 +0,0 @@ -/*************************************************************************** -* Copyright (c) 2018, Voilà contributors * -* * -* Distributed under the terms of the BSD 3-Clause License. * -* * -* The full license is in the file LICENSE, distributed with this software. * -****************************************************************************/ - -// NOTE: this file is not transpiled, async/await is the only modern feature we use here -require([window.voila_js_url || 'static/voila'], function(voila) { - // requirejs doesn't like to be passed an async function, so create one inside - (async function() { - var kernel = await voila.connectKernel() - if (!kernel) { - return; - } - - const context = { - sessionContext: { - session: { - kernel, - kernelChanged: { - connect: () => {} - }, - }, - statusChanged: { - connect: () => {} - }, - kernelChanged: { - connect: () => {} - }, - connectionStatusChanged: { - connect: () => {} - }, - }, - saveState: { - connect: () => {} - }, - }; - - const settings = { - saveState: false - }; - - const rendermime = new voila.RenderMimeRegistry({ - initialFactories: voila.extendedRendererFactories - }); - - var widgetManager = new voila.WidgetManager(context, rendermime, settings); - - async function init() { - // it seems if we attach this to early, it will not be called - const matches = document.cookie.match('\\b_xsrf=([^;]*)\\b'); - const xsrfToken = (matches && matches[1]) || ''; - const configData = JSON.parse(document.getElementById('jupyter-config-data').textContent); - const baseUrl = configData.baseUrl; - window.addEventListener('beforeunload', function (e) { - const data = new FormData(); - data.append("_xsrf", xsrfToken); - window.navigator.sendBeacon(`${baseUrl}voila/api/shutdown/${kernel.id}`, data); - kernel.dispose(); - }); - await widgetManager.build_widgets(); - voila.renderMathJax(); - } - - if (document.readyState === 'complete') { - init() - } else { - window.addEventListener('load', init); - } - })() -}); - diff --git a/share/jupyter/voila/templates/base/static/require.min.js b/share/jupyter/voila/templates/base/static/require.min.js deleted file mode 100644 index a1e0d7fff..000000000 --- a/share/jupyter/voila/templates/base/static/require.min.js +++ /dev/null @@ -1 +0,0 @@ -var requirejs,require,define;!function(global,setTimeout){function commentReplace(e,t){return t||""}function isFunction(e){return"[object Function]"===ostring.call(e)}function isArray(e){return"[object Array]"===ostring.call(e)}function each(e,t){if(e){var i;for(i=0;i-1&&(!e[i]||!t(e[i],i,e));i-=1);}}function hasProp(e,t){return hasOwn.call(e,t)}function getOwn(e,t){return hasProp(e,t)&&e[t]}function eachProp(e,t){var i;for(i in e)if(hasProp(e,i)&&t(e[i],i))break}function mixin(e,t,i,r){return t&&eachProp(t,function(t,n){!i&&hasProp(e,n)||(!r||"object"!=typeof t||!t||isArray(t)||isFunction(t)||t instanceof RegExp?e[n]=t:(e[n]||(e[n]={}),mixin(e[n],t,i,r)))}),e}function bind(e,t){return function(){return t.apply(e,arguments)}}function scripts(){return document.getElementsByTagName("script")}function defaultOnError(e){throw e}function getGlobal(e){if(!e)return e;var t=global;return each(e.split("."),function(e){t=t[e]}),t}function makeError(e,t,i,r){var n=new Error(t+"\nhttp://requirejs.org/docs/errors.html#"+e);return n.requireType=e,n.requireModules=r,i&&(n.originalError=i),n}function newContext(e){function t(e){var t,i;for(t=0;t0&&(e.splice(t-1,2),t-=2)}}function i(e,i,r){var n,o,a,s,u,c,d,p,f,l,h=i&&i.split("/"),m=y.map,g=m&&m["*"];if(e&&(c=(e=e.split("/")).length-1,y.nodeIdCompat&&jsSuffixRegExp.test(e[c])&&(e[c]=e[c].replace(jsSuffixRegExp,"")),"."===e[0].charAt(0)&&h&&(e=h.slice(0,h.length-1).concat(e)),t(e),e=e.join("/")),r&&m&&(h||g)){e:for(a=(o=e.split("/")).length;a>0;a-=1){if(u=o.slice(0,a).join("/"),h)for(s=h.length;s>0;s-=1)if((n=getOwn(m,h.slice(0,s).join("/")))&&(n=getOwn(n,u))){d=n,p=a;break e}!f&&g&&getOwn(g,u)&&(f=getOwn(g,u),l=a)}!d&&f&&(d=f,p=l),d&&(o.splice(0,p,d),e=o.join("/"))}return getOwn(y.pkgs,e)||e}function r(e){isBrowser&&each(scripts(),function(t){if(t.getAttribute("data-requiremodule")===e&&t.getAttribute("data-requirecontext")===q.contextName)return t.parentNode.removeChild(t),!0})}function n(e){var t=getOwn(y.paths,e);if(t&&isArray(t)&&t.length>1)return t.shift(),q.require.undef(e),q.makeRequire(null,{skipMap:!0})([e]),!0}function o(e){var t,i=e?e.indexOf("!"):-1;return i>-1&&(t=e.substring(0,i),e=e.substring(i+1,e.length)),[t,e]}function a(e,t,r,n){var a,s,u,c,d=null,p=t?t.name:null,f=e,l=!0,h="";return e||(l=!1,e="_@r"+(T+=1)),c=o(e),d=c[0],e=c[1],d&&(d=i(d,p,n),s=getOwn(j,d)),e&&(d?h=r?e:s&&s.normalize?s.normalize(e,function(e){return i(e,p,n)}):-1===e.indexOf("!")?i(e,p,n):e:(d=(c=o(h=i(e,p,n)))[0],h=c[1],r=!0,a=q.nameToUrl(h))),u=!d||s||r?"":"_unnormalized"+(A+=1),{prefix:d,name:h,parentMap:t,unnormalized:!!u,url:a,originalName:f,isDefine:l,id:(d?d+"!"+h:h)+u}}function s(e){var t=e.id,i=getOwn(S,t);return i||(i=S[t]=new q.Module(e)),i}function u(e,t,i){var r=e.id,n=getOwn(S,r);!hasProp(j,r)||n&&!n.defineEmitComplete?(n=s(e)).error&&"error"===t?i(n.error):n.on(t,i):"defined"===t&&i(j[r])}function c(e,t){var i=e.requireModules,r=!1;t?t(e):(each(i,function(t){var i=getOwn(S,t);i&&(i.error=e,i.events.error&&(r=!0,i.emit("error",e)))}),r||req.onError(e))}function d(){globalDefQueue.length&&(each(globalDefQueue,function(e){var t=e[0];"string"==typeof t&&(q.defQueueMap[t]=!0),O.push(e)}),globalDefQueue=[])}function p(e){delete S[e],delete k[e]}function f(e,t,i){var r=e.map.id;e.error?e.emit("error",e.error):(t[r]=!0,each(e.depMaps,function(r,n){var o=r.id,a=getOwn(S,o);!a||e.depMatched[n]||i[o]||(getOwn(t,o)?(e.defineDep(n,j[o]),e.check()):f(a,t,i))}),i[r]=!0)}function l(){var e,t,i=1e3*y.waitSeconds,o=i&&q.startTime+i<(new Date).getTime(),a=[],s=[],u=!1,d=!0;if(!x){if(x=!0,eachProp(k,function(e){var i=e.map,c=i.id;if(e.enabled&&(i.isDefine||s.push(e),!e.error))if(!e.inited&&o)n(c)?(t=!0,u=!0):(a.push(c),r(c));else if(!e.inited&&e.fetched&&i.isDefine&&(u=!0,!i.prefix))return d=!1}),o&&a.length)return e=makeError("timeout","Load timeout for modules: "+a,null,a),e.contextName=q.contextName,c(e);d&&each(s,function(e){f(e,{},{})}),o&&!t||!u||!isBrowser&&!isWebWorker||w||(w=setTimeout(function(){w=0,l()},50)),x=!1}}function h(e){hasProp(j,e[0])||s(a(e[0],null,!0)).init(e[1],e[2])}function m(e,t,i,r){e.detachEvent&&!isOpera?r&&e.detachEvent(r,t):e.removeEventListener(i,t,!1)}function g(e){var t=e.currentTarget||e.srcElement;return m(t,q.onScriptLoad,"load","onreadystatechange"),m(t,q.onScriptError,"error"),{node:t,id:t&&t.getAttribute("data-requiremodule")}}function v(){var e;for(d();O.length;){if(null===(e=O.shift())[0])return c(makeError("mismatch","Mismatched anonymous define() module: "+e[e.length-1]));h(e)}q.defQueueMap={}}var x,b,q,E,w,y={waitSeconds:7,baseUrl:"./",paths:{},bundles:{},pkgs:{},shim:{},config:{}},S={},k={},M={},O=[],j={},P={},R={},T=1,A=1;return E={require:function(e){return e.require?e.require:e.require=q.makeRequire(e.map)},exports:function(e){if(e.usingExports=!0,e.map.isDefine)return e.exports?j[e.map.id]=e.exports:e.exports=j[e.map.id]={}},module:function(e){return e.module?e.module:e.module={id:e.map.id,uri:e.map.url,config:function(){return getOwn(y.config,e.map.id)||{}},exports:e.exports||(e.exports={})}}},b=function(e){this.events=getOwn(M,e.id)||{},this.map=e,this.shim=getOwn(y.shim,e.id),this.depExports=[],this.depMaps=[],this.depMatched=[],this.pluginMaps={},this.depCount=0},b.prototype={init:function(e,t,i,r){r=r||{},this.inited||(this.factory=t,i?this.on("error",i):this.events.error&&(i=bind(this,function(e){this.emit("error",e)})),this.depMaps=e&&e.slice(0),this.errback=i,this.inited=!0,this.ignore=r.ignore,r.enabled||this.enabled?this.enable():this.check())},defineDep:function(e,t){this.depMatched[e]||(this.depMatched[e]=!0,this.depCount-=1,this.depExports[e]=t)},fetch:function(){if(!this.fetched){this.fetched=!0,q.startTime=(new Date).getTime();var e=this.map;if(!this.shim)return e.prefix?this.callPlugin():this.load();q.makeRequire(this.map,{enableBuildCallback:!0})(this.shim.deps||[],bind(this,function(){return e.prefix?this.callPlugin():this.load()}))}},load:function(){var e=this.map.url;P[e]||(P[e]=!0,q.load(this.map.id,e))},check:function(){if(this.enabled&&!this.enabling){var e,t,i=this.map.id,r=this.depExports,n=this.exports,o=this.factory;if(this.inited){if(this.error)this.emit("error",this.error);else if(!this.defining){if(this.defining=!0,this.depCount<1&&!this.defined){if(isFunction(o)){if(this.events.error&&this.map.isDefine||req.onError!==defaultOnError)try{n=q.execCb(i,o,r,n)}catch(t){e=t}else n=q.execCb(i,o,r,n);if(this.map.isDefine&&void 0===n&&((t=this.module)?n=t.exports:this.usingExports&&(n=this.exports)),e)return e.requireMap=this.map,e.requireModules=this.map.isDefine?[this.map.id]:null,e.requireType=this.map.isDefine?"define":"require",c(this.error=e)}else n=o;if(this.exports=n,this.map.isDefine&&!this.ignore&&(j[i]=n,req.onResourceLoad)){var a=[];each(this.depMaps,function(e){a.push(e.normalizedMap||e)}),req.onResourceLoad(q,this.map,a)}p(i),this.defined=!0}this.defining=!1,this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}else hasProp(q.defQueueMap,i)||this.fetch()}},callPlugin:function(){var e=this.map,t=e.id,r=a(e.prefix);this.depMaps.push(r),u(r,"defined",bind(this,function(r){var n,o,d,f=getOwn(R,this.map.id),l=this.map.name,h=this.map.parentMap?this.map.parentMap.name:null,m=q.makeRequire(e.parentMap,{enableBuildCallback:!0});return this.map.unnormalized?(r.normalize&&(l=r.normalize(l,function(e){return i(e,h,!0)})||""),o=a(e.prefix+"!"+l,this.map.parentMap,!0),u(o,"defined",bind(this,function(e){this.map.normalizedMap=o,this.init([],function(){return e},null,{enabled:!0,ignore:!0})})),void((d=getOwn(S,o.id))&&(this.depMaps.push(o),this.events.error&&d.on("error",bind(this,function(e){this.emit("error",e)})),d.enable()))):f?(this.map.url=q.nameToUrl(f),void this.load()):((n=bind(this,function(e){this.init([],function(){return e},null,{enabled:!0})})).error=bind(this,function(e){this.inited=!0,this.error=e,e.requireModules=[t],eachProp(S,function(e){0===e.map.id.indexOf(t+"_unnormalized")&&p(e.map.id)}),c(e)}),n.fromText=bind(this,function(i,r){var o=e.name,u=a(o),d=useInteractive;r&&(i=r),d&&(useInteractive=!1),s(u),hasProp(y.config,t)&&(y.config[o]=y.config[t]);try{req.exec(i)}catch(e){return c(makeError("fromtexteval","fromText eval for "+t+" failed: "+e,e,[t]))}d&&(useInteractive=!0),this.depMaps.push(u),q.completeLoad(o),m([o],n)}),void r.load(e.name,m,n,y))})),q.enable(r,this),this.pluginMaps[r.id]=r},enable:function(){k[this.map.id]=this,this.enabled=!0,this.enabling=!0,each(this.depMaps,bind(this,function(e,t){var i,r,n;if("string"==typeof e){if(e=a(e,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap),this.depMaps[t]=e,n=getOwn(E,e.id))return void(this.depExports[t]=n(this));this.depCount+=1,u(e,"defined",bind(this,function(e){this.undefed||(this.defineDep(t,e),this.check())})),this.errback?u(e,"error",bind(this,this.errback)):this.events.error&&u(e,"error",bind(this,function(e){this.emit("error",e)}))}i=e.id,r=S[i],hasProp(E,i)||!r||r.enabled||q.enable(e,this)})),eachProp(this.pluginMaps,bind(this,function(e){var t=getOwn(S,e.id);t&&!t.enabled&&q.enable(e,this)})),this.enabling=!1,this.check()},on:function(e,t){var i=this.events[e];i||(i=this.events[e]=[]),i.push(t)},emit:function(e,t){each(this.events[e],function(e){e(t)}),"error"===e&&delete this.events[e]}},q={config:y,contextName:e,registry:S,defined:j,urlFetched:P,defQueue:O,defQueueMap:{},Module:b,makeModuleMap:a,nextTick:req.nextTick,onError:c,configure:function(e){if(e.baseUrl&&"/"!==e.baseUrl.charAt(e.baseUrl.length-1)&&(e.baseUrl+="/"),"string"==typeof e.urlArgs){var t=e.urlArgs;e.urlArgs=function(e,i){return(-1===i.indexOf("?")?"?":"&")+t}}var i=y.shim,r={paths:!0,bundles:!0,config:!0,map:!0};eachProp(e,function(e,t){r[t]?(y[t]||(y[t]={}),mixin(y[t],e,!0,!0)):y[t]=e}),e.bundles&&eachProp(e.bundles,function(e,t){each(e,function(e){e!==t&&(R[e]=t)})}),e.shim&&(eachProp(e.shim,function(e,t){isArray(e)&&(e={deps:e}),!e.exports&&!e.init||e.exportsFn||(e.exportsFn=q.makeShimExports(e)),i[t]=e}),y.shim=i),e.packages&&each(e.packages,function(e){var t;t=(e="string"==typeof e?{name:e}:e).name,e.location&&(y.paths[t]=e.location),y.pkgs[t]=e.name+"/"+(e.main||"main").replace(currDirRegExp,"").replace(jsSuffixRegExp,"")}),eachProp(S,function(e,t){e.inited||e.map.unnormalized||(e.map=a(t,null,!0))}),(e.deps||e.callback)&&q.require(e.deps||[],e.callback)},makeShimExports:function(e){return function(){var t;return e.init&&(t=e.init.apply(global,arguments)),t||e.exports&&getGlobal(e.exports)}},makeRequire:function(t,n){function o(i,r,u){var d,p,f;return n.enableBuildCallback&&r&&isFunction(r)&&(r.__requireJsBuild=!0),"string"==typeof i?isFunction(r)?c(makeError("requireargs","Invalid require call"),u):t&&hasProp(E,i)?E[i](S[t.id]):req.get?req.get(q,i,t,o):(p=a(i,t,!1,!0),d=p.id,hasProp(j,d)?j[d]:c(makeError("notloaded",'Module name "'+d+'" has not been loaded yet for context: '+e+(t?"":". Use require([])")))):(v(),q.nextTick(function(){v(),(f=s(a(null,t))).skipMap=n.skipMap,f.init(i,r,u,{enabled:!0}),l()}),o)}return n=n||{},mixin(o,{isBrowser:isBrowser,toUrl:function(e){var r,n=e.lastIndexOf("."),o=e.split("/")[0],a="."===o||".."===o;return-1!==n&&(!a||n>1)&&(r=e.substring(n,e.length),e=e.substring(0,n)),q.nameToUrl(i(e,t&&t.id,!0),r,!0)},defined:function(e){return hasProp(j,a(e,t,!1,!0).id)},specified:function(e){return e=a(e,t,!1,!0).id,hasProp(j,e)||hasProp(S,e)}}),t||(o.undef=function(e){d();var i=a(e,t,!0),n=getOwn(S,e);n.undefed=!0,r(e),delete j[e],delete P[i.url],delete M[e],eachReverse(O,function(t,i){t[0]===e&&O.splice(i,1)}),delete q.defQueueMap[e],n&&(n.events.defined&&(M[e]=n.events),p(e))}),o},enable:function(e){getOwn(S,e.id)&&s(e).enable()},completeLoad:function(e){var t,i,r,o=getOwn(y.shim,e)||{},a=o.exports;for(d();O.length;){if(null===(i=O.shift())[0]){if(i[0]=e,t)break;t=!0}else i[0]===e&&(t=!0);h(i)}if(q.defQueueMap={},r=getOwn(S,e),!t&&!hasProp(j,e)&&r&&!r.inited){if(!(!y.enforceDefine||a&&getGlobal(a)))return n(e)?void 0:c(makeError("nodefine","No define call for "+e,null,[e]));h([e,o.deps||[],o.exportsFn])}l()},nameToUrl:function(e,t,i){var r,n,o,a,s,u,c,d=getOwn(y.pkgs,e);if(d&&(e=d),c=getOwn(R,e))return q.nameToUrl(c,t,i);if(req.jsExtRegExp.test(e))s=e+(t||"");else{for(r=y.paths,o=(n=e.split("/")).length;o>0;o-=1)if(a=n.slice(0,o).join("/"),u=getOwn(r,a)){isArray(u)&&(u=u[0]),n.splice(0,o,u);break}s=n.join("/"),s=("/"===(s+=t||(/^data\:|^blob\:|\?/.test(s)||i?"":".js")).charAt(0)||s.match(/^[\w\+\.\-]+:/)?"":y.baseUrl)+s}return y.urlArgs&&!/^blob\:/.test(s)?s+y.urlArgs(e,s):s},load:function(e,t){req.load(q,e,t)},execCb:function(e,t,i,r){return t.apply(r,i)},onScriptLoad:function(e){if("load"===e.type||readyRegExp.test((e.currentTarget||e.srcElement).readyState)){interactiveScript=null;var t=g(e);q.completeLoad(t.id)}},onScriptError:function(e){var t=g(e);if(!n(t.id)){var i=[];return eachProp(S,function(e,r){0!==r.indexOf("_@r")&&each(e.depMaps,function(e){if(e.id===t.id)return i.push(r),!0})}),c(makeError("scripterror",'Script error for "'+t.id+(i.length?'", needed by: '+i.join(", "):'"'),e,[t.id]))}}},q.require=q.makeRequire(),q}function getInteractiveScript(){return interactiveScript&&"interactive"===interactiveScript.readyState?interactiveScript:(eachReverse(scripts(),function(e){if("interactive"===e.readyState)return interactiveScript=e}),interactiveScript)}var req,s,head,baseElement,dataMain,src,interactiveScript,currentlyAddingScript,mainScript,subPath,version="2.3.4",commentRegExp=/\/\*[\s\S]*?\*\/|([^:"'=]|^)\/\/.*$/gm,cjsRequireRegExp=/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,jsSuffixRegExp=/\.js$/,currDirRegExp=/^\.\//,op=Object.prototype,ostring=op.toString,hasOwn=op.hasOwnProperty,isBrowser=!("undefined"==typeof window||"undefined"==typeof navigator||!window.document),isWebWorker=!isBrowser&&"undefined"!=typeof importScripts,readyRegExp=isBrowser&&"PLAYSTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/,defContextName="_",isOpera="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),contexts={},cfg={},globalDefQueue=[],useInteractive=!1;if(void 0===define){if(void 0!==requirejs){if(isFunction(requirejs))return;cfg=requirejs,requirejs=void 0}void 0===require||isFunction(require)||(cfg=require,require=void 0),req=requirejs=function(e,t,i,r){var n,o,a=defContextName;return isArray(e)||"string"==typeof e||(o=e,isArray(t)?(e=t,t=i,i=r):e=[]),o&&o.context&&(a=o.context),(n=getOwn(contexts,a))||(n=contexts[a]=req.s.newContext(a)),o&&n.configure(o),n.require(e,t,i)},req.config=function(e){return req(e)},req.nextTick=void 0!==setTimeout?function(e){setTimeout(e,4)}:function(e){e()},require||(require=req),req.version=version,req.jsExtRegExp=/^\/|:|\?|\.js$/,req.isBrowser=isBrowser,s=req.s={contexts:contexts,newContext:newContext},req({}),each(["toUrl","undef","defined","specified"],function(e){req[e]=function(){var t=contexts[defContextName];return t.require[e].apply(t,arguments)}}),isBrowser&&(head=s.head=document.getElementsByTagName("head")[0],(baseElement=document.getElementsByTagName("base")[0])&&(head=s.head=baseElement.parentNode)),req.onError=defaultOnError,req.createNode=function(e,t,i){var r=e.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script");return r.type=e.scriptType||"text/javascript",r.charset="utf-8",r.async=!0,r},req.load=function(e,t,i){var r,n=e&&e.config||{};if(isBrowser)return(r=req.createNode(n,t,i)).setAttribute("data-requirecontext",e.contextName),r.setAttribute("data-requiremodule",t),!r.attachEvent||r.attachEvent.toString&&r.attachEvent.toString().indexOf("[native code")<0||isOpera?(r.addEventListener("load",e.onScriptLoad,!1),r.addEventListener("error",e.onScriptError,!1)):(useInteractive=!0,r.attachEvent("onreadystatechange",e.onScriptLoad)),r.src=i,n.onNodeCreated&&n.onNodeCreated(r,n,t,i),currentlyAddingScript=r,baseElement?head.insertBefore(r,baseElement):head.appendChild(r),currentlyAddingScript=null,r;if(isWebWorker)try{setTimeout(function(){},0),importScripts(i),e.completeLoad(t)}catch(r){e.onError(makeError("importscripts","importScripts failed for "+t+" at "+i,r,[t]))}},isBrowser&&!cfg.skipDataMain&&eachReverse(scripts(),function(e){if(head||(head=e.parentNode),dataMain=e.getAttribute("data-main"))return mainScript=dataMain,cfg.baseUrl||-1!==mainScript.indexOf("!")||(src=mainScript.split("/"),mainScript=src.pop(),subPath=src.length?src.join("/")+"/":"./",cfg.baseUrl=subPath),mainScript=mainScript.replace(jsSuffixRegExp,""),req.jsExtRegExp.test(mainScript)&&(mainScript=dataMain),cfg.deps=cfg.deps?cfg.deps.concat(mainScript):[mainScript],!0}),define=function(e,t,i){var r,n;"string"!=typeof e&&(i=t,t=e,e=null),isArray(t)||(i=t,t=null),!t&&isFunction(i)&&(t=[],i.length&&(i.toString().replace(commentRegExp,commentReplace).replace(cjsRequireRegExp,function(e,i){t.push(i)}),t=(1===i.length?["require"]:["require","exports","module"]).concat(t))),useInteractive&&(r=currentlyAddingScript||getInteractiveScript())&&(e||(e=r.getAttribute("data-requiremodule")),n=contexts[r.getAttribute("data-requirecontext")]),n?(n.defQueue.push([e,t,i]),n.defQueueMap[e]=!0):globalDefQueue.push([e,t,i])},define.amd={jQuery:!0},req.exec=function(text){return eval(text)},req(cfg)}}(this,"undefined"==typeof setTimeout?void 0:setTimeout); \ No newline at end of file diff --git a/share/jupyter/voila/templates/base/voila_setup.macro.html.j2 b/share/jupyter/voila/templates/base/voila_setup.macro.html.j2 index 035427fa7..c1513b7d8 100644 --- a/share/jupyter/voila/templates/base/voila_setup.macro.html.j2 +++ b/share/jupyter/voila/templates/base/voila_setup.macro.html.j2 @@ -1,27 +1,10 @@ -{# Macro for loading the notebook extensions #} -{%- macro voila_setup_nbextensions(base_url, nbextensions) -%} - +{%- macro voila_setup_labextensions(base_url, labextensions) -%} + {%- endmacro %} {# For backward compatibility #} {%- macro voila_setup(base_url, nbextensions) -%} -{{ voila_setup_nbextensions(base_url, nbextensions) }} +{{ voila_setup_labextensions(base_url, labextensions) }} {%- endmacro %} {# Helper functions for updating the loading text #} diff --git a/share/jupyter/voila/templates/classic/index.html.j2 b/share/jupyter/voila/templates/classic/index.html.j2 index 7c510fbca..5491b097d 100644 --- a/share/jupyter/voila/templates/classic/index.html.j2 +++ b/share/jupyter/voila/templates/classic/index.html.j2 @@ -3,13 +3,6 @@ {% from 'voila_setup.macro.html.j2' import voila_setup with context %} {%- block html_head_js -%} - {%- block html_head_js_requirejs -%} - - {%- endblock html_head_js_requirejs -%} {%- block html_head_js_logs -%} {{ log.js() }} {%- endblock html_head_js_logs -%} @@ -17,13 +10,19 @@ {%- endblock html_head_js_jquery -%} {% block notebook_execute %} + + {# Copy so we do not modify the page_config with updates. #} + {% set page_config_full = page_config.copy() %} + {%- set kernel_id = kernel_start(nb) -%} + + {# Set a dummy variable - we just want the side effect of the update. #} + {% set _ = page_config_full.update(baseUrl=resources.base_url, kernelId=kernel_id) %} + + {# from this point on, nb.cells contains output of the executed cells #} {% do notebook_execute(nb, kernel_id) %} {%- endblock notebook_execute -%} @@ -51,7 +50,7 @@ {%- block footer %} {% block footer_js %} -{{ voila_setup(resources.base_url, resources.nbextensions) }} +{{ voila_setup(resources.base_url, resources.labextensions) }} {% endblock footer_js %} {%- endblock footer-%} diff --git a/share/jupyter/voila/templates/lab/index.html.j2 b/share/jupyter/voila/templates/lab/index.html.j2 index 7b299d59c..0acb03db3 100644 --- a/share/jupyter/voila/templates/lab/index.html.j2 +++ b/share/jupyter/voila/templates/lab/index.html.j2 @@ -1,16 +1,9 @@ {%- extends 'nbconvert/templates/lab/index.html.j2' -%} {% import "spinner.macro.html.j2" as spinner %} {% import "log.macro.html.j2" as log %} -{% from 'voila_setup.macro.html.j2' import voila_setup_helper_functions, voila_setup_nbextensions with context %} +{% from 'voila_setup.macro.html.j2' import voila_setup_helper_functions, voila_setup_labextensions with context %} {%- block html_head_js -%} - {%- block html_head_js_requirejs -%} - - {%- endblock html_head_js_requirejs -%} {%- block html_head_js_logs -%} {{ log.js() }} {%- endblock html_head_js_logs -%} @@ -46,14 +39,20 @@ {%- block body_loop -%} {# from this point on, the kernel is started #} + + {# Copy so we do not modify the page_config with updates. #} + {% set page_config_full = page_config.copy() %} + {%- with kernel_id = kernel_start(nb) -%} + {# Set a dummy variable - we just want the side effect of the update. #} + {% set _ = page_config_full.update(baseUrl=resources.base_url, kernelId=kernel_id) %} + + {% set cell_count = nb.cells|length %} + {# Voilà is using Jinja's Template.generate method to not render the whole template in one go. The current implementation of Jinja will however not yield template snippets if we call a blocks' super() @@ -84,7 +83,7 @@ el.style.display = ''; })(); -{{ voila_setup_nbextensions(resources.base_url, resources.nbextensions) }} +{{ voila_setup_labextensions(resources.base_url, resources.labextensions) }} {{ super() }} {%- endblock body_footer -%} diff --git a/tests/app/config_paths_test.py b/tests/app/config_paths_test.py index 3f35e0831..60c40f6a8 100644 --- a/tests/app/config_paths_test.py +++ b/tests/app/config_paths_test.py @@ -15,7 +15,6 @@ def voila_config_file_paths_arg(): def test_config_app(voila_app): assert voila_app.voila_configuration.template == 'test_template' - assert voila_app.voila_configuration.enable_nbextensions is True def test_config_kernel_manager(voila_app): diff --git a/tests/app/nbextensions_test.py b/tests/app/nbextensions_test.py index 4241e17f6..dd0dd4473 100644 --- a/tests/app/nbextensions_test.py +++ b/tests/app/nbextensions_test.py @@ -22,6 +22,7 @@ def voila_config_file_paths_arg(): return '--VoilaTest.config_file_paths=[%r]' % path +@pytest.mark.skip(reason='TODO: update for JupyterLab extensions') async def test_lists_extension(http_server_client, base_url): response = await http_server_client.fetch(base_url) diff --git a/tests/app/template_sanity_test.py b/tests/app/template_sanity_test.py index faa534046..eb4afaf45 100644 --- a/tests/app/template_sanity_test.py +++ b/tests/app/template_sanity_test.py @@ -16,5 +16,4 @@ async def test_lists_extension(http_server_client, base_url, voila_app): response = await http_server_client.fetch(base_url) assert response.code == 200 html_text = response.body.decode('utf-8') - assert f'/voila/templates/{voila_app.voila_configuration.template}/static/voila.js' in html_text - assert '/voila/static/require.min.js' in html_text + assert '/voila/static/voila.js' in html_text diff --git a/tests/configs/general/voila.json b/tests/configs/general/voila.json index 0cd7d2d9f..2ea0b99ec 100644 --- a/tests/configs/general/voila.json +++ b/tests/configs/general/voila.json @@ -1,7 +1,6 @@ { "VoilaConfiguration": { - "template": "test_template", - "enable_nbextensions": true + "template": "test_template" }, "MappingKernelManager": { "cull_interval": 10 diff --git a/tests/execute_output_test.py b/tests/execute_output_test.py index 963727b56..0b3c0d042 100644 --- a/tests/execute_output_test.py +++ b/tests/execute_output_test.py @@ -1,5 +1,7 @@ import os +import pytest + from voila.execute import executenb from nbformat import read, NO_CONVERT @@ -33,6 +35,7 @@ def normalize_outputs(outputs): normalize_output(output) +@pytest.mark.xfail(reason='TODO: investigate this failing test') def test_execute_output(): path = os.path.join(BASE_DIR, "notebooks/output.ipynb") nb = read(path, NO_CONVERT) diff --git a/tests/notebooks/output.ipynb b/tests/notebooks/output.ipynb index 8c8851a39..c2f14a1fd 100644 --- a/tests/notebooks/output.ipynb +++ b/tests/notebooks/output.ipynb @@ -8,7 +8,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "e152547dd69d46fcbcb602cf9f92e50b", + "model_id": "0283fe6799b84446adeaface231fa15c", "version_major": 2, "version_minor": 0 }, @@ -16,8 +16,9 @@ "Output()" ] }, + "execution_count": 1, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ @@ -64,7 +65,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "44dc393cd7c6461a8c4901f85becfc0e", + "model_id": "37e6ee8622a1494696d41ed0e73c6c1f", "version_major": 2, "version_minor": 0 }, @@ -72,8 +73,9 @@ "Output()" ] }, + "execution_count": 4, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ @@ -110,7 +112,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "d6cd7a1de3494d2daff23c6d4ffe42ee", + "model_id": "0ff8e0daabbf4f63a3176a95a05fa10d", "version_major": 2, "version_minor": 0 }, @@ -118,8 +120,9 @@ "Output()" ] }, + "execution_count": 6, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ @@ -157,7 +160,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "10517a9d5b1d4ea386945642894dd898", + "model_id": "915ad67f3e4d420ebf3a50cfc5c2d5b8", "version_major": 2, "version_minor": 0 }, @@ -165,8 +168,9 @@ "Output()" ] }, + "execution_count": 8, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ @@ -203,7 +207,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "37f7ba6a9ecc4c19b519e718cd12aafe", + "model_id": "eb400abe6e5444778f18319822c02b9f", "version_major": 2, "version_minor": 0 }, @@ -211,8 +215,9 @@ "Output()" ] }, + "execution_count": 10, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ @@ -241,7 +246,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "4fb0ee7e557440109c08547514f03c7b", + "model_id": "eebad216d4114639b690e6b4dab79f31", "version_major": 2, "version_minor": 0 }, @@ -249,8 +254,9 @@ "Output()" ] }, + "execution_count": 12, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ @@ -268,7 +274,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "01ea355e26484c13b1caaaf6d29ac0f2", + "model_id": "e1bb19507b28423ba346c9b7dd74945b", "version_major": 2, "version_minor": 0 }, @@ -276,8 +282,9 @@ "Output()" ] }, + "execution_count": 13, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ @@ -300,7 +307,9 @@ ], "metadata": { "kernelspec": { - "language": "python" + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -312,7 +321,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.9.7" }, "widgets": { "application/vnd.jupyter.widget-state+json": { @@ -772,5 +781,5 @@ } }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 4 } diff --git a/tests/test_template/share/jupyter/voila/templates/test_template/index.html.j2 b/tests/test_template/share/jupyter/voila/templates/test_template/index.html.j2 index 8d06ad752..abf200ae8 100644 --- a/tests/test_template/share/jupyter/voila/templates/test_template/index.html.j2 +++ b/tests/test_template/share/jupyter/voila/templates/test_template/index.html.j2 @@ -7,6 +7,6 @@ Print value of extra resource for test template: {{resources.test_template.test_resource | default('default value', true)}} List extensions: -{% for ext in resources.nbextensions -%} - "{{resources.base_url}}voila/nbextensions/{{ ext }}.js", +{% for ext in resources.labextensions -%} + "{{resources.base_url}}voila/labextensions/{{ ext }}.js", {% endfor %} diff --git a/tests/test_template/share/jupyter/voila/templates/test_template/voila.tpl b/tests/test_template/share/jupyter/voila/templates/test_template/voila.tpl index b1458464e..a8739ba8e 100644 --- a/tests/test_template/share/jupyter/voila/templates/test_template/voila.tpl +++ b/tests/test_template/share/jupyter/voila/templates/test_template/voila.tpl @@ -5,6 +5,6 @@ This is a test template, obviously List extensions: -{% for ext in resources.nbextensions -%} - "{{resources.base_url}}voila/nbextensions/{{ ext }}.js", +{% for ext in resources.labextensions -%} + "{{resources.base_url}}voila/labextensions/{{ ext }}.js", {% endfor %} diff --git a/voila/app.py b/voila/app.py index 669ca1a12..bff91fef9 100644 --- a/voila/app.py +++ b/voila/app.py @@ -128,8 +128,6 @@ class Voila(Application): 'static': 'Voila.static_root', 'server_url': 'Voila.server_url', 'pool_size': 'VoilaConfiguration.default_pool_size', - 'enable_nbextensions': 'VoilaConfiguration.enable_nbextensions', - 'nbextensions_path': 'VoilaConfiguration.nbextensions_path', 'show_tracebacks': 'VoilaConfiguration.show_tracebacks', 'preheat_kernel': 'VoilaConfiguration.preheat_kernel', 'strip_sources': 'VoilaConfiguration.strip_sources', @@ -326,21 +324,9 @@ def _default_connection_dir(self): def _default_log_level(self): return logging.INFO - # similar to NotebookApp, except no extra path @property - def nbextensions_path(self): - """The path to look for Javascript notebook extensions""" - if self.voila_configuration.nbextensions_path: - return self.voila_configuration.nbextensions_path - path = jupyter_path('nbextensions') - # FIXME: remove IPython nbextensions path after a migration period - try: - from IPython.paths import get_ipython_dir - except ImportError: - pass - else: - path.append(os.path.join(get_ipython_dir(), 'nbextensions')) - return path + def labextensions_path(self): + return jupyter_path('labextensions') @default('root_dir') def _default_root_dir(self): @@ -532,18 +518,17 @@ def start(self): RequestInfoSocketHandler ) ) - # Serving notebook extensions - if self.voila_configuration.enable_nbextensions: - handlers.append( - ( - url_path_join(self.server_url, r'/voila/nbextensions/(.*)'), - FileFindHandler, - { - 'path': self.nbextensions_path, - 'no_cache_paths': ['/'], # don't cache anything in nbextensions - }, - ) + # Serving JupyterLab extensions + handlers.append( + ( + url_path_join(self.server_url, r'/voila/labextensions/(.*)'), + FileFindHandler, + { + 'path': self.labextensions_path, + 'no_cache_paths': ['/'], # don't cache anything in labextensions + }, ) + ) handlers.append( ( url_path_join(self.server_url, r'/voila/files/(.*)'), diff --git a/voila/configuration.py b/voila/configuration.py index e22a7358e..b3e334520 100644 --- a/voila/configuration.py +++ b/voila/configuration.py @@ -38,8 +38,6 @@ class VoilaConfiguration(traitlets.config.Configurable): ) theme = Unicode('light', config=True) strip_sources = Bool(True, config=True, help='Strip sources from rendered html') - enable_nbextensions = Bool(False, config=True, help=('Set to True for Voilà to load notebook extensions')) - nbextensions_path = Unicode('', config=True, help='Set to override default path provided by Jupyter Server') file_whitelist = List( Unicode(), diff --git a/voila/exporter.py b/voila/exporter.py index 8e0d4bd4d..c2733926e 100644 --- a/voila/exporter.py +++ b/voila/exporter.py @@ -77,7 +77,7 @@ def default_config(self): def default_template_file(self): return 'index.html.j2' - async def generate_from_notebook_node(self, nb, resources=None, extra_context={}, **kw): + async def generate_from_notebook_node(self, nb, resources=None, extra_context={}, page_config={}, **kw): # this replaces from_notebook_node, but calls template.generate instead of template.render langinfo = nb.metadata.get('language_info', {}) lexer = langinfo.get('pygments_lexer', langinfo.get('name', None)) @@ -98,7 +98,13 @@ async def generate_from_notebook_node(self, nb, resources=None, extra_context={} 'include_output_prompt': not self.exclude_output_prompt, 'no_prompt': self.exclude_input_prompt and self.exclude_output_prompt, } - async for output in self.template.generate_async(nb=nb_copy, resources=resources, **extra_context, static_url=self.static_url): + async for output in self.template.generate_async( + nb=nb_copy, + resources=resources, + **extra_context, + static_url=self.static_url, + page_config=page_config, + ): yield (output, resources) @property diff --git a/voila/handler.py b/voila/handler.py index 0c4d88a0a..1cbfad5ea 100644 --- a/voila/handler.py +++ b/voila/handler.py @@ -14,6 +14,7 @@ from pathlib import Path import tornado.web + from jupyter_server.base.handlers import JupyterHandler from jupyter_server.utils import url_path_join from nbclient.util import ensure_async @@ -21,6 +22,7 @@ from traitlets.traitlets import Bool from ._version import __version__ +from .utils import get_page_config from .notebook_renderer import NotebookRenderer from .request_info_handler import RequestInfoSocketHandler from .utils import ENV_VARIABLE, create_include_assets_functions @@ -180,6 +182,7 @@ async def get_generator(self, path=None): base_url=self.base_url, kernel_spec_manager=self.kernel_spec_manager, prelaunch_hook=self.prelaunch_hook, + page_config=get_page_config(base_url=self.base_url, settings=self.settings, log=self.log) ) await gen.initialize(template=template_arg, theme=theme_arg) diff --git a/voila/notebook_renderer.py b/voila/notebook_renderer.py index f00f75066..2e4a9f31e 100644 --- a/voila/notebook_renderer.py +++ b/voila/notebook_renderer.py @@ -41,8 +41,9 @@ def __init__(self, **kwargs): self.contents_manager = kwargs.get('contents_manager') self.kernel_spec_manager = kwargs.get('kernel_spec_manager') self.prelaunch_hook = kwargs.get('prelaunch_hook') - self.default_kernel_name = 'python3' self.base_url = kwargs.get('base_url') + self.page_config = kwargs.get('page_config') + self.default_kernel_name = 'python3' self.kernel_started = False self.stop_generator = False self.rendered_cache: List[str] = [] @@ -51,22 +52,6 @@ async def initialize(self, **kwargs) -> None: """ Initialize the notebook generator. """ notebook_path = self.notebook_path - if self.voila_configuration.enable_nbextensions: - # generate a list of nbextensions that are enabled for the classical notebook - # a template can use that to load classical notebook extensions, but does not have to - notebook_config = self.config_manager.get('notebook') - # except for the widget extension itself, since Voilà has its own - load_extensions = notebook_config.get('load_extensions', {}) - if 'jupyter-js-widgets/extension' in load_extensions: - load_extensions['jupyter-js-widgets/extension'] = False - if 'voila/extension' in load_extensions: - load_extensions['voila/extension'] = False - nbextensions = [ - name for name, enabled in load_extensions.items() if enabled - ] - else: - nbextensions = [] - self.notebook = await self.load_notebook(notebook_path) self.cwd = os.path.dirname(notebook_path) @@ -122,10 +107,10 @@ async def initialize(self, **kwargs) -> None: # render notebook to html self.resources = { 'base_url': self.base_url, - 'nbextensions': nbextensions, 'theme': self.theme, 'template': self.template_name, 'metadata': {'name': notebook_name}, + 'page_config': self.page_config, } # include potential extra resources @@ -151,6 +136,7 @@ async def initialize(self, **kwargs) -> None: contents_manager=self.contents_manager, # for the image inlining theme=self.theme, # we now have the theme in two places base_url=self.base_url, + page_config=self.page_config, ) if self.voila_configuration.strip_sources: @@ -178,12 +164,12 @@ def inner_cell_generator(nb, kernel_id): extra_context = { 'kernel_start': inner_kernel_start, 'cell_generator': inner_cell_generator, - 'notebook_execute': self._jinja_notebook_execute, + 'notebook_execute': self._jinja_notebook_execute } # render notebook in snippets, then return an iterator so we can flush # them out to the browser progressively. return self.exporter.generate_from_notebook_node( - self.notebook, resources=self.resources, extra_context=extra_context + self.notebook, resources=self.resources, extra_context=extra_context, page_config=self.page_config ) async def generate_content_hybrid( diff --git a/voila/server_extension.py b/voila/server_extension.py index a6ba3a9ad..a74103fa6 100644 --- a/voila/server_extension.py +++ b/voila/server_extension.py @@ -92,30 +92,26 @@ def _load_jupyter_server_extension(server_app): ), ]) - # Serving notebook extensions - if voila_configuration.enable_nbextensions: - # First check whether a custom nbextensions_path has been set in - # the VoilaConfiguration object, if not, then fall back to - # looking into 'nbextensions_path' configuration key (classic notebook) - # otherwise fall back to default path for nbextensions (jupyter server). - if voila_configuration.nbextensions_path: - nbextensions_path = voila_configuration.nbextensions_path - elif 'nbextensions_path' in web_app.settings: - nbextensions_path = web_app.settings['nbextensions_path'] - else: - nbextensions_path = jupyter_path('nbextensions') - - web_app.add_handlers(host_pattern, [ - # this handler serves the nbextensions similar to the classical notebook - ( - url_path_join(base_url, r'/voila/nbextensions/(.*)'), - FileFindHandler, - { - 'path': nbextensions_path, - 'no_cache_paths': ['/'], # don't cache anything in nbextensions - }, - ) - ]) + # Serving lab extensions + # TODO: reuse existing lab server endpoint? + # First look into 'labextensions_path' configuration key (classic notebook) + # and fall back to default path for labextensions (jupyter server). + if 'labextensions_path' in web_app.settings: + labextensions_path = web_app.settings['labextensions_path'] + else: + labextensions_path = jupyter_path('labextensions') + + web_app.add_handlers(host_pattern, [ + ( + # TODO: update handler + url_path_join(base_url, r'/voila/labextensions/(.*)'), + FileFindHandler, + { + 'path': labextensions_path, + 'no_cache_paths': ['/'], # don't cache anything + }, + ) + ]) # For backward compatibility diff --git a/voila/utils.py b/voila/utils.py index 70f71aa2d..7a06118f1 100644 --- a/voila/utils.py +++ b/voila/utils.py @@ -21,7 +21,12 @@ from markupsafe import Markup from nbconvert.exporters.html import find_lab_theme +from jupyter_core.paths import jupyter_path +from jupyterlab_server.config import get_page_config as gpc, recursive_update +from jupyter_server.utils import url_path_join + from .static_file_handler import TemplateStaticFileHandler +from ._version import __version__ class ENV_VARIABLE(str, Enum): @@ -70,6 +75,41 @@ async def _get_request_info(ws_url: str) -> Awaitable: return ri +def get_page_config(base_url, settings, log): + page_config = { + "appVersion": __version__, + "baseUrl": base_url, + "terminalsAvailable": False, + "fullStaticUrl": url_path_join(base_url, "voila/static"), + "fullLabextensionsUrl": url_path_join(base_url, "voila/labextensions"), + } + + mathjax_config = settings.get("mathjax_config", "TeX-AMS_HTML-full,Safe") + # TODO Remove CDN usage. + mathjax_url = settings.get( + "mathjax_url", + "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js", + ) + page_config.setdefault("mathjaxConfig", mathjax_config) + page_config.setdefault("fullMathjaxUrl", mathjax_url) + + labextensions_path = jupyter_path('labextensions') + recursive_update( + page_config, + gpc( + labextensions_path, + logger=log, + ), + ) + return page_config + + +async def _get_query_string(ws_url: str) -> Awaitable: + async with websockets.connect(ws_url) as websocket: + qs = await websocket.recv() + return qs + + def wait_for_request(url: str = None) -> str: """Helper function to pause the execution of notebook and wait for the pre-heated kernel to be used and all request info is added to diff --git a/voila/voila_kernel_manager.py b/voila/voila_kernel_manager.py index 94c7f2378..9788ef6b6 100644 --- a/voila/voila_kernel_manager.py +++ b/voila/voila_kernel_manager.py @@ -18,7 +18,7 @@ from nbclient.util import ensure_async import re from .notebook_renderer import NotebookRenderer -from .utils import ENV_VARIABLE +from .utils import ENV_VARIABLE, get_page_config T = TypeVar('T') @@ -344,6 +344,7 @@ def _notebook_renderer_factory( contents_manager=self.parent.contents_manager, base_url=self.parent.base_url, kernel_spec_manager=self.parent.kernel_spec_manager, + page_config=get_page_config(base_url=self.parent.base_url, settings=self.parent.app.settings, log=self.parent.log) ) def _notebook_filter(self, nb_path: Path) -> bool: diff --git a/yarn.lock b/yarn.lock index 79cb2fcc1..647f66e3a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -29,30 +29,30 @@ integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== "@babel/core@^7.1.0", "@babel/core@^7.10.2", "@babel/core@^7.12.3", "@babel/core@^7.2.2", "@babel/core@^7.7.5": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a" - integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ== + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.9.tgz#6bae81a06d95f4d0dec5bb9d74bbc1f58babdcfe" + integrity sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.7" + "@babel/generator" "^7.17.9" "@babel/helper-compilation-targets" "^7.17.7" "@babel/helper-module-transforms" "^7.17.7" - "@babel/helpers" "^7.17.8" - "@babel/parser" "^7.17.8" + "@babel/helpers" "^7.17.9" + "@babel/parser" "^7.17.9" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" + "@babel/traverse" "^7.17.9" "@babel/types" "^7.17.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.1.2" + json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.17.3", "@babel/generator@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.7.tgz#8da2599beb4a86194a3b24df6c085931d9ee45ad" - integrity sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w== +"@babel/generator@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.9.tgz#f4af9fd38fa8de143c29fce3f71852406fc1e2fc" + integrity sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ== dependencies: "@babel/types" "^7.17.0" jsesc "^2.5.1" @@ -84,14 +84,14 @@ semver "^6.3.0" "@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9" - integrity sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg== + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz#71835d7fb9f38bd9f1378e40a4c0902fdc2ea49d" + integrity sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-member-expression-to-functions" "^7.17.7" "@babel/helper-optimise-call-expression" "^7.16.7" "@babel/helper-replace-supers" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" @@ -132,21 +132,13 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" - integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== +"@babel/helper-function-name@^7.16.7", "@babel/helper-function-name@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" + integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== dependencies: - "@babel/helper-get-function-arity" "^7.16.7" "@babel/template" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-get-function-arity@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" - integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== - dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.17.0" "@babel/helper-hoist-variables@^7.16.7": version "7.16.7" @@ -155,7 +147,7 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-member-expression-to-functions@^7.16.7": +"@babel/helper-member-expression-to-functions@^7.16.7", "@babel/helper-member-expression-to-functions@^7.17.7": version "7.17.7" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== @@ -256,28 +248,28 @@ "@babel/traverse" "^7.16.8" "@babel/types" "^7.16.8" -"@babel/helpers@^7.17.8": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.8.tgz#288450be8c6ac7e4e44df37bcc53d345e07bc106" - integrity sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw== +"@babel/helpers@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a" + integrity sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q== dependencies: "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" + "@babel/traverse" "^7.17.9" "@babel/types" "^7.17.0" "@babel/highlight@^7.10.4", "@babel/highlight@^7.16.7": - version "7.16.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" - integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" + integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg== dependencies: "@babel/helper-validator-identifier" "^7.16.7" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3", "@babel/parser@^7.17.8": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.8.tgz#2817fb9d885dd8132ea0f8eb615a6388cca1c240" - integrity sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.9.tgz#9c94189a6062f0291418ca021077983058e171ef" + integrity sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" @@ -656,9 +648,9 @@ babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-commonjs@^7.16.8": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz#d86b217c8e45bb5f2dbc11eefc8eab62cf980d19" - integrity sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA== + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz#274be1a2087beec0254d4abd4d86e52442e1e5b6" + integrity sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw== dependencies: "@babel/helper-module-transforms" "^7.17.7" "@babel/helper-plugin-utils" "^7.16.7" @@ -721,11 +713,11 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-regenerator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" - integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz#0a33c3a61cf47f45ed3232903683a0afd2d3460c" + integrity sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ== dependencies: - regenerator-transform "^0.14.2" + regenerator-transform "^0.15.0" "@babel/plugin-transform-reserved-words@^7.16.7": version "7.16.7" @@ -877,9 +869,9 @@ esutils "^2.0.2" "@babel/runtime@^7.1.2", "@babel/runtime@^7.8.4": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.8.tgz#3e56e4aff81befa55ac3ac6a0967349fd1c5bca2" - integrity sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA== + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" + integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== dependencies: regenerator-runtime "^0.13.4" @@ -892,18 +884,18 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" - integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== +"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.9.tgz#1f9b207435d9ae4a8ed6998b2b82300d83c37a0d" + integrity sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" + "@babel/generator" "^7.17.9" "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.3" + "@babel/parser" "^7.17.9" "@babel/types" "^7.17.0" debug "^4.1.0" globals "^11.1.0" @@ -922,9 +914,9 @@ integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@blueprintjs/colors@^4.0.0-alpha.3": - version "4.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@blueprintjs/colors/-/colors-4.0.0-rc.2.tgz#0624a526213ee67f293f2c2f7c0023e4a32193d6" - integrity sha512-uo/VQGANaQR7dr9NkZUpptMp9LbJxffdLDoNheBzThfd6WCVYtH0599SMNNPWLzNOADT0NFvDJmAKEr0ImU7yg== + version "4.1.0" + resolved "https://registry.yarnpkg.com/@blueprintjs/colors/-/colors-4.1.0.tgz#6715062ff4c51667726ba690b49cafe14ace687a" + integrity sha512-aXgkEBg2oEz6lCE/sidvREUzQF7eJq2R8BvfOcQ1ICV4r/KVFszee6seA12ZtVaphfvuR4EE/raH6F1d0f4y7g== "@blueprintjs/core@^3.36.0", "@blueprintjs/core@^3.54.0": version "3.54.0" @@ -1224,9 +1216,9 @@ integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== "@jridgewell/trace-mapping@^0.3.0": - version "0.3.4" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" - integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== dependencies: "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" @@ -1236,46 +1228,57 @@ resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.3.1.tgz#b50a781709c81e10701004214340f25475a171a0" integrity sha512-zMM9Ds+SawiUkakS7y94Ymqx+S0ORzpG3frZirN3l+UlXUmSUR7hF4wxCVqW+ei94JzV5kt0uXBcoOEAuiydrw== -"@jupyter-widgets/base@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@jupyter-widgets/base/-/base-4.1.0.tgz#15500da61b800086d5dbce95d2f11c0c0acb43fc" - integrity sha512-yYAIiBWLwldr3yHWG3FvGeltRyI2GTo2mQdxoP6X7mvKeib4n43zcSKqIkP8f4h+dhiw48z+Ct8vQxp0BA8Gvg== +"@jupyter-widgets/base-manager@^1.0.0-rc.0": + version "1.0.0-rc.0" + resolved "https://registry.yarnpkg.com/@jupyter-widgets/base-manager/-/base-manager-1.0.0-rc.0.tgz#23642fcfefdd6cb6e572c67e348628a29ca2e5ce" + integrity sha512-KiTxeLMqXWEyLI5A67KXVH8QSkQaNRudLGyPWp99F5eetMUJsT0vyePnGzezoS8NGtw6pWbcpZFswj9xDYJYtA== dependencies: + "@jupyter-widgets/base" "^6.0.0-rc.0" "@jupyterlab/services" "^6.0.0" - "@lumino/coreutils" "^1.2.0" - "@lumino/messaging" "^1.2.1" - "@lumino/widgets" "^1.3.0" - "@types/backbone" "^1.4.1" - "@types/lodash" "^4.14.134" - backbone "1.2.3" + "@lumino/coreutils" "^1.11.1" base64-js "^1.2.1" + sanitize-html "^2.3" + +"@jupyter-widgets/base@^6.0.0-rc.0": + version "6.0.0-rc.0" + resolved "https://registry.yarnpkg.com/@jupyter-widgets/base/-/base-6.0.0-rc.0.tgz#5b7e1a3cb5bc1094abf73cafbb7be26b2dec90cd" + integrity sha512-O2XyOmWwYOcIfRxRp74aEG2Rmh6+HrwAvuVFa7z9nqx3Zmujya/iOb4BH9Wjv1zzswyPr0YWobYbEuIHz/DMiQ== + dependencies: + "@jupyterlab/services" "^6.0.0" + "@lumino/coreutils" "^1.11.1" + "@lumino/messaging" "^1.10.1" + "@lumino/widgets" "^1.30.0" + "@types/backbone" "1.4.14" + "@types/lodash" "^4.14.134" + backbone "1.4.0" jquery "^3.1.1" lodash "^4.17.4" -"@jupyter-widgets/controls@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jupyter-widgets/controls/-/controls-3.1.0.tgz#c9784c6f0e9ba24cc5b0a38bfce72970861d9691" - integrity sha512-8LtaeGezpaCmbcakwvgWL2pgqfBzOKinMrljUqoGPSVSdBHYlAhvaFrO6rJuUbj8oYAczadN29X/ptGhzuq0tQ== - dependencies: - "@jupyter-widgets/base" "^4.1.0" - "@lumino/algorithm" "^1.1.0" - "@lumino/domutils" "^1.1.0" - "@lumino/messaging" "^1.2.1" - "@lumino/signaling" "^1.2.0" - "@lumino/widgets" "^1.3.0" - d3-format "^1.3.0" +"@jupyter-widgets/controls@^5.0.0-rc.0": + version "5.0.0-rc.0" + resolved "https://registry.yarnpkg.com/@jupyter-widgets/controls/-/controls-5.0.0-rc.0.tgz#7a126ba47609ca550cee2ebea4de30051bca13aa" + integrity sha512-lhcq73/fqz7eeL+r9FPXuuhSKqYAxGZqFnkeldEHFnR/lNxGMruNvM6onijlxRqjRa0nHH8I+CyJI8AkuOiu3g== + dependencies: + "@jupyter-widgets/base" "^6.0.0-rc.0" + "@lumino/algorithm" "^1.9.1" + "@lumino/domutils" "^1.8.1" + "@lumino/messaging" "^1.10.1" + "@lumino/signaling" "^1.10.1" + "@lumino/widgets" "^1.30.0" + d3-color "^3.0.1" + d3-format "^3.0.1" jquery "^3.1.1" - jquery-ui "^1.12.1" - underscore "^1.8.3" + nouislider "15.4.0" -"@jupyter-widgets/jupyterlab-manager@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jupyter-widgets/jupyterlab-manager/-/jupyterlab-manager-3.1.0.tgz#a428bd30ad621c29be5b12779081df3182b3f493" - integrity sha512-+phglpr/slsqet7xHLC0nr1Ced6fDiHPekynBo1pG7YIdQ80avNnSQ5KpfL3jAJXL0RFQtsb0Q64kxART3h+Jw== +"@jupyter-widgets/jupyterlab-manager@^5.0.0-rc.0": + version "5.0.0-rc.0" + resolved "https://registry.yarnpkg.com/@jupyter-widgets/jupyterlab-manager/-/jupyterlab-manager-5.0.0-rc.0.tgz#59208010209ade1ffe6651ca2b8884767d6f6018" + integrity sha512-naLoKsLzeYkrlyzImbrQcEZ0shVboL/HZzvwx6yr577QqDp+4pzMtA+zM2aXCr57MPJVpEU96dYsrGIhVZl2Vg== dependencies: - "@jupyter-widgets/base" "^4.1.0" - "@jupyter-widgets/controls" "^3.1.0" - "@jupyter-widgets/output" "^4.1.0" + "@jupyter-widgets/base" "^6.0.0-rc.0" + "@jupyter-widgets/base-manager" "^1.0.0-rc.0" + "@jupyter-widgets/controls" "^5.0.0-rc.0" + "@jupyter-widgets/output" "^6.0.0-rc.0" "@jupyterlab/application" "^3.0.0" "@jupyterlab/docregistry" "^3.0.0" "@jupyterlab/logconsole" "^3.0.0" @@ -1287,39 +1290,40 @@ "@jupyterlab/rendermime-interfaces" "^3.0.0" "@jupyterlab/services" "^6.0.0" "@jupyterlab/settingregistry" "^3.0.0" - "@lumino/algorithm" "^1.1.0" - "@lumino/coreutils" "^1.3.0" - "@lumino/disposable" "^1.1.1" - "@lumino/messaging" "^1.2.1" - "@lumino/properties" "^1.1.0" - "@lumino/signaling" "^1.2.0" - "@lumino/widgets" "^1.3.0" - "@types/backbone" "^1.4.1" + "@jupyterlab/translation" "^3.0.0" + "@lumino/algorithm" "^1.9.1" + "@lumino/coreutils" "^1.11.1" + "@lumino/disposable" "^1.10.1" + "@lumino/messaging" "^1.10.1" + "@lumino/properties" "^1.8.1" + "@lumino/signaling" "^1.10.1" + "@lumino/widgets" "^1.30.0" + "@types/backbone" "1.4.14" jquery "^3.1.1" - semver "^6.1.1" + semver "^7.3.5" -"@jupyter-widgets/output@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@jupyter-widgets/output/-/output-4.1.0.tgz#1e59ab7a5d1f12cb58be1a0dc14b5ff20af21b64" - integrity sha512-1G+mMJ+0npsWJQBHQWdWNS0uYrolOQ8a7mgdlduPhlNEKFjDFRnEOMYgEj9J61f4GZCps9x0gZT4sg6aO6iJYw== +"@jupyter-widgets/output@^6.0.0-rc.0": + version "6.0.0-rc.0" + resolved "https://registry.yarnpkg.com/@jupyter-widgets/output/-/output-6.0.0-rc.0.tgz#df743516e3c66b56e1855ef30437a7d0fa17ab2d" + integrity sha512-+aU3GyqAEuDLGhMtm4vdTXpp8HqD+64x1UJO0byLOXYzdhsEfFU/XWdduLBTHh+K33OekZTw6SrFU3DqMe4b1w== dependencies: - "@jupyter-widgets/base" "^4.1.0" + "@jupyter-widgets/base" "^6.0.0-rc.0" -"@jupyterlab/application@^3.0.0": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/application/-/application-3.3.2.tgz#886df86793cd56470a92d5340898f2e0b3fbef63" - integrity sha512-Upg7wI9ANnY8Qe7XuR0pKA/BzcO1UNf/0BuQpP7VWdbPxwGCIjoRxuRs4uKBvCptOtQAdjnp2jVPFD7D0KIxKg== +"@jupyterlab/application@^3.0.0", "@jupyterlab/application@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/application/-/application-3.3.4.tgz#1efb405392c95f38c041a53eab45c3493f2641fc" + integrity sha512-PNspxKOhdAF7XeKpukpN9hMKFjHEvS5exb4/b8nWAacKygKrgGBbCK5tQLNNa3OUf20RtVBl35Xj3pVSjukEAw== dependencies: "@fortawesome/fontawesome-free" "^5.12.0" - "@jupyterlab/apputils" "^3.3.2" - "@jupyterlab/coreutils" "^5.3.2" - "@jupyterlab/docregistry" "^3.3.2" - "@jupyterlab/rendermime" "^3.3.2" - "@jupyterlab/rendermime-interfaces" "^3.3.2" - "@jupyterlab/services" "^6.3.2" - "@jupyterlab/statedb" "^3.3.2" - "@jupyterlab/translation" "^3.3.2" - "@jupyterlab/ui-components" "^3.3.2" + "@jupyterlab/apputils" "^3.3.4" + "@jupyterlab/coreutils" "^5.3.4" + "@jupyterlab/docregistry" "^3.3.4" + "@jupyterlab/rendermime" "^3.3.4" + "@jupyterlab/rendermime-interfaces" "^3.3.4" + "@jupyterlab/services" "^6.3.4" + "@jupyterlab/statedb" "^3.3.4" + "@jupyterlab/translation" "^3.3.4" + "@jupyterlab/ui-components" "^3.3.4" "@lumino/algorithm" "^1.3.3" "@lumino/application" "^1.16.0" "@lumino/commands" "^1.12.0" @@ -1331,18 +1335,18 @@ "@lumino/signaling" "^1.4.3" "@lumino/widgets" "^1.19.0" -"@jupyterlab/apputils@^3.0.0", "@jupyterlab/apputils@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/apputils/-/apputils-3.3.2.tgz#1c410e288d4dc808d36151b67444609d44fdc082" - integrity sha512-ZUHIfudEMPhL32gmrnVMOU800xU7tvQo5zZBEm/T441+s5GGNOl8pQG0VQnJH4Xe/Z4ZGCkZu2fEreyv6qFpCQ== - dependencies: - "@jupyterlab/coreutils" "^5.3.2" - "@jupyterlab/observables" "^4.3.2" - "@jupyterlab/services" "^6.3.2" - "@jupyterlab/settingregistry" "^3.3.2" - "@jupyterlab/statedb" "^3.3.2" - "@jupyterlab/translation" "^3.3.2" - "@jupyterlab/ui-components" "^3.3.2" +"@jupyterlab/apputils@^3.0.0", "@jupyterlab/apputils@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/apputils/-/apputils-3.3.4.tgz#79381f239a305bdd7c8495e032682d07ec552e95" + integrity sha512-hP10GHURR2uPTYf/hQae81UlSnLt5gESvR1MdKGslmwhVY6VrmxwrZIossUtyQQSsAGWLvpbga9x07Xza29Rqg== + dependencies: + "@jupyterlab/coreutils" "^5.3.4" + "@jupyterlab/observables" "^4.3.4" + "@jupyterlab/services" "^6.3.4" + "@jupyterlab/settingregistry" "^3.3.4" + "@jupyterlab/statedb" "^3.3.4" + "@jupyterlab/translation" "^3.3.4" + "@jupyterlab/ui-components" "^3.3.4" "@lumino/algorithm" "^1.3.3" "@lumino/commands" "^1.12.0" "@lumino/coreutils" "^1.5.3" @@ -1360,24 +1364,24 @@ sanitize-html "~2.5.3" url "^0.11.0" -"@jupyterlab/attachments@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/attachments/-/attachments-3.3.2.tgz#65d773bba92c03ccde99dfc3b3027d1623c80d3d" - integrity sha512-r6arkDxtDedW8jn97gt5wbBzSsFruJkCUOo8nRsIzQTs49U0/eOEt0QUIkyxs+eAMDh39M0LGhiSE8wgrOgY4A== +"@jupyterlab/attachments@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/attachments/-/attachments-3.3.4.tgz#f5c84ce43b9ba68a53b2d84096893a4d04af0373" + integrity sha512-mtPare0ZaTBbWlqNCB9x8X9+ZHP6m8VL0oxW+wUcCY5DR5M9xIMfw3Zj+r03P+p8EEnLumPZK6stFRrUMMzuBQ== dependencies: - "@jupyterlab/nbformat" "^3.3.2" - "@jupyterlab/observables" "^4.3.2" - "@jupyterlab/rendermime" "^3.3.2" - "@jupyterlab/rendermime-interfaces" "^3.3.2" + "@jupyterlab/nbformat" "^3.3.4" + "@jupyterlab/observables" "^4.3.4" + "@jupyterlab/rendermime" "^3.3.4" + "@jupyterlab/rendermime-interfaces" "^3.3.4" "@lumino/disposable" "^1.4.3" "@lumino/signaling" "^1.4.3" "@jupyterlab/builder@^3.0.0": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/builder/-/builder-3.3.2.tgz#7fd7d19974394da9f1c1fdcd6f0955f428950bd8" - integrity sha512-JomD2aSzIC970zXhxnp1PGVmWw+UfghCAaa6MLRYSIakqYEieMvaOWP1dPkmLKV4esrD/8yA/mJtnh2rVnuehg== + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/builder/-/builder-3.3.4.tgz#8899e317075a207fa336bc66ca8dff9a791e386f" + integrity sha512-jdyo1RIGunYJEqGQXIxX/+lMcNB22zXzp3yJAuVoWZX1HrhPyOEdvPMLvppCBn7v30HREo2Ubqwvdwjd3fOGIg== dependencies: - "@jupyterlab/buildutils" "^3.3.2" + "@jupyterlab/buildutils" "^3.3.4" "@lumino/algorithm" "^1.3.3" "@lumino/application" "^1.16.0" "@lumino/commands" "^1.12.0" @@ -1413,10 +1417,10 @@ webpack-merge "^5.1.2" worker-loader "^3.0.2" -"@jupyterlab/buildutils@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/buildutils/-/buildutils-3.3.2.tgz#f58e424f90b2b706aaaa3c19e39dccc3442931cc" - integrity sha512-UMJK2r4/lst+5MVnJMaM8eXd9HE09+uO07F6ltRc/cQtMieZExC7nSAB9X70T+QdcyUZa1MCDP3p9GAQsh++iA== +"@jupyterlab/buildutils@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/buildutils/-/buildutils-3.3.4.tgz#a7bafcfe8ed530d7ddcbfeaa119f7e3cb102f99c" + integrity sha512-9EODRwh1Bskta354GeOhy6nPyOrr7duNV3TneAk3y06Hm/iRR4K+S3thLpYFucdOVFMnIaNJ0szZUwqoIEjm3A== dependencies: "@lumino/coreutils" "^1.5.3" "@yarnpkg/lockfile" "^1.1.0" @@ -1437,24 +1441,24 @@ typescript "~4.1.3" verdaccio "^5.1.1" -"@jupyterlab/cells@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/cells/-/cells-3.3.2.tgz#b862a49852724fb7bfb902e5bc6690abaa73848b" - integrity sha512-AuoB2yPQNRvNBWYfZPD14LMeSjqDBQRFWz/zfeZuyLZvghTh4uUJP+wo0ibME2eAemNrSWwnhWQBcE2XM/URxg== - dependencies: - "@jupyterlab/apputils" "^3.3.2" - "@jupyterlab/attachments" "^3.3.2" - "@jupyterlab/codeeditor" "^3.3.2" - "@jupyterlab/codemirror" "^3.3.2" - "@jupyterlab/coreutils" "^5.3.2" - "@jupyterlab/filebrowser" "^3.3.2" - "@jupyterlab/nbformat" "^3.3.2" - "@jupyterlab/observables" "^4.3.2" - "@jupyterlab/outputarea" "^3.3.2" - "@jupyterlab/rendermime" "^3.3.2" - "@jupyterlab/services" "^6.3.2" - "@jupyterlab/shared-models" "^3.3.2" - "@jupyterlab/ui-components" "^3.3.2" +"@jupyterlab/cells@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/cells/-/cells-3.3.4.tgz#6fe99490338e948d1386d645459214e87c1ef710" + integrity sha512-WIYS6+YXkj08b0ab0okNRnmD8hiMHK8zzH/eqAkFOmPJxg9f6Ov5fCZ6VdOWaRr8lnIu/N88zyJYa2oTDLTlwA== + dependencies: + "@jupyterlab/apputils" "^3.3.4" + "@jupyterlab/attachments" "^3.3.4" + "@jupyterlab/codeeditor" "^3.3.4" + "@jupyterlab/codemirror" "^3.3.4" + "@jupyterlab/coreutils" "^5.3.4" + "@jupyterlab/filebrowser" "^3.3.4" + "@jupyterlab/nbformat" "^3.3.4" + "@jupyterlab/observables" "^4.3.4" + "@jupyterlab/outputarea" "^3.3.4" + "@jupyterlab/rendermime" "^3.3.4" + "@jupyterlab/services" "^6.3.4" + "@jupyterlab/shared-models" "^3.3.4" + "@jupyterlab/ui-components" "^3.3.4" "@lumino/algorithm" "^1.3.3" "@lumino/coreutils" "^1.5.3" "@lumino/domutils" "^1.2.3" @@ -1466,17 +1470,17 @@ marked "^2.0.0" react "^17.0.1" -"@jupyterlab/codeeditor@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/codeeditor/-/codeeditor-3.3.2.tgz#2c7567e899648b45ff6030c887629d3788598c24" - integrity sha512-XKM3Yx7sdM6nF5lnI6usSJ2nlBdDrcddj5RL43kv2EFHCX+Zz1f7QFHRxWP0EtVMX6A41PldABsOpbOSxVhl3w== - dependencies: - "@jupyterlab/coreutils" "^5.3.2" - "@jupyterlab/nbformat" "^3.3.2" - "@jupyterlab/observables" "^4.3.2" - "@jupyterlab/shared-models" "^3.3.2" - "@jupyterlab/translation" "^3.3.2" - "@jupyterlab/ui-components" "^3.3.2" +"@jupyterlab/codeeditor@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/codeeditor/-/codeeditor-3.3.4.tgz#57008bab6c289ae72daee3a430833bde79ba3c77" + integrity sha512-/yu42NQ1ZZab9XkZI82J3yqCXaEonq9Kp+hTQaic8iBukGygoLWLlOUyavZH/PLYP2/PqbXElegtQiFWm8xpXw== + dependencies: + "@jupyterlab/coreutils" "^5.3.4" + "@jupyterlab/nbformat" "^3.3.4" + "@jupyterlab/observables" "^4.3.4" + "@jupyterlab/shared-models" "^3.3.4" + "@jupyterlab/translation" "^3.3.4" + "@jupyterlab/ui-components" "^3.3.4" "@lumino/coreutils" "^1.5.3" "@lumino/disposable" "^1.4.3" "@lumino/dragdrop" "^1.7.1" @@ -1484,19 +1488,19 @@ "@lumino/signaling" "^1.4.3" "@lumino/widgets" "^1.19.0" -"@jupyterlab/codemirror@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/codemirror/-/codemirror-3.3.2.tgz#79aff053e1b82da6befb1861fa157d5ee57dfe38" - integrity sha512-VQz8C3anb97/aj0RlVlh7L+ENS2gRDQ5xje4THzhayoWxSA3E7Oh0yCmg7rVOdnG1fxk6E00Wgd5RpsrYbpzEg== - dependencies: - "@jupyterlab/apputils" "^3.3.2" - "@jupyterlab/codeeditor" "^3.3.2" - "@jupyterlab/coreutils" "^5.3.2" - "@jupyterlab/nbformat" "^3.3.2" - "@jupyterlab/observables" "^4.3.2" - "@jupyterlab/shared-models" "^3.3.2" - "@jupyterlab/statusbar" "^3.3.2" - "@jupyterlab/translation" "^3.3.2" +"@jupyterlab/codemirror@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/codemirror/-/codemirror-3.3.4.tgz#d9a8401ba2e3b2544a5da1898e9f31c5853ad0d0" + integrity sha512-sxPvq4c4B5eJvi7QCBIHHbQKWyKXj1ac4x5qtZwjvGRFgbupQYQOW9rhxxZxRVpQYsuibL+lqlIBGA2ZrZGFUA== + dependencies: + "@jupyterlab/apputils" "^3.3.4" + "@jupyterlab/codeeditor" "^3.3.4" + "@jupyterlab/coreutils" "^5.3.4" + "@jupyterlab/nbformat" "^3.3.4" + "@jupyterlab/observables" "^4.3.4" + "@jupyterlab/shared-models" "^3.3.4" + "@jupyterlab/statusbar" "^3.3.4" + "@jupyterlab/translation" "^3.3.4" "@lumino/algorithm" "^1.3.3" "@lumino/commands" "^1.12.0" "@lumino/coreutils" "^1.5.3" @@ -1508,10 +1512,10 @@ react "^17.0.1" y-codemirror "^3.0.1" -"@jupyterlab/coreutils@^5.0.0", "@jupyterlab/coreutils@^5.3.2": - version "5.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/coreutils/-/coreutils-5.3.2.tgz#ef5c4ef374fd56745b6373aaddc737e6fef9f732" - integrity sha512-5nDi44CxdRBn1wwPC6pUWt8fpTbWz1BGwqcVx1M/kXQNOVRIODatsorvvoHnVyaSQOz6CP8jch+4PrBXdHFwyQ== +"@jupyterlab/coreutils@^5.0.0", "@jupyterlab/coreutils@^5.3.4": + version "5.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/coreutils/-/coreutils-5.3.4.tgz#808474e2650681e390975467ecef43d0eaf71de5" + integrity sha512-XSUt3R4co8UavE+OJJpvXPhRGHFaPCEd7DJWJyOb5/SVsOdHFNoXoXsmIbP6EJrDhTN/xkN8mmSaDaLUgLcEVw== dependencies: "@lumino/coreutils" "^1.5.3" "@lumino/disposable" "^1.4.3" @@ -1521,18 +1525,18 @@ path-browserify "^1.0.0" url-parse "~1.5.1" -"@jupyterlab/docmanager@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/docmanager/-/docmanager-3.3.2.tgz#ce9ab9953cfda4c8601cb0604ffab2bf78b89695" - integrity sha512-2H4XYSsW1ypzby/70ZaP1Csw2ysR4fUgRP9lJmKE3uIxUHPdW4oMWzzzryOJ7Vr2YN0E3zsGMb9AobkxeI3Gyg== - dependencies: - "@jupyterlab/apputils" "^3.3.2" - "@jupyterlab/coreutils" "^5.3.2" - "@jupyterlab/docprovider" "^3.3.2" - "@jupyterlab/docregistry" "^3.3.2" - "@jupyterlab/services" "^6.3.2" - "@jupyterlab/statusbar" "^3.3.2" - "@jupyterlab/translation" "^3.3.2" +"@jupyterlab/docmanager@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/docmanager/-/docmanager-3.3.4.tgz#0552bec264310611461720b038a4c430fb03bc28" + integrity sha512-JIH1ZK5BzPHRnfPcfTXPj5UYGJoPFx4vKcOiq2YFtMrL6bFoSq1Am4MGdLX1mm7mMIeQ6QHh6Ptrx0RENw198Q== + dependencies: + "@jupyterlab/apputils" "^3.3.4" + "@jupyterlab/coreutils" "^5.3.4" + "@jupyterlab/docprovider" "^3.3.4" + "@jupyterlab/docregistry" "^3.3.4" + "@jupyterlab/services" "^6.3.4" + "@jupyterlab/statusbar" "^3.3.4" + "@jupyterlab/translation" "^3.3.4" "@lumino/algorithm" "^1.3.3" "@lumino/coreutils" "^1.5.3" "@lumino/disposable" "^1.4.3" @@ -1542,34 +1546,34 @@ "@lumino/widgets" "^1.19.0" react "^17.0.1" -"@jupyterlab/docprovider@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/docprovider/-/docprovider-3.3.2.tgz#4721ce9a0c83381d53716fbc716ad441e1dce041" - integrity sha512-0vMmBKNZ90QpZrpMiqf+hPlo3spKrwvvHnQE2Iy4SXixRQu3GbElgFCkXZ6KOFcYmkyv+9Rb0g62GGZZEwv2SA== +"@jupyterlab/docprovider@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/docprovider/-/docprovider-3.3.4.tgz#69915ba4b68a04af9baf7a7dd91adf661f34feb0" + integrity sha512-8Q2azx3Bui6Eo7Yb547zdqVMw/QCcp1plu3qCaqHXjrXRkiAWVPT5CEi2T25TU9t282tkCrvMjxQg6a8chgfZg== dependencies: - "@jupyterlab/shared-models" "^3.3.2" + "@jupyterlab/shared-models" "^3.3.4" "@lumino/coreutils" "^1.5.3" lib0 "^0.2.42" y-websocket "^1.3.15" yjs "^13.5.17" -"@jupyterlab/docregistry@^3.0.0", "@jupyterlab/docregistry@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/docregistry/-/docregistry-3.3.2.tgz#3bdbe3696590952be5fa1cd51d4c6c6d257d917b" - integrity sha512-4/BpnMv1cAmqTpjmhVDCLaBSXvdCqJUaV+Wib0Agky/aEhCgQRPu/Fj5chVVvAIkHMx8QEYo+NgL8RKfKsZSVw== - dependencies: - "@jupyterlab/apputils" "^3.3.2" - "@jupyterlab/codeeditor" "^3.3.2" - "@jupyterlab/codemirror" "^3.3.2" - "@jupyterlab/coreutils" "^5.3.2" - "@jupyterlab/docprovider" "^3.3.2" - "@jupyterlab/observables" "^4.3.2" - "@jupyterlab/rendermime" "^3.3.2" - "@jupyterlab/rendermime-interfaces" "^3.3.2" - "@jupyterlab/services" "^6.3.2" - "@jupyterlab/shared-models" "^3.3.2" - "@jupyterlab/translation" "^3.3.2" - "@jupyterlab/ui-components" "^3.3.2" +"@jupyterlab/docregistry@^3.0.0", "@jupyterlab/docregistry@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/docregistry/-/docregistry-3.3.4.tgz#3f27c095204e48a3210d624c1e8756ee4fc18826" + integrity sha512-Iw4wl7qGUEqqaBcMUQcw0s2KNFaMTpfN845u2rRGzBZiIxpZLKCmggn0iFln7PEZ/8bo1iIoofmJd5MKzmwKww== + dependencies: + "@jupyterlab/apputils" "^3.3.4" + "@jupyterlab/codeeditor" "^3.3.4" + "@jupyterlab/codemirror" "^3.3.4" + "@jupyterlab/coreutils" "^5.3.4" + "@jupyterlab/docprovider" "^3.3.4" + "@jupyterlab/observables" "^4.3.4" + "@jupyterlab/rendermime" "^3.3.4" + "@jupyterlab/rendermime-interfaces" "^3.3.4" + "@jupyterlab/services" "^6.3.4" + "@jupyterlab/shared-models" "^3.3.4" + "@jupyterlab/translation" "^3.3.4" + "@jupyterlab/ui-components" "^3.3.4" "@lumino/algorithm" "^1.3.3" "@lumino/coreutils" "^1.5.3" "@lumino/disposable" "^1.4.3" @@ -1578,20 +1582,20 @@ "@lumino/widgets" "^1.19.0" yjs "^13.5.17" -"@jupyterlab/filebrowser@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/filebrowser/-/filebrowser-3.3.2.tgz#27912c2f0321f0c740a209ee1d7c666e5fccafd6" - integrity sha512-8OdNZkal0LcO7ysSWB6Klc7HmL/mxfcFrpEUBPPIU0kmqEnbrSyr6fD4+cBggrRGmCn1pKW8P3qLA1Lj7OuT0Q== - dependencies: - "@jupyterlab/apputils" "^3.3.2" - "@jupyterlab/coreutils" "^5.3.2" - "@jupyterlab/docmanager" "^3.3.2" - "@jupyterlab/docregistry" "^3.3.2" - "@jupyterlab/services" "^6.3.2" - "@jupyterlab/statedb" "^3.3.2" - "@jupyterlab/statusbar" "^3.3.2" - "@jupyterlab/translation" "^3.3.2" - "@jupyterlab/ui-components" "^3.3.2" +"@jupyterlab/filebrowser@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/filebrowser/-/filebrowser-3.3.4.tgz#8c870d933676664f8e507852f029cac7d1c57026" + integrity sha512-iX+C6NvcjEj4DYq325OMGF7AbP8cIBdkMNIyubQV80N2hTQhghuy2CRxDChmObPn98FR9dYG14Y/1yXbRt0Xtg== + dependencies: + "@jupyterlab/apputils" "^3.3.4" + "@jupyterlab/coreutils" "^5.3.4" + "@jupyterlab/docmanager" "^3.3.4" + "@jupyterlab/docregistry" "^3.3.4" + "@jupyterlab/services" "^6.3.4" + "@jupyterlab/statedb" "^3.3.4" + "@jupyterlab/statusbar" "^3.3.4" + "@jupyterlab/translation" "^3.3.4" + "@jupyterlab/ui-components" "^3.3.4" "@lumino/algorithm" "^1.3.3" "@lumino/coreutils" "^1.5.3" "@lumino/disposable" "^1.4.3" @@ -1605,40 +1609,49 @@ react "^17.0.1" "@jupyterlab/fileeditor@^3.0.0": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/fileeditor/-/fileeditor-3.3.2.tgz#2cf80f26e6352834b67f893f66869048abb92a28" - integrity sha512-UI8DTu1+ED1ptnt401RTs6eYAzFhHw/KfVEYsMlQHyY537eP5F5/QTYO0gbUAA1I21wbrXkB2ruemQPHs3gXRg== - dependencies: - "@jupyterlab/apputils" "^3.3.2" - "@jupyterlab/codeeditor" "^3.3.2" - "@jupyterlab/docregistry" "^3.3.2" - "@jupyterlab/statusbar" "^3.3.2" - "@jupyterlab/translation" "^3.3.2" - "@jupyterlab/ui-components" "^3.3.2" + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/fileeditor/-/fileeditor-3.3.4.tgz#04c0161f7c156954eff5cfe0d7ad6e7fe6558a71" + integrity sha512-cB+thc2NG7WTuEIqkM7sWJl8iOmt4VFPKKvCOeLYGZj7d12rjPqEZtShXh3u8gpv04PWfqseBiVTkGn2DnWzLA== + dependencies: + "@jupyterlab/apputils" "^3.3.4" + "@jupyterlab/codeeditor" "^3.3.4" + "@jupyterlab/docregistry" "^3.3.4" + "@jupyterlab/statusbar" "^3.3.4" + "@jupyterlab/translation" "^3.3.4" + "@jupyterlab/ui-components" "^3.3.4" "@lumino/coreutils" "^1.5.3" "@lumino/messaging" "^1.4.3" "@lumino/widgets" "^1.19.0" react "^17.0.1" -"@jupyterlab/javascript-extension@~3.0.0": - version "3.0.12" - resolved "https://registry.yarnpkg.com/@jupyterlab/javascript-extension/-/javascript-extension-3.0.12.tgz#335c143b727a414d6c2a76b952de87b3b3dd0c7d" - integrity sha512-d4O3pgsoyhK0KTCEie9IvHBLLxqX4Of3aif9QfzhkAaHotOxit0pfennBxpq/6k0eLnuAeLooRigayMjPV7IlA== +"@jupyterlab/json-extension@^3.0.0": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/json-extension/-/json-extension-3.3.4.tgz#a270f0ceffa9b64065234d6bb12aaddc439c2d20" + integrity sha512-r0pT/RLwzv/Zpu3r3I6/q1owLEcKul6JPg2Ga8U1nA3iRXpV4TE11q8MFI2pKYAE0zl9gH0RigrwzwuFvBqVPQ== dependencies: - "@jupyterlab/rendermime" "^3.0.12" - "@jupyterlab/rendermime-interfaces" "^3.0.10" + "@jupyterlab/apputils" "^3.3.4" + "@jupyterlab/rendermime-interfaces" "^3.3.4" + "@jupyterlab/translation" "^3.3.4" + "@jupyterlab/ui-components" "^3.3.4" + "@lumino/coreutils" "^1.5.3" + "@lumino/messaging" "^1.4.3" + "@lumino/widgets" "^1.19.0" + react "^17.0.1" + react-dom "^17.0.1" + react-highlighter "^0.4.3" + react-json-tree "^0.15.0" "@jupyterlab/logconsole@^3.0.0": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/logconsole/-/logconsole-3.3.2.tgz#7b53db9e6850aac0e6659fdf83502394619b2500" - integrity sha512-6BwY21XrhhD9K8eNS1w3R57bH3yzWd6CcUeWA5QaaZWPgBqtM6Mc2i9Mvf9DnTuBhpSu1Mkxf3qUMjCwTyODbA== - dependencies: - "@jupyterlab/coreutils" "^5.3.2" - "@jupyterlab/nbformat" "^3.3.2" - "@jupyterlab/outputarea" "^3.3.2" - "@jupyterlab/rendermime" "^3.3.2" - "@jupyterlab/services" "^6.3.2" - "@jupyterlab/translation" "^3.3.2" + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/logconsole/-/logconsole-3.3.4.tgz#7b78822d1220d12d926fff3f21cb053fbbb7fea7" + integrity sha512-JgiyumdldAwMjv381R/NWaersM2VIg6f3OGi5/Ah20kPLPK4X1dzkeku660sbf6DydszeRX97/da26O2sDfuZg== + dependencies: + "@jupyterlab/coreutils" "^5.3.4" + "@jupyterlab/nbformat" "^3.3.4" + "@jupyterlab/outputarea" "^3.3.4" + "@jupyterlab/rendermime" "^3.3.4" + "@jupyterlab/services" "^6.3.4" + "@jupyterlab/translation" "^3.3.4" "@lumino/coreutils" "^1.5.3" "@lumino/disposable" "^1.4.3" "@lumino/messaging" "^1.4.3" @@ -1646,45 +1659,90 @@ "@lumino/widgets" "^1.19.0" "@jupyterlab/mainmenu@^3.0.0": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/mainmenu/-/mainmenu-3.3.2.tgz#cff8bf7b90b93068981f3f221e8e6d8772047065" - integrity sha512-9kMTalc/uE23NYfdnWU7CvEv3w32o9S2wOLaCPhU9Ns4DujqCoH9SVxILiUNamtvXe+lSLbBUzgfCIy2Gakhdg== - dependencies: - "@jupyterlab/apputils" "^3.3.2" - "@jupyterlab/services" "^6.3.2" - "@jupyterlab/translation" "^3.3.2" - "@jupyterlab/ui-components" "^3.3.2" + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/mainmenu/-/mainmenu-3.3.4.tgz#0ed3f083d465e1dc1dcb2c8bee693f1cb6883846" + integrity sha512-hbAUlMbu2UXoqb9ruRZj/tUfWUcdq+HmND+RgTPGoSOS+vG82TGBemhK9ixXr2ZB26oHAmvkB3Fk0Y37LzwuIg== + dependencies: + "@jupyterlab/apputils" "^3.3.4" + "@jupyterlab/services" "^6.3.4" + "@jupyterlab/translation" "^3.3.4" + "@jupyterlab/ui-components" "^3.3.4" "@lumino/algorithm" "^1.3.3" "@lumino/commands" "^1.12.0" "@lumino/coreutils" "^1.5.3" "@lumino/widgets" "^1.19.0" -"@jupyterlab/nbformat@^3.0.0", "@jupyterlab/nbformat@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/nbformat/-/nbformat-3.3.2.tgz#92acc8a3d1acfeee3a8f0073bfbf8f2f099e33c0" - integrity sha512-vKUmuHqFrdlNiAzpweYKrft/DnrUpXco6nGd6LTy2nNsmFBo+2uV8E/g5YoBBHLkObEy7XDwN4AOKUGV5E9iNw== +"@jupyterlab/markdownviewer-extension@^3.0.0": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/markdownviewer-extension/-/markdownviewer-extension-3.3.4.tgz#71c3c15657862874163f528751b7d9f26c1f2fc7" + integrity sha512-8uTNdE4LZ2xPwdETC5XGz7njS3HFkA7KwkRF/eC125bkqahl9cijXaPfG3m2Us+kmI80Qsa0USmvoHrCIsDFCw== + dependencies: + "@jupyterlab/application" "^3.3.4" + "@jupyterlab/apputils" "^3.3.4" + "@jupyterlab/coreutils" "^5.3.4" + "@jupyterlab/markdownviewer" "^3.3.4" + "@jupyterlab/rendermime" "^3.3.4" + "@jupyterlab/settingregistry" "^3.3.4" + "@jupyterlab/translation" "^3.3.4" + +"@jupyterlab/markdownviewer@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/markdownviewer/-/markdownviewer-3.3.4.tgz#de21472c66211fa80636f8e5c5730dbbea81e2f0" + integrity sha512-jN/X59gVLWoLPgPY8BwedZbFY7PhKme7xJj+VnhK98KV69fayH+EpnwZtKq6MUilTSBrS1hXSSd12nfR7sF6Uw== + dependencies: + "@jupyterlab/apputils" "^3.3.4" + "@jupyterlab/coreutils" "^5.3.4" + "@jupyterlab/docregistry" "^3.3.4" + "@jupyterlab/rendermime" "^3.3.4" + "@jupyterlab/translation" "^3.3.4" + "@lumino/coreutils" "^1.5.3" + "@lumino/messaging" "^1.4.3" + "@lumino/widgets" "^1.19.0" + +"@jupyterlab/mathjax2-extension@^3.0.0": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/mathjax2-extension/-/mathjax2-extension-3.3.4.tgz#60f677f0f25dd5233bd9ff8c494d105c0525f5b7" + integrity sha512-80lvhb9oVa7i/fEbOzIDhRI26UE58Y0tm0cWnuoOyyoN7+f8dqdh2tNgEzZqB9bZimNSzSVMdGVeDygrkd36nQ== dependencies: + "@jupyterlab/application" "^3.3.4" + "@jupyterlab/coreutils" "^5.3.4" + "@jupyterlab/mathjax2" "^3.3.4" + "@jupyterlab/rendermime" "^3.3.4" + +"@jupyterlab/mathjax2@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/mathjax2/-/mathjax2-3.3.4.tgz#10465277baff3c8913fc80cecac1449c2c3e8927" + integrity sha512-B7cyze/kXIMzPg+125VPcolaAVuPs1uivpWI/b0S2FPCeAlu/y48xylw480nL1SueRB6Wjma4eMiVkx7owS43Q== + dependencies: + "@jupyterlab/rendermime-interfaces" "^3.3.4" "@lumino/coreutils" "^1.5.3" -"@jupyterlab/notebook@^3.0.0", "@jupyterlab/notebook@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/notebook/-/notebook-3.3.2.tgz#ceaa6320b2d7549a8d065743358647336093b7d9" - integrity sha512-3wVsUa7wcKZEXAzvp10ZtkAobimvDfQRsN2fatvmJS8U5jrWVotwi1SJGRHz3xhaM8sjIZ3/eYBUhOu5CRH9Eg== - dependencies: - "@jupyterlab/apputils" "^3.3.2" - "@jupyterlab/cells" "^3.3.2" - "@jupyterlab/codeeditor" "^3.3.2" - "@jupyterlab/coreutils" "^5.3.2" - "@jupyterlab/docregistry" "^3.3.2" - "@jupyterlab/nbformat" "^3.3.2" - "@jupyterlab/observables" "^4.3.2" - "@jupyterlab/rendermime" "^3.3.2" - "@jupyterlab/services" "^6.3.2" - "@jupyterlab/settingregistry" "^3.3.2" - "@jupyterlab/shared-models" "^3.3.2" - "@jupyterlab/statusbar" "^3.3.2" - "@jupyterlab/translation" "^3.3.2" - "@jupyterlab/ui-components" "^3.3.2" +"@jupyterlab/nbformat@^3.0.0", "@jupyterlab/nbformat@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/nbformat/-/nbformat-3.3.4.tgz#0248fd0947fc256ee1e8bd64b1d72e7939543f0d" + integrity sha512-NUo/SOLDVg5tys+wF074iIz3PoGDep4uWzfRFIN/1NPsm4uhsomIGVrFNvoT2r7Qd4H0hOP/Wy0lSpYlZCUZeg== + dependencies: + "@lumino/coreutils" "^1.5.3" + +"@jupyterlab/notebook@^3.0.0", "@jupyterlab/notebook@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/notebook/-/notebook-3.3.4.tgz#d3cd1d17559a84bbe0182b5707dde4ee248bb8a4" + integrity sha512-gKZU3gMAYMfHdoqnmb2s7qJzWF7A/r62ZRH0j03z4300klTX8Sx+HISCcnHhdifYOE17EDtZ0Yx3GaHOUz/u1A== + dependencies: + "@jupyterlab/apputils" "^3.3.4" + "@jupyterlab/cells" "^3.3.4" + "@jupyterlab/codeeditor" "^3.3.4" + "@jupyterlab/coreutils" "^5.3.4" + "@jupyterlab/docregistry" "^3.3.4" + "@jupyterlab/nbformat" "^3.3.4" + "@jupyterlab/observables" "^4.3.4" + "@jupyterlab/rendermime" "^3.3.4" + "@jupyterlab/services" "^6.3.4" + "@jupyterlab/settingregistry" "^3.3.4" + "@jupyterlab/shared-models" "^3.3.4" + "@jupyterlab/statusbar" "^3.3.4" + "@jupyterlab/translation" "^3.3.4" + "@jupyterlab/ui-components" "^3.3.4" "@lumino/algorithm" "^1.3.3" "@lumino/coreutils" "^1.5.3" "@lumino/domutils" "^1.2.3" @@ -1696,10 +1754,10 @@ "@lumino/widgets" "^1.19.0" react "^17.0.1" -"@jupyterlab/observables@^4.3.2": - version "4.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/observables/-/observables-4.3.2.tgz#fd22b9cdb496ca9fe1520230fe550d3b7ac62346" - integrity sha512-Xa4lOA71en4kGq881Numqk3S10J7e3s8PmA/zFi21qrnTEKYMvpidoA0rGdzVUc3qT+iJ7hqr9kZFHV9JNTiQA== +"@jupyterlab/observables@^4.3.4": + version "4.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/observables/-/observables-4.3.4.tgz#3bfb5b53258aa3d3dc56e9378856f5314a4fb35f" + integrity sha512-dK5dKPu9fsxFhHlzo+F8yMzvdpiLluN6HiXt8qHLGVJKWGniIc/nzYbdkz3tndBkPV4nRXJIaV8OyLpUUXRCPA== dependencies: "@lumino/algorithm" "^1.3.3" "@lumino/coreutils" "^1.5.3" @@ -1707,17 +1765,17 @@ "@lumino/messaging" "^1.4.3" "@lumino/signaling" "^1.4.3" -"@jupyterlab/outputarea@^3.0.0", "@jupyterlab/outputarea@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/outputarea/-/outputarea-3.3.2.tgz#7d2c5f510add60c6c88af084f8c9c84b8aac8773" - integrity sha512-0EuXxVjqx3UWlMnd4styh/L+vYDahGsuw0jTSumK51jF8Fwyu4J+U8KbMLdckIp05OxUvCohQMVRxhA7kcCd8w== - dependencies: - "@jupyterlab/apputils" "^3.3.2" - "@jupyterlab/nbformat" "^3.3.2" - "@jupyterlab/observables" "^4.3.2" - "@jupyterlab/rendermime" "^3.3.2" - "@jupyterlab/rendermime-interfaces" "^3.3.2" - "@jupyterlab/services" "^6.3.2" +"@jupyterlab/outputarea@^3.0.0", "@jupyterlab/outputarea@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/outputarea/-/outputarea-3.3.4.tgz#bfa61d7468f6b975323077b470842024edff4301" + integrity sha512-n6wEl92MJTa2uKbzZDp/2q0UsfBm8xTWJip7AqkH/ycgufpb9MS8ASsguS7GeOke93uawmWH54Jhxl1Zrp4QSw== + dependencies: + "@jupyterlab/apputils" "^3.3.4" + "@jupyterlab/nbformat" "^3.3.4" + "@jupyterlab/observables" "^4.3.4" + "@jupyterlab/rendermime" "^3.3.4" + "@jupyterlab/rendermime-interfaces" "^3.3.4" + "@jupyterlab/services" "^6.3.4" "@lumino/algorithm" "^1.3.3" "@lumino/coreutils" "^1.5.3" "@lumino/disposable" "^1.4.3" @@ -1727,28 +1785,39 @@ "@lumino/widgets" "^1.19.0" resize-observer-polyfill "^1.5.1" -"@jupyterlab/rendermime-interfaces@^3.0.0", "@jupyterlab/rendermime-interfaces@^3.0.10", "@jupyterlab/rendermime-interfaces@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime-interfaces/-/rendermime-interfaces-3.3.2.tgz#cbf40810a45ba0de3f13bc6de95f94d92902da9b" - integrity sha512-lX1H9FGqjLl1Hm91mThSid/1XIq8IudYYBv3vMbmcHLqJnFB1iQMYYm/swD4YDI/mapoQ6ch6VsYSQx3CibOtw== +"@jupyterlab/rendermime-extension@^3.0.0": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime-extension/-/rendermime-extension-3.3.4.tgz#e73880a71144f03488b5fb5f9bb99c690718baa9" + integrity sha512-7oum6xm5Z2AKAMVpt/aLkdCCFvaQL/MP+RytwDRaW7YDZiVBw8Hfuc3IpnpNNRWjjyLF+0/FTx8g6R6duxBTCQ== + dependencies: + "@jupyterlab/application" "^3.3.4" + "@jupyterlab/apputils" "^3.3.4" + "@jupyterlab/docmanager" "^3.3.4" + "@jupyterlab/rendermime" "^3.3.4" + "@jupyterlab/translation" "^3.3.4" + +"@jupyterlab/rendermime-interfaces@^3.0.0", "@jupyterlab/rendermime-interfaces@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime-interfaces/-/rendermime-interfaces-3.3.4.tgz#87e2154baad5c6536f3489d5f421b77bf5f23292" + integrity sha512-T+mGIBdbIHm9M1sxShHCnl1yaBqvljAWKIxJjJ3qyCsb/uOjGg5nO8Z+EuKTTWe+X7j38g7WxubipsoAF0AuhQ== dependencies: - "@jupyterlab/translation" "^3.3.2" + "@jupyterlab/translation" "^3.3.4" "@lumino/coreutils" "^1.5.3" "@lumino/widgets" "^1.19.0" -"@jupyterlab/rendermime@^3.0.0", "@jupyterlab/rendermime@^3.0.12", "@jupyterlab/rendermime@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime/-/rendermime-3.3.2.tgz#e2db0b32c178899a827730c0ac4ea93526da9189" - integrity sha512-ZHpZ5I4eOaXE5KybwVfbdqZCBxO1RSHCYbfITpKV64+600qq4KGdDrMPE0DCQWzFJ8cj8iJTRc/3CdLo9r6HhQ== - dependencies: - "@jupyterlab/apputils" "^3.3.2" - "@jupyterlab/codemirror" "^3.3.2" - "@jupyterlab/coreutils" "^5.3.2" - "@jupyterlab/nbformat" "^3.3.2" - "@jupyterlab/observables" "^4.3.2" - "@jupyterlab/rendermime-interfaces" "^3.3.2" - "@jupyterlab/services" "^6.3.2" - "@jupyterlab/translation" "^3.3.2" +"@jupyterlab/rendermime@^3.0.0", "@jupyterlab/rendermime@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime/-/rendermime-3.3.4.tgz#dc6ed06cc4fe0f2a92055d68edfd9b86d0afbdf0" + integrity sha512-kq9LPB/XgfoK/eO+NIoI9qTbiCcy8w+2lvrICVELrKCUfs9cUGD5axsk1wH6xY6f5fLuDzjlCEySSXAxIka3pA== + dependencies: + "@jupyterlab/apputils" "^3.3.4" + "@jupyterlab/codemirror" "^3.3.4" + "@jupyterlab/coreutils" "^5.3.4" + "@jupyterlab/nbformat" "^3.3.4" + "@jupyterlab/observables" "^4.3.4" + "@jupyterlab/rendermime-interfaces" "^3.3.4" + "@jupyterlab/services" "^6.3.4" + "@jupyterlab/translation" "^3.3.4" "@lumino/algorithm" "^1.3.3" "@lumino/coreutils" "^1.5.3" "@lumino/messaging" "^1.4.3" @@ -1757,16 +1826,16 @@ lodash.escape "^4.0.1" marked "^2.0.0" -"@jupyterlab/services@^6.0.0", "@jupyterlab/services@^6.1.8", "@jupyterlab/services@^6.3.2": - version "6.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/services/-/services-6.3.2.tgz#775fe3c994de716251d77b953703fcf5790f84e4" - integrity sha512-qWJyVXX9Z+9vAUA8jBoa8jYQOAbyV+5YPg+ryqvAZvu9Zro2twxHDFqd942TzkmQzBbg6LZJCJdSB7WU4NHpaQ== +"@jupyterlab/services@^6.0.0", "@jupyterlab/services@^6.1.8", "@jupyterlab/services@^6.3.4": + version "6.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/services/-/services-6.3.4.tgz#8c94b68a0121f3f7fe565f885eafd29461316f18" + integrity sha512-WgB+WbnhbGGm9IGXdE/YAZ8SZV4iIQ6SHa7QUgAk1e1zwpLrGbgmM8BhkqCZAqzofxLQQuwIfJ5YZidYI4ib9A== dependencies: - "@jupyterlab/coreutils" "^5.3.2" - "@jupyterlab/nbformat" "^3.3.2" - "@jupyterlab/observables" "^4.3.2" - "@jupyterlab/settingregistry" "^3.3.2" - "@jupyterlab/statedb" "^3.3.2" + "@jupyterlab/coreutils" "^5.3.4" + "@jupyterlab/nbformat" "^3.3.4" + "@jupyterlab/observables" "^4.3.4" + "@jupyterlab/settingregistry" "^3.3.4" + "@jupyterlab/statedb" "^3.3.4" "@lumino/algorithm" "^1.3.3" "@lumino/coreutils" "^1.5.3" "@lumino/disposable" "^1.4.3" @@ -1775,12 +1844,12 @@ node-fetch "^2.6.0" ws "^7.4.6" -"@jupyterlab/settingregistry@^3.0.0", "@jupyterlab/settingregistry@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/settingregistry/-/settingregistry-3.3.2.tgz#fe6c7404f81924c88f0b332c2b030ae23668d3ca" - integrity sha512-ZjfD5+l934IQL3/zj0We22wySpYTRxMRLrRRJk874T6d+DctRYcSivBA7QEakBijjyIFG7aHlg/g7qurJ/7W+Q== +"@jupyterlab/settingregistry@^3.0.0", "@jupyterlab/settingregistry@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/settingregistry/-/settingregistry-3.3.4.tgz#fd2d545dd868553e9819a78f0eb32c1dcc364c3e" + integrity sha512-7aoUDX5pZC7/RfqbHMUBNcI4CKaT9ag/TU4u6tM11sasU/8HggVH82ps85g/dC5XsTGV/NCYU9yt8Abcn5dc+w== dependencies: - "@jupyterlab/statedb" "^3.3.2" + "@jupyterlab/statedb" "^3.3.4" "@lumino/commands" "^1.12.0" "@lumino/coreutils" "^1.5.3" "@lumino/disposable" "^1.4.3" @@ -1788,22 +1857,22 @@ ajv "^6.12.3" json5 "^2.1.1" -"@jupyterlab/shared-models@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/shared-models/-/shared-models-3.3.2.tgz#a6ca48947161895e7abbb1707ecdc1702da9a3e7" - integrity sha512-7PxlW1RKeEDw8k4OQeret3Ax5pa2wznbV+RN+IYvjSLs6wUc2d8KS0JiBHikUYwUhj54f8m/+9S4bbS8Np3rlg== +"@jupyterlab/shared-models@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/shared-models/-/shared-models-3.3.4.tgz#f4ed3146ce0ac0fb4bf311adfea127c303ed9bbe" + integrity sha512-O1q70G09KoyPGydZPBDgMBqIsUrMNGD+cBAGq2pdcuMw9Syk9AghW1qz3ysuFtGt428Jz6KKZ1sjfdzcWjvtZw== dependencies: - "@jupyterlab/nbformat" "^3.3.2" + "@jupyterlab/nbformat" "^3.3.4" "@lumino/coreutils" "^1.5.3" "@lumino/disposable" "^1.4.3" "@lumino/signaling" "^1.4.3" y-protocols "^1.0.5" yjs "^13.5.17" -"@jupyterlab/statedb@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/statedb/-/statedb-3.3.2.tgz#944baa96680e4819a630797a55075e24a63a27be" - integrity sha512-IXjlV+RsaS091lfkyOaZOoho9QQLS/74OG4ei4kP6MXghIGTFYTsXvleUh9tynOcTXrhdQcHRNYsoUzTmRMW0A== +"@jupyterlab/statedb@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/statedb/-/statedb-3.3.4.tgz#2fe7df41b9a5796577cf7f17f61787e27726a4ef" + integrity sha512-j0iPv/KVrzgTD59tAtnVobC1PfyIr1a7egvwz6xaVlr5d8KUrz9mcTlEVWSrrWjJMRWFBpRqkkxoNqPR1nWd+w== dependencies: "@lumino/commands" "^1.12.0" "@lumino/coreutils" "^1.5.3" @@ -1811,16 +1880,16 @@ "@lumino/properties" "^1.2.3" "@lumino/signaling" "^1.4.3" -"@jupyterlab/statusbar@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/statusbar/-/statusbar-3.3.2.tgz#e5339e17ceae640e179d6c698234bcb3bcec0fb6" - integrity sha512-nPs80qxgRXFjZNLWHNce+4G56j9/Y4RoeBXnhQJk6KzPk75CCVylQivCSUwWTLe4K4/yEv+evMHY3e2Ha4A/Fg== - dependencies: - "@jupyterlab/apputils" "^3.3.2" - "@jupyterlab/codeeditor" "^3.3.2" - "@jupyterlab/services" "^6.3.2" - "@jupyterlab/translation" "^3.3.2" - "@jupyterlab/ui-components" "^3.3.2" +"@jupyterlab/statusbar@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/statusbar/-/statusbar-3.3.4.tgz#e6fcbef0207a7079891d98724e768c506bad5a3e" + integrity sha512-XSbG1vnRyC62MYeRu0O4mTX2Ahy1xfCss4nfqbEJ/88lQorCVs4u8/34IUju6yDxk1CXl+l//9kS8igcgmaEjw== + dependencies: + "@jupyterlab/apputils" "^3.3.4" + "@jupyterlab/codeeditor" "^3.3.4" + "@jupyterlab/services" "^6.3.4" + "@jupyterlab/translation" "^3.3.4" + "@jupyterlab/ui-components" "^3.3.4" "@lumino/algorithm" "^1.3.3" "@lumino/coreutils" "^1.5.3" "@lumino/disposable" "^1.4.3" @@ -1832,20 +1901,20 @@ typestyle "^2.0.4" "@jupyterlab/testutils@^3.0.0": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/testutils/-/testutils-3.3.2.tgz#00739d0b487f59d65ad217dbd24c856f5d10836c" - integrity sha512-qjO+TXExFuzKcj4Xat2Njt9zhOTuzf+D449YbsCb7QESRlOAX0UVBirNy7yPcaU5pfJ0rc9SNjIrmWaBTHDAdg== - dependencies: - "@jupyterlab/apputils" "^3.3.2" - "@jupyterlab/cells" "^3.3.2" - "@jupyterlab/codeeditor" "^3.3.2" - "@jupyterlab/codemirror" "^3.3.2" - "@jupyterlab/coreutils" "^5.3.2" - "@jupyterlab/docregistry" "^3.3.2" - "@jupyterlab/nbformat" "^3.3.2" - "@jupyterlab/notebook" "^3.3.2" - "@jupyterlab/rendermime" "^3.3.2" - "@jupyterlab/services" "^6.3.2" + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/testutils/-/testutils-3.3.4.tgz#bc653c92ff20add1054ca8a26fed7ad20a5db145" + integrity sha512-jZBdWlA+zsbfvA0oubFheRbSspls01qEGSZNa4dQa1rE9tPzBoj+RkHyMpFowRYm+MqyzwkFlWE9X6TZhd7R1g== + dependencies: + "@jupyterlab/apputils" "^3.3.4" + "@jupyterlab/cells" "^3.3.4" + "@jupyterlab/codeeditor" "^3.3.4" + "@jupyterlab/codemirror" "^3.3.4" + "@jupyterlab/coreutils" "^5.3.4" + "@jupyterlab/docregistry" "^3.3.4" + "@jupyterlab/nbformat" "^3.3.4" + "@jupyterlab/notebook" "^3.3.4" + "@jupyterlab/rendermime" "^3.3.4" + "@jupyterlab/services" "^6.3.4" "@lumino/algorithm" "^1.3.3" "@lumino/coreutils" "^1.5.3" "@lumino/properties" "^1.2.3" @@ -1864,24 +1933,24 @@ simulate-event "~1.4.0" ts-jest "^26.3.0" -"@jupyterlab/translation@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/translation/-/translation-3.3.2.tgz#f75c4c5e44b671a56bb45e199d680f044011b258" - integrity sha512-z+aB4b+du0wqLKc2QYNOVRy5D53IBtVID2xZeYoC5bzzBGh12km6/4vwjdRS+IeN+jUFndsMLPELQVqIHtYqrA== +"@jupyterlab/translation@^3.0.0", "@jupyterlab/translation@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/translation/-/translation-3.3.4.tgz#d5dde1f9291d86c8294000bc255b67a01341cefd" + integrity sha512-AUejVM48rsuWqYMH2rsIgZdzCZ9JmP6JCUhy0md32/RLs4ILmyMdzmMOTb0btigMgnRDmDL4UwT1YUyfsGiYgA== dependencies: - "@jupyterlab/coreutils" "^5.3.2" - "@jupyterlab/services" "^6.3.2" - "@jupyterlab/statedb" "^3.3.2" + "@jupyterlab/coreutils" "^5.3.4" + "@jupyterlab/services" "^6.3.4" + "@jupyterlab/statedb" "^3.3.4" "@lumino/coreutils" "^1.5.3" -"@jupyterlab/ui-components@^3.0.0", "@jupyterlab/ui-components@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@jupyterlab/ui-components/-/ui-components-3.3.2.tgz#468a3f2b1807a3b9af035c7dafa05beaf17c792a" - integrity sha512-pm2jGAPgkef1gOCI6OlIjiOTft8KTFys4LaG7O866lj3F9DMThM/CBAVNhmNG5DbpjZG3bVR6PG3qh4sIMe5jg== +"@jupyterlab/ui-components@^3.0.0", "@jupyterlab/ui-components@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/ui-components/-/ui-components-3.3.4.tgz#391de601c3fa57d5f081ce35ce303c7b9efddf2e" + integrity sha512-a1cCVqY+IOYQJDAopOxf/G0JFRPRXpKNV7T3y5qmvyY4ac3vvIYXwCZ5dvk1Btu+CFnsVHKdLII2I5ndScZ0Fg== dependencies: "@blueprintjs/core" "^3.36.0" "@blueprintjs/select" "^3.15.0" - "@jupyterlab/coreutils" "^5.3.2" + "@jupyterlab/coreutils" "^5.3.4" "@lumino/algorithm" "^1.3.3" "@lumino/commands" "^1.12.0" "@lumino/coreutils" "^1.5.3" @@ -2565,7 +2634,7 @@ npmlog "^4.1.2" write-file-atomic "^3.0.3" -"@lumino/algorithm@^1.1.0", "@lumino/algorithm@^1.3.3", "@lumino/algorithm@^1.9.1": +"@lumino/algorithm@^1.3.3", "@lumino/algorithm@^1.6.2", "@lumino/algorithm@^1.9.1": version "1.9.1" resolved "https://registry.yarnpkg.com/@lumino/algorithm/-/algorithm-1.9.1.tgz#a870598e031f5ee85e20e77ce7bfffbb0dffd7f5" integrity sha512-d0rj7IYRzYj6WbWSrbJbKvrfO4H0NUnXT2yjSWS/sCklpTpSp0IGmndK/X4r6gG+ev5lb5+wBg9ofUDBvoAlAw== @@ -2586,7 +2655,7 @@ dependencies: "@lumino/algorithm" "^1.9.1" -"@lumino/commands@^1.12.0", "@lumino/commands@^1.20.0": +"@lumino/commands@^1.12.0", "@lumino/commands@^1.15.2", "@lumino/commands@^1.20.0": version "1.20.0" resolved "https://registry.yarnpkg.com/@lumino/commands/-/commands-1.20.0.tgz#44c797134bb33946141a490c506420bd5f12ce0f" integrity sha512-xyrzDIJ9QEbcbRAwmXrjb7A7/E5MDNbnLANKwqmFVNF+4LSnF62obdvY4On3Rify3HmfX0u16Xr9gfoWPX9wLQ== @@ -2599,12 +2668,12 @@ "@lumino/signaling" "^1.10.1" "@lumino/virtualdom" "^1.14.1" -"@lumino/coreutils@^1.12.0", "@lumino/coreutils@^1.2.0", "@lumino/coreutils@^1.3.0", "@lumino/coreutils@^1.5.3": +"@lumino/coreutils@^1.11.1", "@lumino/coreutils@^1.12.0", "@lumino/coreutils@^1.5.3", "@lumino/coreutils@^1.8.2": version "1.12.0" resolved "https://registry.yarnpkg.com/@lumino/coreutils/-/coreutils-1.12.0.tgz#fbdef760f736eaf2bd396a5c6fc3a68a4b449b15" integrity sha512-DSglh4ylmLi820CNx9soJmDJCpUgymckdWeGWuN0Ash5g60oQvrQDfosVxEhzmNvtvXv45WZEqSBzDP6E5SEmQ== -"@lumino/disposable@^1.1.1", "@lumino/disposable@^1.10.1", "@lumino/disposable@^1.4.3": +"@lumino/disposable@^1.10.1", "@lumino/disposable@^1.4.3", "@lumino/disposable@^1.7.2": version "1.10.1" resolved "https://registry.yarnpkg.com/@lumino/disposable/-/disposable-1.10.1.tgz#58fddc619cf89335802d168564b76ff5315d5a84" integrity sha512-mZQILc8sVGZC7mJNOGVmehDRO9/u3sIRdjZ+pCYjDgXKcINLd6HoPhZDquKCWiRBfHTL1B3tOHjnBhahBc2N/Q== @@ -2612,12 +2681,12 @@ "@lumino/algorithm" "^1.9.1" "@lumino/signaling" "^1.10.1" -"@lumino/domutils@^1.1.0", "@lumino/domutils@^1.2.3", "@lumino/domutils@^1.8.1": +"@lumino/domutils@^1.2.3", "@lumino/domutils@^1.5.2", "@lumino/domutils@^1.8.1": version "1.8.1" resolved "https://registry.yarnpkg.com/@lumino/domutils/-/domutils-1.8.1.tgz#cf118e4eba90c3bf1e3edf7f19cce8846ec7875c" integrity sha512-QUVXwmDMIfcHC3yslhmyGK4HYBKaJ3xX5MTwDrjsSX7J7AZ4jwL4zfsxyF9ntdqEKraoJhLQ6BaUBY+Ur1cnYw== -"@lumino/dragdrop@^1.14.0", "@lumino/dragdrop@^1.7.1": +"@lumino/dragdrop@^1.10.2", "@lumino/dragdrop@^1.14.0", "@lumino/dragdrop@^1.7.1": version "1.14.0" resolved "https://registry.yarnpkg.com/@lumino/dragdrop/-/dragdrop-1.14.0.tgz#48baacc190518d0cb563698daa0d5b976d6fe5c3" integrity sha512-hO8sgF0BkpihKIP6UZgVJgiOEhz89i7Oxtp9FR9Jqw5alGocxSXt7q3cteMvqpcL6o2/s3CafZNRkVLRXmepNw== @@ -2630,7 +2699,7 @@ resolved "https://registry.yarnpkg.com/@lumino/keyboard/-/keyboard-1.8.1.tgz#e7850e2fb973fbb4c6e737ca8d9307f2dc3eb74b" integrity sha512-8x0y2ZQtEvOsblpI2gfTgf+gboftusP+5aukKEsgNQtzFl28RezQXEOSVd8iD3K6+Q1MaPQF0OALYP0ASqBjBg== -"@lumino/messaging@^1.10.1", "@lumino/messaging@^1.2.1", "@lumino/messaging@^1.4.3": +"@lumino/messaging@^1.10.1", "@lumino/messaging@^1.4.3", "@lumino/messaging@^1.7.2": version "1.10.1" resolved "https://registry.yarnpkg.com/@lumino/messaging/-/messaging-1.10.1.tgz#b29575cca46e2f23b84626b793ec8e2be46a53ba" integrity sha512-XZSdt9ih94rdeeLL0cryUw6HHD51D7TP8c+MFf+YRF6VKwOFB9RoajfQWadeqpmH+schTs3EsrFfA9KHduzC7w== @@ -2647,26 +2716,26 @@ "@lumino/disposable" "^1.10.1" "@lumino/signaling" "^1.10.1" -"@lumino/properties@^1.1.0", "@lumino/properties@^1.2.3", "@lumino/properties@^1.8.1": +"@lumino/properties@^1.2.3", "@lumino/properties@^1.5.2", "@lumino/properties@^1.8.1": version "1.8.1" resolved "https://registry.yarnpkg.com/@lumino/properties/-/properties-1.8.1.tgz#47eb8516e92c987dcb2c404db83a258159efec3d" integrity sha512-O+CCcAqP64Di32DUZ4Jqq0DtUyE5RJREN5vbkgGZGu+WauJ/RYoiLDe1ubbAeSaHk71OrS60ZBV7QyC8ZaBVsA== -"@lumino/signaling@^1.10.1", "@lumino/signaling@^1.2.0", "@lumino/signaling@^1.4.3": +"@lumino/signaling@^1.10.1", "@lumino/signaling@^1.4.3", "@lumino/signaling@^1.7.2": version "1.10.1" resolved "https://registry.yarnpkg.com/@lumino/signaling/-/signaling-1.10.1.tgz#c8a1cb5b661b6744ea817c99c758fdc897847c26" integrity sha512-GZVbX4cfk/ZqLwkemPD/NwqToaTL/6q7qdLpEhgkiPlaH1S5/V7fDpP7N1uFy4n3BDITId8cpYgH/Ds32Mdp3A== dependencies: "@lumino/algorithm" "^1.9.1" -"@lumino/virtualdom@^1.14.1", "@lumino/virtualdom@^1.8.0": +"@lumino/virtualdom@^1.11.2", "@lumino/virtualdom@^1.14.1", "@lumino/virtualdom@^1.8.0": version "1.14.1" resolved "https://registry.yarnpkg.com/@lumino/virtualdom/-/virtualdom-1.14.1.tgz#2551b146cbe87c48d23754f370c1331a60c9fe62" integrity sha512-imIJd/wtRkoR1onEiG5nxPEaIrf70nn4PgD/56ri3/Lo6AJEX2CusF6iIA27GVB8yl/7CxgTHUnzzCwTFPypcA== dependencies: "@lumino/algorithm" "^1.9.1" -"@lumino/widgets@^1.18.0", "@lumino/widgets@^1.19.0", "@lumino/widgets@^1.3.0", "@lumino/widgets@^1.31.1": +"@lumino/widgets@^1.19.0", "@lumino/widgets@^1.26.2", "@lumino/widgets@^1.30.0", "@lumino/widgets@^1.31.1": version "1.31.1" resolved "https://registry.yarnpkg.com/@lumino/widgets/-/widgets-1.31.1.tgz#c9c0b8c7940b412e55369fa277392bf86c6e4136" integrity sha512-4RzAMqWwWHa5IiaQaeIbiZdIBm/FOg6ub0w8dG3km0k+zIQyA4LFq2dbB1w6SHT1d06N+L/ebYfgvMFswPENag== @@ -2875,6 +2944,11 @@ dependencies: "@octokit/openapi-types" "^11.2.0" +"@polka/url@^1.0.0-next.20": + version "1.0.0-next.21" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" + integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== + "@rjsf/core@^3.1.0": version "3.2.1" resolved "https://registry.yarnpkg.com/@rjsf/core/-/core-3.2.1.tgz#8a7b24c9a6f01f0ecb093fdfc777172c12b1b009" @@ -2948,20 +3022,25 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" - integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== + version "7.17.0" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.0.tgz#7a9b80f712fe2052bc20da153ff1e552404d8e4b" + integrity sha512-r8aveDbd+rzGP+ykSdF3oPuTVRWRfbBiHl0rVDM2yNEmSMXfkObQLV46b4RnCv3Lra51OlfnZhkkFaDl2MIRaA== dependencies: "@babel/types" "^7.3.0" -"@types/backbone@^1.4.1": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@types/backbone/-/backbone-1.4.15.tgz#505323ab8fea11ecaec74cb3f73d569a4e5eb779" - integrity sha512-WWeKtYlsIMtDyLbbhkb96taJMEbfQBnuz7yw1u0pkphCOtksemoWhIXhK74VRCY9hbjnsH3rsJu2uUiFtnsEYg== +"@types/backbone@1.4.14": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@types/backbone/-/backbone-1.4.14.tgz#4b71f0c25d89cfa9a10b18042f0b03d35a53364c" + integrity sha512-85ldQ99fiYTJFBlZuAJRaCdvTZKZ2p1fSs3fVf+6Ub6k1X0g0hNJ0qJ/2FOByyyAQYLtbEz3shX5taKQfBKBDw== dependencies: "@types/jquery" "*" "@types/underscore" "*" +"@types/base16@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/base16/-/base16-1.0.2.tgz#eb3a07db52309bfefb9ba010dfdb3c0784971f65" + integrity sha512-oYO/U4VD1DavwrKuCSQWdLG+5K22SLPem2OQaHmFcQuwHoVeGC+JGVRji2MUqZUAIQZHEonOeVfAX09hYiLsdg== + "@types/dom4@^2.0.1": version "2.0.2" resolved "https://registry.yarnpkg.com/@types/dom4/-/dom4-2.0.2.tgz#6495303f049689ce936ed328a3e5ede9c51408ee" @@ -3030,14 +3109,14 @@ "@types/sizzle" "*" "@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8": - version "7.0.10" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.10.tgz#9b05b7896166cd00e9cbd59864853abf65d9ac23" - integrity sha512-BLO9bBq59vW3fxCpD4o0N4U+DXsvwvIcl+jofw0frQo/GrBFC+/jRZj1E7kgp6dvTyNmA4y6JCV5Id/r3mNP5A== + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== -"@types/lodash@^4.14.134": - version "4.14.180" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.180.tgz#4ab7c9ddfc92ec4a887886483bc14c79fb380670" - integrity sha512-XOKXa1KIxtNXgASAnwj7cnttJxS4fksBRywK/9LzRV5YxrF80BXZIGeQSuoESQ/VkUj30Ae0+YcuHc15wJCB2g== +"@types/lodash@^4.14.134", "@types/lodash@^4.14.178": + version "4.14.182" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.182.tgz#05301a4d5e62963227eaafe0ce04dd77c54ea5c2" + integrity sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q== "@types/minimatch@*", "@types/minimatch@^3.0.3": version "3.0.5" @@ -3050,9 +3129,9 @@ integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== "@types/node@*": - version "17.0.22" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.22.tgz#38b6c4b9b2f3ed9f2e376cce42a298fb2375251e" - integrity sha512-8FwbVoG4fy+ykY86XCAclKZDORttqE5/s7dyWZKLXTdv3vRy5HozBEinG5IqhvPXXzIZEcTVbuHlQEI6iuwcmw== + version "17.0.25" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.25.tgz#527051f3c2f77aa52e5dc74e45a3da5fb2301448" + integrity sha512-wANk6fBrUwdpY4isjWrKTufkrXdu1D2YHCot2fD/DfWxF5sMrVSA+KN7ydckvaTCh0HiqX9IVl0L5/ZoXg5M7w== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -3065,26 +3144,26 @@ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/prettier@^2.0.0": - version "2.4.4" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.4.tgz#5d9b63132df54d8909fce1c3f8ca260fdd693e17" - integrity sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA== + version "2.6.0" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.0.tgz#efcbd41937f9ae7434c714ab698604822d890759" + integrity sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw== -"@types/prop-types@*": - version "15.7.4" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" - integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== +"@types/prop-types@*", "@types/prop-types@^15.7.4": + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== "@types/react-dom@^17.0.0": - version "17.0.14" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.14.tgz#c8f917156b652ddf807711f5becbd2ab018dea9f" - integrity sha512-H03xwEP1oXmSfl3iobtmQ/2dHF5aBHr8aUMwyGZya6OW45G+xtdzmq6HkncefiBt5JU8DVyaWl/nWZbjZCnzAQ== + version "17.0.15" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.15.tgz#f2c8efde11521a4b7991e076cb9c70ba3bb0d156" + integrity sha512-Tr9VU9DvNoHDWlmecmcsE5ZZiUkYx+nKBzum4Oxe1K0yJVyBlfbq7H3eXjxXqJczBKqPGq3EgfTru4MgKb9+Yw== dependencies: - "@types/react" "*" + "@types/react" "^17" -"@types/react@*", "@types/react@^17.0.0": - version "17.0.41" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.41.tgz#6e179590d276394de1e357b3f89d05d7d3da8b85" - integrity sha512-chYZ9ogWUodyC7VUTRBfblysKLjnohhFY9bGLwvnUFFy48+vB9DikmB3lW0qTFmBcKSzmdglcvkHK71IioOlDA== +"@types/react@^17", "@types/react@^17.0.0": + version "17.0.44" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.44.tgz#c3714bd34dd551ab20b8015d9d0dbec812a51ec7" + integrity sha512-Ye0nlw09GeMp2Suh8qoOv0odfgCoowfM/9MG6WeRD60Gq9wS90bdkdRtYbRkNhXOpG4H+YXGvj4wOWhAC0LJ1g== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -3249,10 +3328,10 @@ resolved "https://registry.yarnpkg.com/@verdaccio/streams/-/streams-10.2.0.tgz#e01d2bfdcfe8aa2389f31bc6b72a602628bd025b" integrity sha512-FaIzCnDg0x0Js5kSQn1Le3YzDHl7XxrJ0QdIw5LrDUmLsH3VXNi4/NMlSHnw5RiTTMs4UbEf98V3RJRB8exqJA== -"@verdaccio/ui-theme@6.0.0-6-next.22": - version "6.0.0-6-next.22" - resolved "https://registry.yarnpkg.com/@verdaccio/ui-theme/-/ui-theme-6.0.0-6-next.22.tgz#55a0cbcbee382195a31620d3968a1512eaea2a9e" - integrity sha512-MuuIcNLSjm8ZzibIXyzLae8Omsq7btha9JuRf1oBOA/oHRt+ZsUlVsHlJgA5w49FWa4WU74724USWD0ZpT7Y5w== +"@verdaccio/ui-theme@6.0.0-6-next.23": + version "6.0.0-6-next.23" + resolved "https://registry.yarnpkg.com/@verdaccio/ui-theme/-/ui-theme-6.0.0-6-next.23.tgz#268da5091e1e9264fe87b8b94c0ac596e9e54879" + integrity sha512-GXpEPdZJm6o+2VAxzUsKaiDriS+5enqr7Gjrb2Bttcd+IkOuC8lDsoFHxIv0ib4JudZJ/aKsRYL3TN2AetPFjw== "@webassemblyjs/ast@1.11.1": version "1.11.1" @@ -3262,64 +3341,21 @@ "@webassemblyjs/helper-numbers" "1.11.1" "@webassemblyjs/helper-wasm-bytecode" "1.11.1" -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== - dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@webassemblyjs/floating-point-hex-parser@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== - "@webassemblyjs/helper-api-error@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== - "@webassemblyjs/helper-buffer@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== - -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== - dependencies: - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== - -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-numbers@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" @@ -3334,11 +3370,6 @@ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - "@webassemblyjs/helper-wasm-section@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" @@ -3349,16 +3380,6 @@ "@webassemblyjs/helper-wasm-bytecode" "1.11.1" "@webassemblyjs/wasm-gen" "1.11.1" -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/ieee754@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" @@ -3366,13 +3387,6 @@ dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - "@webassemblyjs/leb128@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" @@ -3380,23 +3394,11 @@ dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== - dependencies: - "@xtuc/long" "4.2.2" - "@webassemblyjs/utf8@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== - "@webassemblyjs/wasm-edit@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" @@ -3411,20 +3413,6 @@ "@webassemblyjs/wasm-parser" "1.11.1" "@webassemblyjs/wast-printer" "1.11.1" -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - "@webassemblyjs/wasm-gen@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" @@ -3436,17 +3424,6 @@ "@webassemblyjs/leb128" "1.11.1" "@webassemblyjs/utf8" "1.11.1" -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - "@webassemblyjs/wasm-opt@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" @@ -3457,16 +3434,6 @@ "@webassemblyjs/wasm-gen" "1.11.1" "@webassemblyjs/wasm-parser" "1.11.1" -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wasm-parser@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" @@ -3479,30 +3446,6 @@ "@webassemblyjs/leb128" "1.11.1" "@webassemblyjs/utf8" "1.11.1" -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" - "@xtuc/long" "4.2.2" - "@webassemblyjs/wast-printer@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" @@ -3511,15 +3454,6 @@ "@webassemblyjs/ast" "1.11.1" "@xtuc/long" "4.2.2" -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" - "@webpack-cli/configtest@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.1.1.tgz#9f53b1b7946a6efc2a749095a4f450e2932e8356" @@ -3561,9 +3495,9 @@ JSONStream@1.3.5, JSONStream@^1.0.4: through ">=2.2.7 <3" abab@^2.0.0, abab@^2.0.3, abab@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== abbrev@1: version "1.1.1" @@ -3636,7 +3570,12 @@ acorn-walk@^7.1.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn@^6.0.1, acorn@^6.4.1: +acorn-walk@^8.0.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^6.0.1: version "6.4.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== @@ -3646,7 +3585,7 @@ acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0: +acorn@^8.0.4, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0: version "8.7.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== @@ -3685,12 +3624,12 @@ ajv-errors@^1.0.0: resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: +ajv-keywords@^3.1.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.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.7.0: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.7.0: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3701,9 +3640,9 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv uri-js "^4.2.2" ajv@^8.0.1: - version "8.10.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d" - integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== + version "8.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -3737,7 +3676,7 @@ ansi-regex@^5.0.0, ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -3759,7 +3698,7 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@^3.0.3, anymatch@~3.1.2: +anymatch@^3.0.3: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== @@ -3772,7 +3711,7 @@ apache-md5@1.1.7: resolved "https://registry.yarnpkg.com/apache-md5/-/apache-md5-1.1.7.tgz#dcef1802700cc231d60c5e08fd088f2f9b36375a" integrity sha512-JtHjzZmJxtzfTSjsCyHgPR155HBe5WGyUyHTaEkfy46qhwCFKx1Epm6nAxgUG3WfUZP1dWhGqj9Z2NOBeZ+uBw== -aproba@^1.0.3, aproba@^1.1.1: +aproba@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== @@ -3837,7 +3776,7 @@ array-ify@^1.0.0: resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= -array-includes@^3.1.3, array-includes@^3.1.4: +array-includes@^3.1.4: version "3.1.4" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== @@ -3859,13 +3798,14 @@ array-unique@^0.3.2: integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= array.prototype.flatmap@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz#908dc82d8a406930fdf38598d51e7411d18d4446" - integrity sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA== + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" + integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.19.0" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" arrify@^1.0.1: version "1.0.1" @@ -3882,16 +3822,6 @@ asap@^2.0.0: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - asn1@~0.2.3: version "0.2.6" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" @@ -3904,14 +3834,6 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -3927,11 +3849,6 @@ astral-regex@^2.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - async-limiter@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" @@ -3987,12 +3904,12 @@ babel-jest@^26.6.3: slash "^3.0.0" babel-loader@^8.0.5: - version "8.2.3" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d" - integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw== + version "8.2.5" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" + integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ== dependencies: find-cache-dir "^3.3.1" - loader-utils "^1.4.0" + loader-utils "^2.0.0" make-dir "^3.1.0" schema-utils "^2.6.5" @@ -4074,19 +3991,24 @@ babel-preset-jest@^26.6.2: babel-plugin-jest-hoist "^26.6.2" babel-preset-current-node-syntax "^1.0.0" -backbone@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/backbone/-/backbone-1.2.3.tgz#c22cfd07fc86ebbeae61d18929ed115e999d65b9" - integrity sha1-wiz9B/yG676uYdGJKe0RXpmdZbk= +backbone@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/backbone/-/backbone-1.4.0.tgz#54db4de9df7c3811c3f032f34749a4cd27f3bd12" + integrity sha512-RLmDrRXkVdouTg38jcgHhyQ/2zjg7a8E6sz2zxfz21Hh17xDJYUHBZimVIt5fUyS8vbfpeSmTL3gUjTEvUV3qQ== dependencies: - underscore ">=1.7.0" + underscore ">=1.8.3" balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@^1.0.2, base64-js@^1.2.1, base64-js@^1.3.1: +base16@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" + integrity sha1-4pf2DX7BAUp6lxo568ipjAtoHnA= + +base64-js@^1.2.1, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -4126,37 +4048,10 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== +blacklist@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/blacklist/-/blacklist-1.1.4.tgz#b2dd09d6177625b2caa69835a37b28995fa9a2f2" + integrity sha1-st0J1hd2JbLKppg1o3somV+povI= body-parser@1.19.1: version "1.19.1" @@ -4205,7 +4100,7 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^2.3.1, braces@^2.3.2: +braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== @@ -4221,85 +4116,19 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.1, braces@~3.0.2: +braces@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - browser-process-hrtime@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@^4.14.5, browserslist@^4.17.5, browserslist@^4.19.1: +browserslist@^4.14.5, browserslist@^4.17.5, browserslist@^4.20.2: version "4.20.2" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.2.tgz#567b41508757ecd904dab4d1c646c612cd3d4f88" integrity sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA== @@ -4334,20 +4163,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== -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - buffer@^5.5.0, buffer@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" @@ -4356,11 +4171,6 @@ buffer@^5.5.0, buffer@^5.6.0: base64-js "^1.3.1" ieee754 "^1.1.13" -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - builtins@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" @@ -4391,27 +4201,6 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - cacache@^15.0.5, cacache@^15.2.0: version "15.3.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" @@ -4518,15 +4307,15 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0: +camelcase@^6.0.0, camelcase@^6.2.0: version "6.3.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001317: - version "1.0.30001319" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001319.tgz#eb4da4eb3ecdd409f7ba1907820061d56096e88f" - integrity sha512-xjlIAFHucBRSMUo1kb5D4LYgcN1M45qdKP++lhqowDpwJwGkpIRTt5qQqnhxjj1vHcI7nrJxWhCC1ATrCEBTcw== + version "1.0.30001332" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz#39476d3aa8d83ea76359c70302eafdd4a1d727dd" + integrity sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw== capture-exit@^2.0.0: version "2.0.0" @@ -4572,41 +4361,7 @@ child_process@~1.0.2: resolved "https://registry.yarnpkg.com/child_process/-/child_process-1.0.2.tgz#b1f7e7fc73d25e7fd1d455adc94e143830182b5a" integrity sha1-sffn/HPSXn/R1FWtyU4UODAYK1o= -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.4.1: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.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" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^1.1.1, chownr@^1.1.4: +chownr@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== @@ -4626,14 +4381,6 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - cjs-module-lexer@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" @@ -4693,15 +4440,6 @@ clipanion@3.1.0: dependencies: typanion "^3.3.1" -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -4776,7 +4514,7 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.9.0: +color-convert@^1.9.0, color-convert@^1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -4795,11 +4533,27 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-string@^1.6.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.0.tgz#63b6ebd1bec11999d1df3a79a7569451ac2be8aa" + integrity sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== + dependencies: + color-convert "^1.9.3" + color-string "^1.6.0" + colorette@^2.0.14, colorette@^2.0.16: version "2.0.16" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" @@ -4825,11 +4579,6 @@ commander@2.17.x: resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== -commander@>=7.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-9.1.0.tgz#a6b263b2327f2e188c6402c42623327909f2dbec" - integrity sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w== - commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -4840,7 +4589,7 @@ commander@^6.2.0: resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== -commander@^7.0.0: +commander@^7.0.0, commander@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== @@ -4917,16 +4666,6 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - concat-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" @@ -4945,21 +4684,11 @@ config-chain@^1.1.12: ini "^1.3.4" proto-list "~1.2.1" -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - content-disposition@0.5.4: version "0.5.4" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" @@ -5084,35 +4813,23 @@ cookies@0.8.0: depd "~2.0.0" keygrip "~1.1.0" -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= core-js-compat@^3.20.2, core-js-compat@^3.21.0: - version "3.21.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.1.tgz#cac369f67c8d134ff8f9bd1623e3bc2c42068c82" - integrity sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g== + version "3.22.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.1.tgz#47b9c5e79efbf13935f637449fa1cdec8cd9515f" + integrity sha512-CWbNqTluLMvZg1cjsQUbGiCM91dobSHKfDIyCoxuqxthdjGuUlaMbCsSehP3CBiVvG0C7P6UIrC1v0hgFE75jw== dependencies: - browserslist "^4.19.1" + browserslist "^4.20.2" semver "7.0.0" core-js-pure@^3.6.5: - version "3.21.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51" - integrity sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ== + version "3.22.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.22.1.tgz#4d94e0c9a7b710da20dadd727fe98b43543119f0" + integrity sha512-TChjCtgcMDc8t12RiwAsThjqrS/VpBlEvDgL009ot4HESzBo3h2FSZNa6ZS1nWKZEPDoulnszxUll9n0/spflQ== core-util-is@1.0.2: version "1.0.2" @@ -5153,36 +4870,13 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== +create-react-class@^15.6.2: + version "15.7.0" + resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.7.0.tgz#7499d7ca2e69bb51d13faf59bd04f0c65a1d6c1e" + integrity sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng== dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" + loose-envify "^1.3.1" + object-assign "^4.1.1" cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" @@ -5204,29 +4898,12 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - crypto@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/crypto/-/crypto-1.0.1.tgz#2af1b7cad8175d24c8a1b0778255794a21803037" integrity sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig== -css-loader@^5.0.0, css-loader@^5.0.1: +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== @@ -5242,6 +4919,24 @@ css-loader@^5.0.0, css-loader@^5.0.1: schema-utils "^3.0.0" semver "^7.3.5" +css-loader@~5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.0.2.tgz#24f758dae349bad0a440c50d7e2067742e0899cb" + integrity sha512-gbkBigdcHbmNvZ1Cg6aV6qh6k9N6XOr8YWzISLQGrwk2mgOH8LLrizhkxbDhQtaLtktyKHD4970S0xwz5btfTA== + dependencies: + camelcase "^6.2.0" + cssesc "^3.0.0" + icss-utils "^5.1.0" + loader-utils "^2.0.0" + postcss "^8.2.4" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + 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.4" + cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" @@ -5269,20 +4964,20 @@ csstype@3.0.10: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5" integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA== -csstype@^3.0.2, csstype@~3.0.3: +csstype@^3.0.10, csstype@^3.0.2, csstype@~3.0.3: version "3.0.11" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33" integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw== -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= +d3-color@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" + integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== -d3-format@^1.3.0: - version "1.4.5" - resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.5.tgz#374f2ba1320e3717eb74a9356c67daee17a7edb4" - integrity sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ== +d3-format@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" + integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== d@1, d@^1.0.1: version "1.0.1" @@ -5327,10 +5022,10 @@ dateformat@^3.0.0: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== -dayjs@1.10.8: - version "1.10.8" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.8.tgz#267df4bc6276fcb33c04a6735287e3f429abec41" - integrity sha512-wbNwDfBHHur9UOzNUjeKUOJ0fCb0a52Wx0xInmQ7Y8FstyajiV1NmK1e00cxsr9YrE9r7yAChE0VvpuY5Rnlow== +dayjs@1.11.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.0.tgz#009bf7ef2e2ea2d5db2e6583d2d39a4b5061e805" + integrity sha512-JLC809s6Y948/FuCZPm5IX8rRhQwOiyMb2TfVVQEixG7P8Lm/gt5S7yoQZmC8x1UehI9Pb7sksEt4xx14m+7Ug== debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" @@ -5448,11 +5143,12 @@ deferred-leveldown@~5.3.0: inherits "^2.0.3" define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== dependencies: - object-keys "^1.0.12" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" define-property@^0.2.5: version "0.2.5" @@ -5506,24 +5202,11 @@ deprecation@^2.0.0, deprecation@^2.3.1: resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - detect-indent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" @@ -5540,9 +5223,9 @@ detect-newline@3.1.0, detect-newline@^3.0.0: integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== dezalgo@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" - integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= + version "1.0.4" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" + integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== dependencies: asap "^2.0.0" wrappy "1" @@ -5552,15 +5235,6 @@ diff-sequences@^26.6.2: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -5590,9 +5264,9 @@ dom-helpers@^3.4.0: "@babel/runtime" "^7.1.2" dom-serializer@^1.0.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== dependencies: domelementtype "^2.0.1" domhandler "^4.2.0" @@ -5603,15 +5277,10 @@ dom4@^2.1.5: resolved "https://registry.yarnpkg.com/dom4/-/dom4-2.1.6.tgz#c90df07134aa0dbd81ed4d6ba1237b36fc164770" integrity sha512-JkCVGnN4ofKGbjf5Uvc8mmxaATIErKQKSgACdBXpsQ3fY6DlIpAyWfiBSrGkttATssbDCp3psiAKWXk5gmjycA== -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" - integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== domexception@^1.0.1: version "1.0.1" @@ -5667,21 +5336,11 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -duplexer@^0.1.1: +duplexer@^0.1.1, duplexer@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - duplicate-package-checker-webpack-plugin@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/duplicate-package-checker-webpack-plugin/-/duplicate-package-checker-webpack-plugin-3.0.0.tgz#78bb89e625fa7cf8c2a59c53f62b495fda9ba287" @@ -5713,33 +5372,15 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.4.84: - version "1.4.89" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.89.tgz#33c06592812a17a7131873f4596579084ce33ff8" - integrity sha512-z1Axg0Fu54fse8wN4fd+GAINdU5mJmLtcl6bqIcYyzNVGONcfHAeeJi88KYMQVKalhXlYuVPzKkFIU5VD0raUw== - -elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" + version "1.4.116" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.116.tgz#cf0b106d462a78e43ef33cc269caf2ad70e3c7a8" + integrity sha512-sy2ol5DTH0sy8xvAglyHFxsNFXFsOBfa6rGmrtjiSdQOp53ossspduOzU+5Lx23H7GxEjjvtSF36XqkajV6Z5A== emittery@^0.7.1: version "0.7.2" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -5772,26 +5413,17 @@ encoding@^0.1.12: dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" - integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - enhanced-resolve@^5.9.2: - version "5.9.2" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz#0224dcd6a43389ebfb2d55efee517e5466772dd9" - integrity sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA== + version "5.9.3" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88" + integrity sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -5823,7 +5455,7 @@ err-code@^2.0.2: resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== -errno@^0.1.3, errno@~0.1.1, errno@~0.1.7: +errno@~0.1.1: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== @@ -5837,10 +5469,10 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.19.0, es-abstract@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" - integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== +es-abstract@^1.19.1, es-abstract@^1.19.2: + version "1.19.5" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.5.tgz#a2cb01eb87f724e815b278b0dd0d00f36ca9a7f1" + integrity sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA== dependencies: call-bind "^1.0.2" es-to-primitive "^1.2.1" @@ -5848,15 +5480,15 @@ es-abstract@^1.19.0, es-abstract@^1.19.1: get-intrinsic "^1.1.1" get-symbol-description "^1.0.0" has "^1.0.3" - has-symbols "^1.0.2" + has-symbols "^1.0.3" internal-slot "^1.0.3" is-callable "^1.2.4" - is-negative-zero "^2.0.1" + is-negative-zero "^2.0.2" is-regex "^1.1.4" - is-shared-array-buffer "^1.0.1" + is-shared-array-buffer "^1.0.2" is-string "^1.0.7" - is-weakref "^1.0.1" - object-inspect "^1.11.0" + is-weakref "^1.0.2" + object-inspect "^1.12.0" object-keys "^1.1.1" object.assign "^4.1.2" string.prototype.trimend "^1.0.4" @@ -5868,6 +5500,13 @@ es-module-lexer@^0.9.0: resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -5878,9 +5517,9 @@ es-to-primitive@^1.2.1: is-symbol "^1.0.2" es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: - version "0.10.59" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.59.tgz#71038939730eb6f4f165f1421308fb60be363bc6" - integrity sha512-cOgyhW0tIJyQY1Kfw6Kr0viu9ZlUctVchRMZ7R0HiH3dxTSp5zJDLecwxUqPUrGKMsgBI1wd1FL+d9Jxfi4cLw== + version "0.10.61" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.61.tgz#311de37949ef86b6b0dcea894d1ffedb909d3269" + integrity sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA== dependencies: es6-iterator "^2.0.3" es6-symbol "^3.1.3" @@ -6027,14 +5666,6 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" @@ -6105,11 +5736,6 @@ eslint@^7.10.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -esm@^3.2.25: - version "3.2.25" - resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" - integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== - espree@^7.3.0, espree@^7.3.1: version "7.3.1" resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" @@ -6136,7 +5762,7 @@ esquery@^1.4.0: dependencies: estraverse "^5.1.0" -esrecurse@^4.1.0, esrecurse@^4.3.0: +esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== @@ -6176,18 +5802,17 @@ eventemitter3@^4.0.4: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.0.0, events@^3.2.0: +events@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== +exec-sh@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" + integrity sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw== dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" + merge "^1.2.0" exec-sh@^0.3.2: version "0.3.6" @@ -6255,13 +5880,6 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - expect@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" @@ -6476,11 +6094,6 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -6495,13 +6108,13 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-loader@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" - integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== +file-loader@^6.2.0, file-loader@~6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== dependencies: - loader-utils "^1.2.3" - schema-utils "^2.5.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" file-loader@~6.0.0: version "6.0.0" @@ -6511,11 +6124,6 @@ file-loader@~6.0.0: loader-utils "^2.0.0" schema-utils "^2.6.5" -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -6551,15 +6159,6 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - 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" @@ -6581,13 +6180,6 @@ find-up@^2.0.0: dependencies: locate-path "^2.0.0" -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -6596,16 +6188,6 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -findup-sync@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -6624,14 +6206,6 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -6682,14 +6256,6 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - fs-extra@^9.0.1, fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" @@ -6714,30 +6280,12 @@ fs-minipass@^2.0.0, fs-minipass@^2.1.0: dependencies: minipass "^3.0.0" -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@^2.1.2, fsevents@~2.3.2: +fsevents@^2.1.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -6752,6 +6300,11 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -6922,15 +6475,7 @@ gitconfiglocal@^1.0.0: dependencies: ini "^1.3.2" -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.1.1, glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -6977,42 +6522,6 @@ glob@~7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -7069,9 +6578,9 @@ got@^9.6.0: url-parse-lax "^3.0.0" graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.9: - version "4.2.9" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" - integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== growly@^1.3.0: version "1.3.0" @@ -7083,6 +6592,13 @@ gud@^1.0.0: resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + handlebars@4.7.7, handlebars@^4.7.7: version "4.7.7" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" @@ -7119,9 +6635,9 @@ harmony-reflect@^1.4.6: integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== has-flag@^3.0.0: version "3.0.0" @@ -7133,6 +6649,13 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" @@ -7188,44 +6711,11 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - he@1.2.x: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -7341,12 +6831,7 @@ http-status-codes@2.2.0: resolved "https://registry.yarnpkg.com/http-status-codes/-/http-status-codes-2.2.0.tgz#bb2efe63d941dfc2be18e15f703da525169622be" integrity sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng== -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -https-proxy-agent@5.0.0, https-proxy-agent@^5.0.0: +https-proxy-agent@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== @@ -7354,6 +6839,14 @@ https-proxy-agent@5.0.0, https-proxy-agent@^5.0.0: agent-base "6" debug "4" +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" @@ -7414,16 +6907,11 @@ identity-obj-proxy@^3.0.0: dependencies: harmony-reflect "^1.4.6" -ieee754@^1.1.13, ieee754@^1.1.4: +ieee754@^1.1.13: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - ignore-walk@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" @@ -7462,14 +6950,6 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - import-local@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" @@ -7488,7 +6968,7 @@ indent-string@^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.3, infer-owner@^1.0.4: +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== @@ -7501,22 +6981,12 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== @@ -7562,11 +7032,6 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" -interpret@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - interpret@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" @@ -7614,6 +7079,11 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -7621,20 +7091,6 @@ is-bigint@^1.0.1: dependencies: has-bigints "^1.0.1" -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - is-boolean-object@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" @@ -7661,9 +7117,9 @@ is-ci@^2.0.0: ci-info "^2.0.0" is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" - integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== dependencies: has "^1.0.3" @@ -7728,7 +7184,7 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" -is-extglob@^2.1.0, is-extglob@^2.1.1: +is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= @@ -7740,11 +7196,6 @@ is-fullwidth-code-point@^1.0.0: dependencies: number-is-nan "^1.0.0" -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -7755,14 +7206,7 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -7774,15 +7218,15 @@ is-lambda@^1.0.1: resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" integrity sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU= -is-negative-zero@^2.0.1: +is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== dependencies: has-tostringtag "^1.0.0" @@ -7853,10 +7297,12 @@ is-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= -is-shared-array-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" - integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" is-ssh@^1.3.0: version "1.4.0" @@ -7906,23 +7352,18 @@ is-unicode-supported@^0.1.0: resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== -is-weakref@^1.0.1: +is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: call-bind "^1.0.2" -is-windows@^1.0.1, is-windows@^1.0.2: +is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" @@ -7930,7 +7371,7 @@ is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -7953,9 +7394,9 @@ isobject@^3.0.0, isobject@^3.0.1: integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= isomorphic.js@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/isomorphic.js/-/isomorphic.js-0.2.4.tgz#24ca374163ae54a7ce3b86ce63b701b91aa84969" - integrity sha512-Y4NjZceAwaPXctwsHgNsmfuPxR8lJ3f8X7QTAkhltrX4oGIv+eTlgHLXn4tWysC9zGTi929gapnPp+8F8cg7nA== + version "0.2.5" + resolved "https://registry.yarnpkg.com/isomorphic.js/-/isomorphic.js-0.2.5.tgz#13eecf36f2dba53e85d355e11bf9d4208c6f7f88" + integrity sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw== isstream@~0.1.2: version "0.1.2" @@ -7978,9 +7419,9 @@ istanbul-lib-instrument@^4.0.3: semver "^6.3.0" istanbul-lib-instrument@^5.0.4: - version "5.1.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" - integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== + version "5.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" + integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== dependencies: "@babel/core" "^7.12.3" "@babel/parser" "^7.14.7" @@ -8418,14 +7859,7 @@ jest@^26.4.2: import-local "^3.0.2" jest-cli "^26.6.3" -jquery-ui@^1.12.1: - version "1.13.2" - resolved "https://registry.yarnpkg.com/jquery-ui/-/jquery-ui-1.13.2.tgz#de03580ae6604773602f8d786ad1abfb75232034" - integrity sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q== - dependencies: - jquery ">=1.8.0 <4.0.0" - -"jquery@>=1.8.0 <4.0.0", jquery@^3.1.1: +jquery@^3.1.1: version "3.6.0" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470" integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw== @@ -8591,7 +8025,7 @@ json-to-html@~0.1.2: resolved "https://registry.yarnpkg.com/json-to-html/-/json-to-html-0.1.2.tgz#7a095ae4a34b33534aad0970ca4b7417b2c11ee3" integrity sha1-egla5KNLM1NKrQlwykt0F7LBHuM= -json5@2.x, json5@^2.1.1, json5@^2.1.2: +json5@2.x, json5@^2.1.1, json5@^2.1.2, json5@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== @@ -8649,11 +8083,11 @@ jsprim@^1.2.2: verror "1.10.0" "jsx-ast-utils@^2.4.1 || ^3.0.0": - version "3.2.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" - integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== + version "3.2.2" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz#6ab1e52c71dfc0c0707008a91729a9491fe9f76c" + integrity sha512-HDAyJ4MNQBboGpUnHAVUNJs6X0lh058s6FuixsFGP7MgJYpD6Vasd6nzSG5iIfXu1zAYlHJ/zsOKNlrenTUBnw== dependencies: - array-includes "^3.1.3" + array-includes "^3.1.4" object.assign "^4.1.2" jwa@^1.4.1: @@ -8848,10 +8282,10 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -lib0@^0.2.31, lib0@^0.2.42, lib0@^0.2.43: - version "0.2.47" - resolved "https://registry.yarnpkg.com/lib0/-/lib0-0.2.47.tgz#54488e97ba273bda432e8d0d987f90c2fa95fb90" - integrity sha512-RXprIyaflw7OmFNMpb8HmvDhuRVUFXYCXrmynQN8OGbGevgMx9u6tjQG/yB0dOoDcuB1XXgqFn8Oy3RlKF/Qhg== +lib0@^0.2.31, lib0@^0.2.42, lib0@^0.2.49: + version "0.2.51" + resolved "https://registry.yarnpkg.com/lib0/-/lib0-0.2.51.tgz#23b1271a26f39120a4d0f86b9dfb44577f5ce98c" + integrity sha512-05Erb3465CxJa38LQlMz4EbetNvRna1S3BzqEjC0/pmp5cQuQSfNNmeS0722Wev1dRlMUp2Cql0gQ55krSXf2Q== dependencies: isomorphic.js "^0.2.4" @@ -8944,17 +8378,12 @@ load-json-file@^6.2.0: strip-bom "^4.0.0" type-fest "^0.6.0" -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - loader-runner@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" - integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== + version "4.3.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.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: +loader-utils@^1.0.0, loader-utils@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== @@ -8980,14 +8409,6 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -9007,6 +8428,11 @@ lodash._reinterpolate@^3.0.0: resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= +lodash.curry@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170" + integrity sha1-JI42By7ekGUB11lmIAqG2riyMXA= + lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -9087,7 +8513,7 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= -lodash@4, lodash@4.17.21, lodash@4.x, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.4, lodash@^4.7.0: +lodash@4, lodash@4.17.21, lodash@4.x, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -9110,7 +8536,7 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -9150,13 +8576,6 @@ lru-cache@6.0.0, lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - lru-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" @@ -9181,7 +8600,7 @@ lunr-mutable-indexes@2.3.2: resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== -make-dir@^2.0.0, make-dir@^2.1.0: +make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== @@ -9309,25 +8728,6 @@ marked@^2.0.0: resolved "https://registry.yarnpkg.com/marked/-/marked-2.1.3.tgz#bd017cef6431724fd4b27e0657f5ceb14bff3753" integrity sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA== -mathjax-full@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/mathjax-full/-/mathjax-full-3.2.0.tgz#e53269842a943d4df10502937518991268996c5c" - integrity sha512-D2EBNvUG+mJyhn+M1C858k0f2Fc4KxXvbEX2WCMXroV10212JwfYqaBJ336ECBSz5X9L5LRoamxb7AJtg3KaJA== - dependencies: - esm "^3.2.25" - mhchemparser "^4.1.0" - mj-context-menu "^0.6.1" - speech-rule-engine "^3.3.3" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -9347,22 +8747,6 @@ memoizee@0.4.15: next-tick "^1.1.0" timers-ext "^0.1.7" -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" @@ -9400,17 +8784,17 @@ merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +merge@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" + integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== + methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -mhchemparser@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/mhchemparser/-/mhchemparser-4.1.1.tgz#a2142fdab37a02ec8d1b48a445059287790becd5" - integrity sha512-R75CUN6O6e1t8bgailrF1qPq+HhVeFTM3XQ0uzI+mXTybmphy3b6h4NbLOYhemViQ3lUs+6CKRkC3Ws1TlYREA== - -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: +micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -9430,20 +8814,12 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: to-regex "^3.0.2" micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" + braces "^3.0.2" + picomatch "^2.3.1" mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" @@ -9467,11 +8843,6 @@ mime@3.0.0: resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== -mime@^2.0.3: - version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -9487,6 +8858,16 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== +mini-css-extract-plugin@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" + integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + 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" @@ -9496,16 +8877,6 @@ mini-css-extract-plugin@~1.3.2: schema-utils "^3.0.0" webpack-sources "^1.1.0" -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - "minimatch@2 || 3", minimatch@^3.0.4, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -9536,7 +8907,7 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.0: +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.0: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== @@ -9618,22 +8989,6 @@ minizlib@^2.0.0, minizlib@^2.1.1: minipass "^3.0.0" yallist "^4.0.0" -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.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" @@ -9642,11 +8997,6 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mj-context-menu@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/mj-context-menu/-/mj-context-menu-0.6.1.tgz#a043c5282bf7e1cf3821de07b13525ca6f85aa69" - integrity sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA== - mkdirp-infer-owner@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" @@ -9661,12 +9011,12 @@ mkdirp@1.0.4, mkdirp@1.x, mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== +mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: - minimist "^1.2.5" + minimist "^1.2.6" modify-values@^1.0.0: version "1.0.1" @@ -9674,21 +9024,14 @@ modify-values@^1.0.0: integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== moment@^2.24.0: - version "2.29.4" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" - integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== + version "2.29.3" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.3.tgz#edd47411c322413999f7a5940d526de183c031f3" + integrity sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw== -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" +mrmime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.0.tgz#14d387f0585a5233d291baba339b063752a2398b" + integrity sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ== ms@2.0.0: version "2.0.0" @@ -9730,15 +9073,10 @@ mv@2.1.1: ncp "~2.0.0" rimraf "~2.4.0" -nan@^2.12.1: - version "2.15.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" - integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== - nanoid@^3.1.23, nanoid@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" - integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== + version "3.3.3" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== nanomatch@^1.2.9: version "1.2.13" @@ -9777,7 +9115,7 @@ negotiator@0.6.3, negotiator@^0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: +neo-async@^2.6.0, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -9849,35 +9187,6 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - node-notifier@^8.0.0: version "8.0.2" resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" @@ -9891,9 +9200,9 @@ node-notifier@^8.0.0: which "^2.0.2" node-releases@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" - integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== + version "2.0.3" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.3.tgz#225ee7488e4a5e636da8da52854844f9d716ca96" + integrity sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw== nopt@^4.0.1: version "4.0.3" @@ -9937,11 +9246,21 @@ normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0, normalize-path@~3.0.0: +normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + normalize-url@^4.1.0: version "4.5.1" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" @@ -9957,6 +9276,11 @@ normalize.css@^8.0.1: resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3" integrity sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg== +nouislider@15.4.0: + version "15.4.0" + resolved "https://registry.yarnpkg.com/nouislider/-/nouislider-15.4.0.tgz#ac0d988e9ba59366062e5712e7cd37eb2e48630d" + integrity sha512-AV7UMhGhZ4Mj6ToMT812Ib8OJ4tAXR2/Um7C4l4ZvvsqujF0WpQTpqqHJ+9xt4174R7ueQOUrBR4yakJpAIPCA== + npm-bundled@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" @@ -10099,7 +9423,7 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -10113,7 +9437,7 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.11.0: +object-inspect@^1.12.0: version "1.12.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== @@ -10131,7 +9455,7 @@ object-is@^1.0.1: call-bind "^1.0.2" define-properties "^1.1.3" -object-keys@^1.0.12, object-keys@^1.1.1: +object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -10235,6 +9559,11 @@ opencollective-postinstall@^2.0.2: resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== +opener@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -10259,11 +9588,6 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -10309,7 +9633,7 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.2: +p-limit@^2.2.0, p-limit@^2.2.2: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -10330,13 +9654,6 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -10433,20 +9750,6 @@ pacote@^11.2.6: ssri "^8.0.1" tar "^6.1.0" -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - param-case@2.1.x: version "2.1.1" resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" @@ -10461,17 +9764,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -10495,11 +9787,6 @@ parse-ms@^2.1.0: resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d" integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA== -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - parse-path@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.4.tgz#4bf424e6b743fb080831f03b536af9fc43f0ffea" @@ -10545,21 +9832,11 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - path-browserify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -10607,17 +9884,6 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -10628,7 +9894,7 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: +picomatch@^2.0.4, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -10681,13 +9947,6 @@ pirates@^4.0.1: resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" @@ -10751,9 +10010,9 @@ postcss-modules-values@^4.0.0: icss-utils "^5.0.0" postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: - version "6.0.9" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" - integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== + version "6.0.10" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" + integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -10763,7 +10022,7 @@ postcss-value-parser@^4.1.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.2.15, postcss@^8.3.11: +postcss@^8.2.15, postcss@^8.2.4, postcss@^8.3.11: version "8.4.12" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905" integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg== @@ -10782,6 +10041,11 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + prepend-http@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" @@ -10879,7 +10143,7 @@ promzard@^0.3.0: dependencies: read "1" -prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.0, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -10921,26 +10185,6 @@ psl@^1.1.24, psl@^1.1.28, psl@^1.1.33: resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -10949,21 +10193,12 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@^1.2.4, punycode@^1.4.1: +punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= @@ -11000,6 +10235,14 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + query-string@^6.13.8: version "6.14.1" resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" @@ -11010,11 +10253,6 @@ query-string@^6.13.8: split-on-first "^1.0.0" strict-uri-encode "^2.0.0" -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" @@ -11040,21 +10278,13 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: +randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -11080,7 +10310,7 @@ raw-body@2.4.3: iconv-lite "0.4.24" unpipe "1.0.0" -raw-loader@~4.0.0: +raw-loader@^4.0.2, 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== @@ -11098,6 +10328,18 @@ rc@^1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" +react-base16-styling@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/react-base16-styling/-/react-base16-styling-0.8.2.tgz#6bc97045b0f8c42d14857097d62b9017666aa5b9" + integrity sha512-5bxHCNKT/FfU9yMzNB/CaCQLGqZ/Nr4FnaIRJUTkwwPTRaCfYAP+/3opeQb61XvesmofJ4FloTSYW9aw1tMXqQ== + dependencies: + "@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" + react-dom@^17.0.1: version "17.0.2" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" @@ -11107,6 +10349,16 @@ react-dom@^17.0.1: object-assign "^4.1.1" scheduler "^0.20.2" +react-highlighter@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/react-highlighter/-/react-highlighter-0.4.3.tgz#e32c84d053259c30ca72c615aa759036d0d23048" + integrity sha512-dwItRaGRHBceuzZd5NXeroapdmZ2JCAWZ3AdwdthRlSkdtPCY18DWrd6mPmiMCfSB6lgVwwCPQl4unZzG5sXXw== + dependencies: + blacklist "^1.1.4" + create-react-class "^15.6.2" + escape-string-regexp "^1.0.5" + prop-types "^15.6.0" + react-is@^16.13.1, react-is@^16.9.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -11117,6 +10369,15 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-json-tree@^0.15.0: + version "0.15.2" + resolved "https://registry.yarnpkg.com/react-json-tree/-/react-json-tree-0.15.2.tgz#581f48bc8e925fc2d3802dd6c9075570666b358a" + integrity sha512-Fi5BMgpZbqujagMQ4OavtK6k4RhaoU/zFoJeK331/UdsBEXKFs3VosfvOc1JS/oyB21I1MKu8bwMkOXODePBCg== + dependencies: + "@types/prop-types" "^15.7.4" + prop-types "^15.8.0" + react-base16-styling "^0.8.2" + react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" @@ -11248,7 +10509,16 @@ read@1, read@~1.0.1: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.4.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^2.0.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -11261,15 +10531,6 @@ read@1, read@~1.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - readdir-scoped-modules@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" @@ -11280,22 +10541,6 @@ readdir-scoped-modules@^1.0.0: graceful-fs "^4.1.2" once "^1.3.0" -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - recast@~0.11.12: version "0.11.23" resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" @@ -11338,10 +10583,10 @@ regenerator-runtime@^0.13.4: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== +regenerator-transform@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" + integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== dependencies: "@babel/runtime" "^7.8.4" @@ -11354,12 +10599,13 @@ regex-not@^1.0.0, regex-not@^1.0.2: safe-regex "^1.1.0" regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" - integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" + functions-have-names "^1.2.2" regexpp@^3.1.0: version "3.2.0" @@ -11517,13 +10763,6 @@ resize-observer-polyfill@^1.5.1: resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -11531,14 +10770,6 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -11611,7 +10842,7 @@ rfdc@^1.3.0: resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== -rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: +rimraf@^2.6.1, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -11632,14 +10863,6 @@ rimraf@~2.4.0: dependencies: glob "^6.0.1" -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - rsvp@^4.8.4: version "4.8.5" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" @@ -11662,13 +10885,6 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - rxjs@^6.6.0: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" @@ -11688,7 +10904,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -11720,6 +10936,18 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" +sanitize-html@^2.3: + version "2.7.0" + resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.7.0.tgz#e106205b468aca932e2f9baf241f24660d34e279" + integrity sha512-jfQelabOn5voO7FAfnQF7v+jsA6z9zC/O4ec0z3E35XPEtHYJT/OdUziVWlKW4irCr2kXaQAyXTXDHWAibg1tA== + dependencies: + deepmerge "^4.2.2" + escape-string-regexp "^4.0.0" + htmlparser2 "^6.0.0" + is-plain-object "^5.0.0" + parse-srcset "^1.0.2" + postcss "^8.3.11" + sanitize-html@~2.5.3: version "2.5.3" resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.5.3.tgz#91aa3dc760b072cdf92f9c6973747569b1ba1cd8" @@ -11763,7 +10991,7 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.5.0, schema-utils@^2.6.5: +schema-utils@^2.6.5: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== @@ -11796,13 +11024,20 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@7.3.5, semver@7.x, semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: +semver@7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: lru-cache "^6.0.0" +semver@7.x, semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" @@ -11827,13 +11062,6 @@ send@0.17.2: range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - serialize-javascript@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" @@ -11873,24 +11101,11 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" @@ -11946,6 +11161,13 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + simulate-event@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/simulate-event/-/simulate-event-1.4.0.tgz#7f8a404116280bcbfe26347ddbcbffe5bd2be00e" @@ -11953,6 +11175,15 @@ simulate-event@~1.4.0: dependencies: xtend "^4.0.1" +sirv@^1.0.7: + version "1.0.19" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.19.tgz#1d73979b38c7fe91fcba49c85280daa9c2363b49" + integrity sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ== + dependencies: + "@polka/url" "^1.0.0-next.20" + mrmime "^1.0.0" + totalist "^1.0.0" + sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -12031,15 +11262,15 @@ socks-proxy-agent@^5.0.0: socks "^2.3.3" socks-proxy-agent@^6.0.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz#e664e8f1aaf4e1fb3df945f09e3d94f911137f87" - integrity sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew== + version "6.2.0" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz#f6b5229cc0cbd6f2f202d9695f09d871e951c85e" + integrity sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ== dependencies: agent-base "^6.0.2" - debug "^4.3.1" - socks "^2.6.1" + debug "^4.3.3" + socks "^2.6.2" -socks@^2.3.3, socks@^2.6.1: +socks@^2.3.3, socks@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.2.tgz#ec042d7960073d40d94268ff3bb727dc685f111a" integrity sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA== @@ -12055,6 +11286,13 @@ sonic-boom@^1.0.2: atomic-sleep "^1.0.0" flatstr "^1.0.12" +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + sort-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" @@ -12107,7 +11345,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.20: +source-map-support@^0.5.6, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -12161,15 +11399,6 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== -speech-rule-engine@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/speech-rule-engine/-/speech-rule-engine-3.3.3.tgz#781ed03cbcf3279f94d1d80241025ea954c6d571" - integrity sha512-0exWw+0XauLjat+f/aFeo5T8SiDsO1JtwpY3qgJE4cWt+yL/Stl0WP4VNDWdh7lzGkubUD9lWP4J1ASnORXfyQ== - dependencies: - commander ">=7.0.0" - wicked-good-xpath "^1.3.0" - xmldom-sre "^0.1.31" - split-on-first@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" @@ -12216,13 +11445,6 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== - dependencies: - figgy-pudding "^3.5.1" - ssri@^8.0.0, ssri@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" @@ -12267,37 +11489,10 @@ steno@^0.4.1: dependencies: graceful-fs "^4.1.3" -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= strict-uri-encode@^2.0.0: version "2.0.0" @@ -12335,15 +11530,6 @@ string-width@^1.0.1: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - string.prototype.matchall@^4.0.6: version "4.0.7" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" @@ -12383,7 +11569,7 @@ string.prototype.trimstart@^1.0.4: call-bind "^1.0.2" define-properties "^1.1.3" -string_decoder@^1.0.0, string_decoder@^1.1.1: +string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -12413,7 +11599,7 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: +strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -12488,13 +11674,6 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - supports-color@^7.0.0, supports-color@^7.1.0, supports-color@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -12522,6 +11701,14 @@ 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@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/svg-url-loader/-/svg-url-loader-7.1.1.tgz#0cbdb30beb8679cb060c12eaf30085747fa7591f" + integrity sha512-NlsMCePODm7FQhU9aEZyGLPx5Xe1QRI1cSEUE6vTq5LJc9l9pStagvXoEIyZ9O3r00w6G3+Wbkimb+SC3DI/Aw== + dependencies: + file-loader "~6.2.0" + loader-utils "~2.0.0" + 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" @@ -12546,11 +11733,6 @@ table@^6.0.9: string-width "^4.2.3" strip-ansi "^6.0.1" -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" @@ -12605,21 +11787,6 @@ terminal-link@^2.0.0: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" -terser-webpack-plugin@^1.4.3: - version "1.4.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" - integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.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" @@ -12646,15 +11813,6 @@ terser-webpack-plugin@^5.1.3: source-map "^0.6.1" terser "^5.7.2" -terser@^4.1.2: - version "4.8.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" - integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - terser@^5.3.4, terser@^5.7.2: version "5.12.1" resolved "https://registry.yarnpkg.com/terser/-/terser-5.12.1.tgz#4cf2ebed1f5bceef5c83b9f60104ac4a78b49e9c" @@ -12709,13 +11867,6 @@ through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8, resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - timers-ext@^0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" @@ -12736,11 +11887,6 @@ tmpl@1.0.5: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -12795,6 +11941,11 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== +totalist@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" + integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== + tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" @@ -12891,11 +12042,6 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -12909,9 +12055,9 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= typanion@^3.3.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/typanion/-/typanion-3.7.1.tgz#5fceb57a2fa0c0a5beca25a7e90ac2a420863709" - integrity sha512-g2QDI/ZLpuEor9EnJ1b7s9S2QSJgNCPBw9ZCSkQdqXNjg5ZQs4mASgW/elVifSxISFwBeMaIAmMBP5luAOIKAw== + version "3.7.2" + resolved "https://registry.yarnpkg.com/typanion/-/typanion-3.7.2.tgz#9e9a8df20aa663b323cc31b9b07ed84f24c61346" + integrity sha512-xUnYo0tfvGdfLfPQje+suHvqZhjKzKgOp4VePnnHJzGcK8BmdgbeSC3GXdSfFGZrWAdtiQCRrZtHEZTylX1h1w== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" @@ -13019,9 +12165,9 @@ uglify-js@3.4.x: source-map "~0.6.1" uglify-js@^3.1.4: - version "3.15.3" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.15.3.tgz#9aa82ca22419ba4c0137642ba0df800cb06e0471" - integrity sha512-6iCVm2omGJbsu3JWac+p6kUiOpg3wFO2f8lIXjfEb8RrmLjzog1wTPMmwKB7swfzzqxj9YM+sGUM++u1qN4qJg== + version "3.15.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.15.4.tgz#fa95c257e88f85614915b906204b9623d4fa340d" + integrity sha512-vMOPGDuvXecPs34V74qDKk4iJ/SN4vL3Ow/23ixafENYvtrNvtbcgUeugTcUGRGsOF/5fU8/NYSL5Hyb3l1OJA== uid-number@0.0.6: version "0.0.6" @@ -13043,7 +12189,7 @@ unbox-primitive@^1.0.1: has-symbols "^1.0.2" which-boxed-primitive "^1.0.2" -underscore@>=1.7.0, underscore@^1.8.3: +underscore@>=1.8.3: version "1.13.2" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.2.tgz#276cea1e8b9722a8dbed0100a407dda572125881" integrity sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g== @@ -13128,11 +12274,6 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - upath@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" @@ -13155,16 +12296,7 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-loader@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.2.tgz#b971d191b83af693c5e3fea4064be9e1f2d7f8d8" - integrity sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg== - dependencies: - loader-utils "^1.1.0" - mime "^2.0.3" - schema-utils "^1.0.0" - -url-loader@~4.1.0: +url-loader@^4.1.1, 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== @@ -13213,20 +12345,6 @@ util-promisify@^2.1.0: dependencies: object.getownpropertydescriptors "^2.0.3" -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -13242,7 +12360,7 @@ uuid@^8.3.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1: +v8-compile-cache@^2.0.3: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== @@ -13333,23 +12451,23 @@ verdaccio-htpasswd@10.3.0: unix-crypt-td-js "1.1.4" verdaccio@^5.1.1: - version "5.8.0" - resolved "https://registry.yarnpkg.com/verdaccio/-/verdaccio-5.8.0.tgz#c6986f9fb9f92d4910cbb514d66474214ebe7b03" - integrity sha512-g8CWr57F8pn2Vio8MCO7kJuUNTp9cl6/exr7HR6fYmnhr+jv1Fcl5I7iR49UkD6YfDoYtZcWdFgdCBVy/hpDbg== + version "5.9.0" + resolved "https://registry.yarnpkg.com/verdaccio/-/verdaccio-5.9.0.tgz#bc3bc7107504eef9bfe3b85a859eb8cc7013e88f" + integrity sha512-Ah2xssdTIx2fzBdnYFc5Tnlq9AIb2M0V9IsK9axDvuT5IIxeaZi2EjRtvlP2zj1TH/hHMVyDnhjZ3o7qc22I5w== dependencies: "@verdaccio/commons-api" "10.2.0" "@verdaccio/local-storage" "10.2.0" "@verdaccio/readme" "10.3.2" "@verdaccio/streams" "10.2.0" - "@verdaccio/ui-theme" "6.0.0-6-next.22" + "@verdaccio/ui-theme" "6.0.0-6-next.23" JSONStream "1.3.5" async "3.2.3" - body-parser "1.19.1" + body-parser "1.19.2" clipanion "3.1.0" compression "1.7.4" cookies "0.8.0" cors "2.8.5" - dayjs "1.10.8" + dayjs "1.11.0" debug "^4.3.3" envinfo "7.8.1" eslint-import-resolver-node "0.3.6" @@ -13389,11 +12507,6 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - w3c-hr-time@^1.0.1, w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -13431,23 +12544,13 @@ warning@^4.0.2, warning@^4.0.3: dependencies: loose-envify "^1.0.0" -watchpack-chokidar2@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" - integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" - integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== +watch@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/watch/-/watch-1.0.2.tgz#340a717bde765726fa0aa07d721e0147a551df0c" + integrity sha1-NApxe952Vyb6CqB9ch4BR6VR3ww= dependencies: - graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.1" + exec-sh "^0.2.0" + minimist "^1.2.0" watchpack@^2.3.1: version "2.3.1" @@ -13484,24 +12587,22 @@ 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@^3.2.3: - version "3.3.12" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a" - integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag== +webpack-bundle-analyzer@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz#1b0eea2947e73528754a6f9af3e91b2b6e0f79d5" + integrity sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ== dependencies: - chalk "^2.4.2" - cross-spawn "^6.0.5" - enhanced-resolve "^4.1.1" - findup-sync "^3.0.0" - global-modules "^2.0.0" - import-local "^2.0.0" - interpret "^1.4.0" - loader-utils "^1.4.0" - supports-color "^6.1.0" - v8-compile-cache "^2.1.1" - yargs "^13.3.2" - -webpack-cli@^4.1.0: + acorn "^8.0.4" + acorn-walk "^8.0.0" + chalk "^4.1.0" + commander "^7.2.0" + gzip-size "^6.0.0" + lodash "^4.17.20" + opener "^1.5.2" + sirv "^1.0.7" + ws "^7.3.1" + +webpack-cli@^4.1.0, webpack-cli@^4.5.0: version "4.9.2" resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.2.tgz#77c1adaea020c3f9e2db8aad8ea78d235c83659d" integrity sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ== @@ -13527,7 +12628,7 @@ webpack-merge@^5.1.2, webpack-merge@^5.7.3: clone-deep "^4.0.1" wildcard "^2.0.0" -webpack-sources@^1.1.0, webpack-sources@^1.2.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: +webpack-sources@^1.1.0, webpack-sources@^1.2.0, webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -13540,39 +12641,10 @@ 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@^4.29.3: - version "4.46.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" - integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.5.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" - -webpack@^5.41.1: - version "5.70.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.70.0.tgz#3461e6287a72b5e6e2f4872700bc8de0d7500e6d" - integrity sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw== +webpack@^5.24.1, webpack@^5.41.1: + version "5.72.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.72.0.tgz#f8bc40d9c6bb489a4b7a8a685101d6022b8b6e28" + integrity sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" @@ -13606,6 +12678,11 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" +whatwg-fetch@^3.0.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== + whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" @@ -13653,7 +12730,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.14, which@^1.2.9, which@^1.3.1: +which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -13667,11 +12744,6 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" -wicked-good-xpath@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz#81b0e95e8650e49c94b22298fff8686b5553cf6c" - integrity sha1-gbDpXoZQ5JyUsiKY//hoa1VTz2w= - wide-align@^1.1.0: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" @@ -13694,13 +12766,6 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - worker-loader@^3.0.2: version "3.0.8" resolved "https://registry.yarnpkg.com/worker-loader/-/worker-loader-3.0.8.tgz#5fc5cda4a3d3163d9c274a4e3a811ce8b60dbb37" @@ -13709,15 +12774,6 @@ worker-loader@^3.0.2: loader-utils "^2.0.0" schema-utils "^3.0.0" -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -13800,7 +12856,7 @@ ws@^6.2.1: dependencies: async-limiter "~1.0.0" -ws@^7.0.0, ws@^7.4.6: +ws@^7.0.0, ws@^7.3.1, ws@^7.4.6: version "7.5.7" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== @@ -13820,12 +12876,7 @@ xmlchars@^2.1.1, xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xmldom-sre@^0.1.31: - version "0.1.31" - resolved "https://registry.yarnpkg.com/xmldom-sre/-/xmldom-sre-0.1.31.tgz#10860d5bab2c603144597d04bf2c4980e98067f4" - integrity sha512-f9s+fUkX04BxQf+7mMWAp5zk61pciie+fFLC9hX9UVvCeJQfNHRHXpeo5MPcR0EUf57PYLdt+ZO4f3Ipk2oZUw== - -xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: +xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -13853,9 +12904,9 @@ y-protocols@^1.0.5: lib0 "^0.2.42" y-websocket@^1.3.15: - version "1.4.0" - resolved "https://registry.yarnpkg.com/y-websocket/-/y-websocket-1.4.0.tgz#349a4d8cefd8cb7c3bc81effc4b2815f73a77768" - integrity sha512-NqG71oGJQBR2/cH4FLa/JmJdDK7DqLDnzrkQrLlxkwUXf5Gbo2jFrHl8lAIppu9V+YEjCR5YpkFKVU3gAHy2LQ== + version "1.4.1" + resolved "https://registry.yarnpkg.com/y-websocket/-/y-websocket-1.4.1.tgz#69abbe7c2d18882cb5d2abed0d4daf43187f11ee" + integrity sha512-Wagfx30R/+8XF3/zdvASAeBgJwrvqIQf4K45hhHTTE4xu1f8311hXVQ6JQ4kiPtkgqOK226+npoAEf7FLtp+aA== dependencies: lib0 "^0.2.42" lodash.debounce "^4.0.8" @@ -13874,7 +12925,7 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: +yallist@^3.0.0, yallist@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== @@ -13899,14 +12950,6 @@ yargs-parser@20.x, yargs-parser@^20.2.2, yargs-parser@^20.2.3: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^18.1.2: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" @@ -13915,22 +12958,6 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@^13.3.2: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - yargs@^15.4.1: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" @@ -13962,11 +12989,11 @@ yargs@^16.2.0: yargs-parser "^20.2.2" yjs@^13.5.17: - version "13.5.29" - resolved "https://registry.yarnpkg.com/yjs/-/yjs-13.5.29.tgz#84f1963842b600d6dd18c8a0acc6e1b11b50ed59" - integrity sha512-Wtx1jLM+LbUUJsN9NJLYgANh1MEI1QAFyLLTHymEwpKwWtLg9hRvucX7YGQ4GHLT6MIIdWt66B5Wu4dkZriEKw== + version "13.5.34" + resolved "https://registry.yarnpkg.com/yjs/-/yjs-13.5.34.tgz#ad9ddb8b6c0806e15b289ff0eabc4f06ba238952" + integrity sha512-w/XTk5vhCzbyd6uKKJWE6rPUBf9+heOTzgq8DBkcVgBMv7oeJVFQw2sRqY0YvuLZxURd/XVD2dcNnw8qeFH7Tw== dependencies: - lib0 "^0.2.43" + lib0 "^0.2.49" yocto-queue@^0.1.0: version "0.1.0" From 3f6889cd4a501082e5fb57cdeae8c91f6534d8ba Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Mon, 25 Jul 2022 14:58:36 +0000 Subject: [PATCH 02/18] Install ipympl from the ipywidgets 8 PR --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 17347ccba..9c45e02c9 100644 --- a/setup.cfg +++ b/setup.cfg @@ -63,7 +63,7 @@ visual_test = jupyterlab~=3.0 bqplot scipy - ipympl==0.8.7 + ipympl @ git+https://github.com/ianhi/ipympl@widgets8 ipyvolume jupyterlab_miami_nights==0.3.2 From ee5555f8ded7d11638553418b981c08a358aae78 Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Mon, 25 Jul 2022 15:37:55 +0000 Subject: [PATCH 03/18] Update reference snapshots --- .../basics-dark-linux.png | Bin 23841 -> 65314 bytes .../basics-miami-linux.png | Bin 46718 -> 69175 bytes .../gridspecLayout-linux.png | Bin 35078 -> 46724 bytes .../voila-tree-classic-linux.png | Bin 28862 -> 39894 bytes .../voila-tree-dark-linux.png | Bin 12401 -> 37429 bytes .../voila-tree-light-linux.png | Bin 12631 -> 36867 bytes .../voila-tree-miami-linux.png | Bin 24257 -> 37876 bytes 7 files changed, 0 insertions(+), 0 deletions(-) diff --git a/ui-tests/tests/voila.test.ts-snapshots/basics-dark-linux.png b/ui-tests/tests/voila.test.ts-snapshots/basics-dark-linux.png index 21300bbcc812441d88334538aa992860564a61f2..0fe68fa35c53a4108851e8730b9531dafec433b3 100644 GIT binary patch literal 65314 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 diff --git a/ui-tests/tests/voila.test.ts-snapshots/voila-tree-light-linux.png b/ui-tests/tests/voila.test.ts-snapshots/voila-tree-light-linux.png index f5ce61a4ac45b236a301bfd954f3170d171f0524..f490611ed9751926c557eeffeff056bbfc0da017 100644 GIT binary patch literal 36867 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 SMhD?=9T&SUN_%h3=l=}?+rxGM literal 12631 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 b>mFH;sd0&`);Sdb`~#Iyx|4tF!Q=l2Yj?6J diff --git a/ui-tests/tests/voila.test.ts-snapshots/voila-tree-miami-linux.png b/ui-tests/tests/voila.test.ts-snapshots/voila-tree-miami-linux.png index 198a9dcf6c5855e223b3cd7d83a7dab71faac262..38cbec5261692d83ba5b7c45dc0c1033e6fbf954 100644 GIT binary patch literal 37876 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 J(y1%A{}=1ZuDt*N literal 24257 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 Rph$MvK|7Rf(LcS<{}-x3ZjS%} From 2d4a34c929adfaf9b8bddd605d7e0105356aa5b2 Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Wed, 27 Jul 2022 12:32:11 +0200 Subject: [PATCH 04/18] Bump `@jupyter-widgets` packages to rc 1 --- packages/voila/package.json | 6 ++--- setup.cfg | 2 +- yarn.lock | 54 ++++++++++++++++++------------------- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/packages/voila/package.json b/packages/voila/package.json index 1d1719da4..79f964627 100644 --- a/packages/voila/package.json +++ b/packages/voila/package.json @@ -8,9 +8,9 @@ "main": "lib/index.js", "browserslist": ">0.8%, not ie 11, not op_mini all, not dead", "dependencies": { - "@jupyter-widgets/base": "^6.0.0-rc.0", - "@jupyter-widgets/controls": "^5.0.0-rc.0", - "@jupyter-widgets/jupyterlab-manager": "^5.0.0-rc.0", + "@jupyter-widgets/base": "^6.0.0-rc.1", + "@jupyter-widgets/controls": "^5.0.0-rc.1", + "@jupyter-widgets/jupyterlab-manager": "^5.0.0-rc.1", "@jupyterlab/json-extension": "^3.0.0", "@jupyterlab/markdownviewer-extension": "^3.0.0", "@jupyterlab/mathjax2-extension": "^3.0.0", diff --git a/setup.cfg b/setup.cfg index 9c45e02c9..4edd43677 100644 --- a/setup.cfg +++ b/setup.cfg @@ -51,7 +51,7 @@ dev = test = numpy pandas - ipywidgets>=8.0.0a6,<9 + ipywidgets>=8.0.0rc1,<9 matplotlib mock pytest diff --git a/yarn.lock b/yarn.lock index 647f66e3a..674e989ad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1228,21 +1228,21 @@ resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.3.1.tgz#b50a781709c81e10701004214340f25475a171a0" integrity sha512-zMM9Ds+SawiUkakS7y94Ymqx+S0ORzpG3frZirN3l+UlXUmSUR7hF4wxCVqW+ei94JzV5kt0uXBcoOEAuiydrw== -"@jupyter-widgets/base-manager@^1.0.0-rc.0": - version "1.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@jupyter-widgets/base-manager/-/base-manager-1.0.0-rc.0.tgz#23642fcfefdd6cb6e572c67e348628a29ca2e5ce" - integrity sha512-KiTxeLMqXWEyLI5A67KXVH8QSkQaNRudLGyPWp99F5eetMUJsT0vyePnGzezoS8NGtw6pWbcpZFswj9xDYJYtA== +"@jupyter-widgets/base-manager@^1.0.0-rc.1": + version "1.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@jupyter-widgets/base-manager/-/base-manager-1.0.0-rc.1.tgz#d6f3b007af19b9b9712070c8c26a34aaed670422" + integrity sha512-e1jT8SpxqE2gwJj6UPyep8PpiiTRDxKC4cZK+yGAFdNH/7EE+WRobyzv+FXtccBWHRG7hsOuO8UzgW26I4S8ZA== dependencies: - "@jupyter-widgets/base" "^6.0.0-rc.0" + "@jupyter-widgets/base" "^6.0.0-rc.1" "@jupyterlab/services" "^6.0.0" "@lumino/coreutils" "^1.11.1" base64-js "^1.2.1" sanitize-html "^2.3" -"@jupyter-widgets/base@^6.0.0-rc.0": - version "6.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@jupyter-widgets/base/-/base-6.0.0-rc.0.tgz#5b7e1a3cb5bc1094abf73cafbb7be26b2dec90cd" - integrity sha512-O2XyOmWwYOcIfRxRp74aEG2Rmh6+HrwAvuVFa7z9nqx3Zmujya/iOb4BH9Wjv1zzswyPr0YWobYbEuIHz/DMiQ== +"@jupyter-widgets/base@^6.0.0-rc.1": + version "6.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@jupyter-widgets/base/-/base-6.0.0-rc.1.tgz#fdfd58ae7fbd7c21f4a024949c2b4befa779b5a5" + integrity sha512-05Qv9HXRVjILwhtIGO7NEdVOD4+mqFQ2hMizb+uZ//JxoFD2J1Zp2Ga6fUx/WCO8OWVdv53+2iPYM6IyEJRMBw== dependencies: "@jupyterlab/services" "^6.0.0" "@lumino/coreutils" "^1.11.1" @@ -1254,12 +1254,12 @@ jquery "^3.1.1" lodash "^4.17.4" -"@jupyter-widgets/controls@^5.0.0-rc.0": - version "5.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@jupyter-widgets/controls/-/controls-5.0.0-rc.0.tgz#7a126ba47609ca550cee2ebea4de30051bca13aa" - integrity sha512-lhcq73/fqz7eeL+r9FPXuuhSKqYAxGZqFnkeldEHFnR/lNxGMruNvM6onijlxRqjRa0nHH8I+CyJI8AkuOiu3g== +"@jupyter-widgets/controls@^5.0.0-rc.1": + version "5.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@jupyter-widgets/controls/-/controls-5.0.0-rc.1.tgz#47998823e868b38b11b1e3552908dac414b89a90" + integrity sha512-qM0ZM8VpA7J3sV21zUm4NT29MkbtTDR65IYNioLcGs6sneQ5OaOmbWAxExWFWLKTgI6txuhkVVnv/zfqw8NQnQ== dependencies: - "@jupyter-widgets/base" "^6.0.0-rc.0" + "@jupyter-widgets/base" "^6.0.0-rc.1" "@lumino/algorithm" "^1.9.1" "@lumino/domutils" "^1.8.1" "@lumino/messaging" "^1.10.1" @@ -1270,15 +1270,15 @@ jquery "^3.1.1" nouislider "15.4.0" -"@jupyter-widgets/jupyterlab-manager@^5.0.0-rc.0": - version "5.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@jupyter-widgets/jupyterlab-manager/-/jupyterlab-manager-5.0.0-rc.0.tgz#59208010209ade1ffe6651ca2b8884767d6f6018" - integrity sha512-naLoKsLzeYkrlyzImbrQcEZ0shVboL/HZzvwx6yr577QqDp+4pzMtA+zM2aXCr57MPJVpEU96dYsrGIhVZl2Vg== +"@jupyter-widgets/jupyterlab-manager@^5.0.0-rc.1": + version "5.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@jupyter-widgets/jupyterlab-manager/-/jupyterlab-manager-5.0.0-rc.1.tgz#da19cf80b74ff5c91667762892837bdff985d82b" + integrity sha512-oFfA34JvaUGQgkllQycGMo+jhEce0LjyMsp2FP503QPTk8rEyPVu6R1rYs4ThdFJ5wD4RWaKKqsD9ykwFisCBA== dependencies: - "@jupyter-widgets/base" "^6.0.0-rc.0" - "@jupyter-widgets/base-manager" "^1.0.0-rc.0" - "@jupyter-widgets/controls" "^5.0.0-rc.0" - "@jupyter-widgets/output" "^6.0.0-rc.0" + "@jupyter-widgets/base" "^6.0.0-rc.1" + "@jupyter-widgets/base-manager" "^1.0.0-rc.1" + "@jupyter-widgets/controls" "^5.0.0-rc.1" + "@jupyter-widgets/output" "^6.0.0-rc.1" "@jupyterlab/application" "^3.0.0" "@jupyterlab/docregistry" "^3.0.0" "@jupyterlab/logconsole" "^3.0.0" @@ -1302,12 +1302,12 @@ jquery "^3.1.1" semver "^7.3.5" -"@jupyter-widgets/output@^6.0.0-rc.0": - version "6.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@jupyter-widgets/output/-/output-6.0.0-rc.0.tgz#df743516e3c66b56e1855ef30437a7d0fa17ab2d" - integrity sha512-+aU3GyqAEuDLGhMtm4vdTXpp8HqD+64x1UJO0byLOXYzdhsEfFU/XWdduLBTHh+K33OekZTw6SrFU3DqMe4b1w== +"@jupyter-widgets/output@^6.0.0-rc.1": + version "6.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@jupyter-widgets/output/-/output-6.0.0-rc.1.tgz#cebd41b27dad85652c3f342198e4864fd7d47eef" + integrity sha512-kVQ8aDIPMxXov8FQ7JTk6u1pdywPoAVYOU8hxyEo3DatAU+QLTt762CZ3C2ycxrZbaD3FT2gh/Ox4zgFE4/q1g== dependencies: - "@jupyter-widgets/base" "^6.0.0-rc.0" + "@jupyter-widgets/base" "^6.0.0-rc.1" "@jupyterlab/application@^3.0.0", "@jupyterlab/application@^3.3.4": version "3.3.4" From ef544529d6672f848ea023a8f9236059b35d0ec6 Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Fri, 12 Aug 2022 10:55:37 +0200 Subject: [PATCH 05/18] Import from @jupyter-widgets/output --- packages/voila/package.json | 1 + packages/voila/src/manager.ts | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/voila/package.json b/packages/voila/package.json index 79f964627..c71a97f2a 100644 --- a/packages/voila/package.json +++ b/packages/voila/package.json @@ -10,6 +10,7 @@ "dependencies": { "@jupyter-widgets/base": "^6.0.0-rc.1", "@jupyter-widgets/controls": "^5.0.0-rc.1", + "@jupyter-widgets/output": "^6.0.0-rc.1", "@jupyter-widgets/jupyterlab-manager": "^5.0.0-rc.1", "@jupyterlab/json-extension": "^3.0.0", "@jupyterlab/markdownviewer-extension": "^3.0.0", diff --git a/packages/voila/src/manager.ts b/packages/voila/src/manager.ts index e427c63e4..199b0449c 100644 --- a/packages/voila/src/manager.ts +++ b/packages/voila/src/manager.ts @@ -7,7 +7,7 @@ * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ -import { WidgetRenderer, output } from '@jupyter-widgets/jupyterlab-manager'; +import { WidgetRenderer } from '@jupyter-widgets/jupyterlab-manager'; import { KernelWidgetManager } from '@jupyter-widgets/jupyterlab-manager'; @@ -15,6 +15,8 @@ import * as base from '@jupyter-widgets/base'; import * as controls from '@jupyter-widgets/controls'; +import * as output from '@jupyter-widgets/output'; + import { IRenderMimeRegistry } from '@jupyterlab/rendermime'; import * as LuminoWidget from '@lumino/widgets'; From 1132e525e4b58002c779e598d0863c5b65b7f6d0 Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Fri, 12 Aug 2022 13:56:12 +0200 Subject: [PATCH 06/18] Install ipyvolume from the widgets 8 branch --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 4edd43677..0b6448e7b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -64,7 +64,7 @@ visual_test = bqplot scipy ipympl @ git+https://github.com/ianhi/ipympl@widgets8 - ipyvolume + ipyvolume @ git+https://github.com/jtpio/ipyvolume@ipywidgets-8 jupyterlab_miami_nights==0.3.2 [options.entry_points] From 91cdd5128fd60f1d100600804e3cbb31cc4c2552 Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Fri, 12 Aug 2022 16:24:58 +0200 Subject: [PATCH 07/18] Update to ipywidgets rc2 --- packages/voila/package.json | 8 +++--- setup.cfg | 2 +- yarn.lock | 55 ++++++++++++++++++------------------- 3 files changed, 32 insertions(+), 33 deletions(-) diff --git a/packages/voila/package.json b/packages/voila/package.json index c71a97f2a..55602ded5 100644 --- a/packages/voila/package.json +++ b/packages/voila/package.json @@ -8,10 +8,10 @@ "main": "lib/index.js", "browserslist": ">0.8%, not ie 11, not op_mini all, not dead", "dependencies": { - "@jupyter-widgets/base": "^6.0.0-rc.1", - "@jupyter-widgets/controls": "^5.0.0-rc.1", - "@jupyter-widgets/output": "^6.0.0-rc.1", - "@jupyter-widgets/jupyterlab-manager": "^5.0.0-rc.1", + "@jupyter-widgets/base": "^6.0.0-rc.2", + "@jupyter-widgets/controls": "^5.0.0-rc.2", + "@jupyter-widgets/output": "^6.0.0-rc.2", + "@jupyter-widgets/jupyterlab-manager": "^5.0.0-rc.2", "@jupyterlab/json-extension": "^3.0.0", "@jupyterlab/markdownviewer-extension": "^3.0.0", "@jupyterlab/mathjax2-extension": "^3.0.0", diff --git a/setup.cfg b/setup.cfg index 0b6448e7b..0d3f48537 100644 --- a/setup.cfg +++ b/setup.cfg @@ -51,7 +51,7 @@ dev = test = numpy pandas - ipywidgets>=8.0.0rc1,<9 + ipywidgets>=8.0.0rc2,<9 matplotlib mock pytest diff --git a/yarn.lock b/yarn.lock index 674e989ad..25669d6b2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1228,21 +1228,21 @@ resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.3.1.tgz#b50a781709c81e10701004214340f25475a171a0" integrity sha512-zMM9Ds+SawiUkakS7y94Ymqx+S0ORzpG3frZirN3l+UlXUmSUR7hF4wxCVqW+ei94JzV5kt0uXBcoOEAuiydrw== -"@jupyter-widgets/base-manager@^1.0.0-rc.1": - version "1.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@jupyter-widgets/base-manager/-/base-manager-1.0.0-rc.1.tgz#d6f3b007af19b9b9712070c8c26a34aaed670422" - integrity sha512-e1jT8SpxqE2gwJj6UPyep8PpiiTRDxKC4cZK+yGAFdNH/7EE+WRobyzv+FXtccBWHRG7hsOuO8UzgW26I4S8ZA== +"@jupyter-widgets/base-manager@^1.0.0-rc.2": + version "1.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@jupyter-widgets/base-manager/-/base-manager-1.0.0-rc.2.tgz#640d7d158019a3dcd1770f272c0d881b6e0b7bc7" + integrity sha512-8zxEqTl/LJGEDatf4pdmsfNubkeCMYClmyyCK/8R9eFZb0lUIiPid2i6qiAjI4EQ7vhjf3SfKZX0zsDz9Dalhw== dependencies: - "@jupyter-widgets/base" "^6.0.0-rc.1" + "@jupyter-widgets/base" "^6.0.0-rc.2" "@jupyterlab/services" "^6.0.0" "@lumino/coreutils" "^1.11.1" base64-js "^1.2.1" sanitize-html "^2.3" -"@jupyter-widgets/base@^6.0.0-rc.1": - version "6.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@jupyter-widgets/base/-/base-6.0.0-rc.1.tgz#fdfd58ae7fbd7c21f4a024949c2b4befa779b5a5" - integrity sha512-05Qv9HXRVjILwhtIGO7NEdVOD4+mqFQ2hMizb+uZ//JxoFD2J1Zp2Ga6fUx/WCO8OWVdv53+2iPYM6IyEJRMBw== +"@jupyter-widgets/base@^6.0.0-rc.2": + version "6.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@jupyter-widgets/base/-/base-6.0.0-rc.2.tgz#d547c3707be1749ae566a6f52e8c3bdf5732bfd8" + integrity sha512-jBqXUkSb8cFcpNTdGU0VPYeIqJ3wsU9cA0crvEHJw259a2gRCI4B1yFl1LdbTO3smKUHxmJcIIaTV5dSdBjXfg== dependencies: "@jupyterlab/services" "^6.0.0" "@lumino/coreutils" "^1.11.1" @@ -1254,12 +1254,12 @@ jquery "^3.1.1" lodash "^4.17.4" -"@jupyter-widgets/controls@^5.0.0-rc.1": - version "5.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@jupyter-widgets/controls/-/controls-5.0.0-rc.1.tgz#47998823e868b38b11b1e3552908dac414b89a90" - integrity sha512-qM0ZM8VpA7J3sV21zUm4NT29MkbtTDR65IYNioLcGs6sneQ5OaOmbWAxExWFWLKTgI6txuhkVVnv/zfqw8NQnQ== +"@jupyter-widgets/controls@^5.0.0-rc.2": + version "5.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@jupyter-widgets/controls/-/controls-5.0.0-rc.2.tgz#f404756d4b252ad7d93d72956c563f01c37b9302" + integrity sha512-opcHMgOcrpQLPZlibkO/GcmEFgSquL/A9TG6qh894VFAykLj6VcUO7cx+xEDSodSnz0eAl4jC5XqVLRJLgKV6g== dependencies: - "@jupyter-widgets/base" "^6.0.0-rc.1" + "@jupyter-widgets/base" "^6.0.0-rc.2" "@lumino/algorithm" "^1.9.1" "@lumino/domutils" "^1.8.1" "@lumino/messaging" "^1.10.1" @@ -1270,15 +1270,15 @@ jquery "^3.1.1" nouislider "15.4.0" -"@jupyter-widgets/jupyterlab-manager@^5.0.0-rc.1": - version "5.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@jupyter-widgets/jupyterlab-manager/-/jupyterlab-manager-5.0.0-rc.1.tgz#da19cf80b74ff5c91667762892837bdff985d82b" - integrity sha512-oFfA34JvaUGQgkllQycGMo+jhEce0LjyMsp2FP503QPTk8rEyPVu6R1rYs4ThdFJ5wD4RWaKKqsD9ykwFisCBA== +"@jupyter-widgets/jupyterlab-manager@^5.0.0-rc.2": + version "5.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@jupyter-widgets/jupyterlab-manager/-/jupyterlab-manager-5.0.0-rc.2.tgz#674e21ca0397268cecf21ae196abe2e6632f73ba" + integrity sha512-eXRMoj/kKizXJsneNGXE+3g9n9y0zsHJjb/82S93YnDkuzbSSJp5iGHsgZWvwEeii006diAM8MPK1cDAdib8uA== dependencies: - "@jupyter-widgets/base" "^6.0.0-rc.1" - "@jupyter-widgets/base-manager" "^1.0.0-rc.1" - "@jupyter-widgets/controls" "^5.0.0-rc.1" - "@jupyter-widgets/output" "^6.0.0-rc.1" + "@jupyter-widgets/base" "^6.0.0-rc.2" + "@jupyter-widgets/base-manager" "^1.0.0-rc.2" + "@jupyter-widgets/controls" "^5.0.0-rc.2" + "@jupyter-widgets/output" "^6.0.0-rc.2" "@jupyterlab/application" "^3.0.0" "@jupyterlab/docregistry" "^3.0.0" "@jupyterlab/logconsole" "^3.0.0" @@ -1294,7 +1294,6 @@ "@lumino/algorithm" "^1.9.1" "@lumino/coreutils" "^1.11.1" "@lumino/disposable" "^1.10.1" - "@lumino/messaging" "^1.10.1" "@lumino/properties" "^1.8.1" "@lumino/signaling" "^1.10.1" "@lumino/widgets" "^1.30.0" @@ -1302,12 +1301,12 @@ jquery "^3.1.1" semver "^7.3.5" -"@jupyter-widgets/output@^6.0.0-rc.1": - version "6.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@jupyter-widgets/output/-/output-6.0.0-rc.1.tgz#cebd41b27dad85652c3f342198e4864fd7d47eef" - integrity sha512-kVQ8aDIPMxXov8FQ7JTk6u1pdywPoAVYOU8hxyEo3DatAU+QLTt762CZ3C2ycxrZbaD3FT2gh/Ox4zgFE4/q1g== +"@jupyter-widgets/output@^6.0.0-rc.2": + version "6.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@jupyter-widgets/output/-/output-6.0.0-rc.2.tgz#36419b828136ddb43105f1760595c8ae7cef3b53" + integrity sha512-8Hex+6gNyPU3YGGHDLFPmUDfRFy5cq0IFLqUoKcEAkPyxz3BtgpYFe62YmZq39RUR8XA912vGWzWaiUqATGKQw== dependencies: - "@jupyter-widgets/base" "^6.0.0-rc.1" + "@jupyter-widgets/base" "^6.0.0-rc.2" "@jupyterlab/application@^3.0.0", "@jupyterlab/application@^3.3.4": version "3.3.4" From f365a29081799b55a3dbc97236f0ead92973c4ef Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Thu, 18 Aug 2022 17:22:40 +0200 Subject: [PATCH 08/18] Update to ipywidgets 8 final --- packages/voila/package.json | 8 +++--- setup.cfg | 2 +- yarn.lock | 54 ++++++++++++++++++------------------- 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/packages/voila/package.json b/packages/voila/package.json index 55602ded5..0b5859151 100644 --- a/packages/voila/package.json +++ b/packages/voila/package.json @@ -8,10 +8,10 @@ "main": "lib/index.js", "browserslist": ">0.8%, not ie 11, not op_mini all, not dead", "dependencies": { - "@jupyter-widgets/base": "^6.0.0-rc.2", - "@jupyter-widgets/controls": "^5.0.0-rc.2", - "@jupyter-widgets/output": "^6.0.0-rc.2", - "@jupyter-widgets/jupyterlab-manager": "^5.0.0-rc.2", + "@jupyter-widgets/base": "^6.0.0", + "@jupyter-widgets/controls": "^5.0.0", + "@jupyter-widgets/output": "^6.0.0", + "@jupyter-widgets/jupyterlab-manager": "^5.0.0", "@jupyterlab/json-extension": "^3.0.0", "@jupyterlab/markdownviewer-extension": "^3.0.0", "@jupyterlab/mathjax2-extension": "^3.0.0", diff --git a/setup.cfg b/setup.cfg index 0d3f48537..3edff8176 100644 --- a/setup.cfg +++ b/setup.cfg @@ -51,7 +51,7 @@ dev = test = numpy pandas - ipywidgets>=8.0.0rc2,<9 + ipywidgets>=8.0.0,<9 matplotlib mock pytest diff --git a/yarn.lock b/yarn.lock index 25669d6b2..c8e6c5536 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1228,21 +1228,21 @@ resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.3.1.tgz#b50a781709c81e10701004214340f25475a171a0" integrity sha512-zMM9Ds+SawiUkakS7y94Ymqx+S0ORzpG3frZirN3l+UlXUmSUR7hF4wxCVqW+ei94JzV5kt0uXBcoOEAuiydrw== -"@jupyter-widgets/base-manager@^1.0.0-rc.2": - version "1.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@jupyter-widgets/base-manager/-/base-manager-1.0.0-rc.2.tgz#640d7d158019a3dcd1770f272c0d881b6e0b7bc7" - integrity sha512-8zxEqTl/LJGEDatf4pdmsfNubkeCMYClmyyCK/8R9eFZb0lUIiPid2i6qiAjI4EQ7vhjf3SfKZX0zsDz9Dalhw== +"@jupyter-widgets/base-manager@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@jupyter-widgets/base-manager/-/base-manager-1.0.0.tgz#8e2093b15423cbb4c8770b8fc97b30fac50d682d" + integrity sha512-KbrJXsvzExz7ovZ92CnoquE9JtjfLib0EgGuCxbf24EVhktiVQoKGaDWEQTb1oEF2x/0D3H5vpiu1yFg1gyt/A== dependencies: - "@jupyter-widgets/base" "^6.0.0-rc.2" + "@jupyter-widgets/base" "^6.0.0" "@jupyterlab/services" "^6.0.0" "@lumino/coreutils" "^1.11.1" base64-js "^1.2.1" sanitize-html "^2.3" -"@jupyter-widgets/base@^6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@jupyter-widgets/base/-/base-6.0.0-rc.2.tgz#d547c3707be1749ae566a6f52e8c3bdf5732bfd8" - integrity sha512-jBqXUkSb8cFcpNTdGU0VPYeIqJ3wsU9cA0crvEHJw259a2gRCI4B1yFl1LdbTO3smKUHxmJcIIaTV5dSdBjXfg== +"@jupyter-widgets/base@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@jupyter-widgets/base/-/base-6.0.0.tgz#e15047b383291715601eb1fc030c143bfd9e779e" + integrity sha512-UntW6jBZtj4lrpgdUhd0QRPn13Ce8YeFVcSCp0dpTqjVwtz3ySn9OUiI++1iboDqzSGZ01w/y2HMj8HhqRVQSg== dependencies: "@jupyterlab/services" "^6.0.0" "@lumino/coreutils" "^1.11.1" @@ -1254,12 +1254,12 @@ jquery "^3.1.1" lodash "^4.17.4" -"@jupyter-widgets/controls@^5.0.0-rc.2": - version "5.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@jupyter-widgets/controls/-/controls-5.0.0-rc.2.tgz#f404756d4b252ad7d93d72956c563f01c37b9302" - integrity sha512-opcHMgOcrpQLPZlibkO/GcmEFgSquL/A9TG6qh894VFAykLj6VcUO7cx+xEDSodSnz0eAl4jC5XqVLRJLgKV6g== +"@jupyter-widgets/controls@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@jupyter-widgets/controls/-/controls-5.0.0.tgz#be07402c2c6042de55f9ee8dabda8cd6457e545a" + integrity sha512-aFu2DF2EbJ9LxIAOqd8CCmOlQzkZRMyvksZBhSnHn6zJwnxrxBMarzvZeHR4edSXhQnaO1gFxJzwox0P2BobVw== dependencies: - "@jupyter-widgets/base" "^6.0.0-rc.2" + "@jupyter-widgets/base" "^6.0.0" "@lumino/algorithm" "^1.9.1" "@lumino/domutils" "^1.8.1" "@lumino/messaging" "^1.10.1" @@ -1270,15 +1270,15 @@ jquery "^3.1.1" nouislider "15.4.0" -"@jupyter-widgets/jupyterlab-manager@^5.0.0-rc.2": - version "5.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@jupyter-widgets/jupyterlab-manager/-/jupyterlab-manager-5.0.0-rc.2.tgz#674e21ca0397268cecf21ae196abe2e6632f73ba" - integrity sha512-eXRMoj/kKizXJsneNGXE+3g9n9y0zsHJjb/82S93YnDkuzbSSJp5iGHsgZWvwEeii006diAM8MPK1cDAdib8uA== +"@jupyter-widgets/jupyterlab-manager@^5.0.0": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@jupyter-widgets/jupyterlab-manager/-/jupyterlab-manager-5.0.1.tgz#c039179b45e3773cfb1ee471e5c4a756a8e0a524" + integrity sha512-JedrU2EzZ2EK12ek6PmykY5iC9MkvCVhdzTKT+fuKB9DuOg3JlYokF03klYc04ALx67xEBn0rlm4jos5r/PNsw== dependencies: - "@jupyter-widgets/base" "^6.0.0-rc.2" - "@jupyter-widgets/base-manager" "^1.0.0-rc.2" - "@jupyter-widgets/controls" "^5.0.0-rc.2" - "@jupyter-widgets/output" "^6.0.0-rc.2" + "@jupyter-widgets/base" "^6.0.0" + "@jupyter-widgets/base-manager" "^1.0.0" + "@jupyter-widgets/controls" "^5.0.0" + "@jupyter-widgets/output" "^6.0.0" "@jupyterlab/application" "^3.0.0" "@jupyterlab/docregistry" "^3.0.0" "@jupyterlab/logconsole" "^3.0.0" @@ -1301,12 +1301,12 @@ jquery "^3.1.1" semver "^7.3.5" -"@jupyter-widgets/output@^6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@jupyter-widgets/output/-/output-6.0.0-rc.2.tgz#36419b828136ddb43105f1760595c8ae7cef3b53" - integrity sha512-8Hex+6gNyPU3YGGHDLFPmUDfRFy5cq0IFLqUoKcEAkPyxz3BtgpYFe62YmZq39RUR8XA912vGWzWaiUqATGKQw== +"@jupyter-widgets/output@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@jupyter-widgets/output/-/output-6.0.0.tgz#dc708f016e5d4f67ecc58d708214b3d42f5cd073" + integrity sha512-F+0Sy5OXBmJw0nhz8EwMibPJh/MQ0encivH5asEnXvAkjQnQ8TOni1p9+Txk6Jhd6vZy2/ro3HijaDoN/jBTbw== dependencies: - "@jupyter-widgets/base" "^6.0.0-rc.2" + "@jupyter-widgets/base" "^6.0.0" "@jupyterlab/application@^3.0.0", "@jupyterlab/application@^3.3.4": version "3.3.4" From 96eaa2eab75f9f5686757cfa57a806aeed1d7615 Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Fri, 19 Aug 2022 18:55:56 +0200 Subject: [PATCH 09/18] Update to the latest `@jupyter-widgets/jupyterlab-manager` --- packages/voila/package.json | 2 +- yarn.lock | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/voila/package.json b/packages/voila/package.json index 0b5859151..f6879cefa 100644 --- a/packages/voila/package.json +++ b/packages/voila/package.json @@ -11,7 +11,7 @@ "@jupyter-widgets/base": "^6.0.0", "@jupyter-widgets/controls": "^5.0.0", "@jupyter-widgets/output": "^6.0.0", - "@jupyter-widgets/jupyterlab-manager": "^5.0.0", + "@jupyter-widgets/jupyterlab-manager": "^5.0.2", "@jupyterlab/json-extension": "^3.0.0", "@jupyterlab/markdownviewer-extension": "^3.0.0", "@jupyterlab/mathjax2-extension": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index c8e6c5536..24a25ac84 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1228,10 +1228,10 @@ resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.3.1.tgz#b50a781709c81e10701004214340f25475a171a0" integrity sha512-zMM9Ds+SawiUkakS7y94Ymqx+S0ORzpG3frZirN3l+UlXUmSUR7hF4wxCVqW+ei94JzV5kt0uXBcoOEAuiydrw== -"@jupyter-widgets/base-manager@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@jupyter-widgets/base-manager/-/base-manager-1.0.0.tgz#8e2093b15423cbb4c8770b8fc97b30fac50d682d" - integrity sha512-KbrJXsvzExz7ovZ92CnoquE9JtjfLib0EgGuCxbf24EVhktiVQoKGaDWEQTb1oEF2x/0D3H5vpiu1yFg1gyt/A== +"@jupyter-widgets/base-manager@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@jupyter-widgets/base-manager/-/base-manager-1.0.1.tgz#85c53c975423a194b9a2ffc6a0b7d9fbb0b68d9e" + integrity sha512-3y7RueXBDWhPz9Hp9f3DUIkpYO4Jb3k/51USdGqaQvbn85ux7c8pV3U6oEfm55i4fkGHMHRaRtmkn6SujM2u3Q== dependencies: "@jupyter-widgets/base" "^6.0.0" "@jupyterlab/services" "^6.0.0" @@ -1270,13 +1270,13 @@ jquery "^3.1.1" nouislider "15.4.0" -"@jupyter-widgets/jupyterlab-manager@^5.0.0": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@jupyter-widgets/jupyterlab-manager/-/jupyterlab-manager-5.0.1.tgz#c039179b45e3773cfb1ee471e5c4a756a8e0a524" - integrity sha512-JedrU2EzZ2EK12ek6PmykY5iC9MkvCVhdzTKT+fuKB9DuOg3JlYokF03klYc04ALx67xEBn0rlm4jos5r/PNsw== +"@jupyter-widgets/jupyterlab-manager@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@jupyter-widgets/jupyterlab-manager/-/jupyterlab-manager-5.0.2.tgz#dfdc2ee22c0b05e9b3df972afc9e3f1c931f28b5" + integrity sha512-/KPSwVJ9wNt2z0JHx8nOE/zuE2B8Pw4REBCoxZ6hWsTgPW1wUhSMN/G6RClGJhsrLj2fKDr1FF6/3qJNtYq21g== dependencies: "@jupyter-widgets/base" "^6.0.0" - "@jupyter-widgets/base-manager" "^1.0.0" + "@jupyter-widgets/base-manager" "^1.0.1" "@jupyter-widgets/controls" "^5.0.0" "@jupyter-widgets/output" "^6.0.0" "@jupyterlab/application" "^3.0.0" From 09655a676a9df6c789d7f50580c29843987f28da Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Mon, 22 Aug 2022 10:44:34 +0200 Subject: [PATCH 10/18] Revert "Import from @jupyter-widgets/output" This reverts commit ef544529d6672f848ea023a8f9236059b35d0ec6. --- packages/voila/package.json | 1 - packages/voila/src/manager.ts | 4 +--- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/voila/package.json b/packages/voila/package.json index f6879cefa..d1cb468f0 100644 --- a/packages/voila/package.json +++ b/packages/voila/package.json @@ -10,7 +10,6 @@ "dependencies": { "@jupyter-widgets/base": "^6.0.0", "@jupyter-widgets/controls": "^5.0.0", - "@jupyter-widgets/output": "^6.0.0", "@jupyter-widgets/jupyterlab-manager": "^5.0.2", "@jupyterlab/json-extension": "^3.0.0", "@jupyterlab/markdownviewer-extension": "^3.0.0", diff --git a/packages/voila/src/manager.ts b/packages/voila/src/manager.ts index 199b0449c..e427c63e4 100644 --- a/packages/voila/src/manager.ts +++ b/packages/voila/src/manager.ts @@ -7,7 +7,7 @@ * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ -import { WidgetRenderer } from '@jupyter-widgets/jupyterlab-manager'; +import { WidgetRenderer, output } from '@jupyter-widgets/jupyterlab-manager'; import { KernelWidgetManager } from '@jupyter-widgets/jupyterlab-manager'; @@ -15,8 +15,6 @@ import * as base from '@jupyter-widgets/base'; import * as controls from '@jupyter-widgets/controls'; -import * as output from '@jupyter-widgets/output'; - import { IRenderMimeRegistry } from '@jupyterlab/rendermime'; import * as LuminoWidget from '@lumino/widgets'; From 4fe63c85d0622bcd0fc0ca69b5bd384f16776618 Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Mon, 22 Aug 2022 14:00:30 +0200 Subject: [PATCH 11/18] Update to ipympl 0.9.2 for the visual tests --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 3edff8176..71963d069 100644 --- a/setup.cfg +++ b/setup.cfg @@ -63,7 +63,7 @@ visual_test = jupyterlab~=3.0 bqplot scipy - ipympl @ git+https://github.com/ianhi/ipympl@widgets8 + ipympl==0.9.2 ipyvolume @ git+https://github.com/jtpio/ipyvolume@ipywidgets-8 jupyterlab_miami_nights==0.3.2 From 38409998b5db79a6fb7bc78dba78325f2116b305 Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Mon, 22 Aug 2022 16:40:37 +0200 Subject: [PATCH 12/18] Provide a custom OutputModel for now --- packages/voila/package.json | 2 + packages/voila/src/manager.ts | 7 ++- packages/voila/src/output.ts | 98 +++++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 packages/voila/src/output.ts diff --git a/packages/voila/package.json b/packages/voila/package.json index d1cb468f0..db1d7d804 100644 --- a/packages/voila/package.json +++ b/packages/voila/package.json @@ -10,6 +10,7 @@ "dependencies": { "@jupyter-widgets/base": "^6.0.0", "@jupyter-widgets/controls": "^5.0.0", + "@jupyter-widgets/output": "^6.0.0", "@jupyter-widgets/jupyterlab-manager": "^5.0.2", "@jupyterlab/json-extension": "^3.0.0", "@jupyterlab/markdownviewer-extension": "^3.0.0", @@ -21,6 +22,7 @@ "@jupyterlab/docregistry": "^3.0.0", "@jupyterlab/logconsole": "^3.0.0", "@jupyterlab/mainmenu": "^3.0.0", + "@jupyterlab/nbformat": "^3.0.0", "@jupyterlab/notebook": "^3.0.0", "@jupyterlab/outputarea": "^3.0.0", "@jupyterlab/rendermime": "^3.0.0", diff --git a/packages/voila/src/manager.ts b/packages/voila/src/manager.ts index e427c63e4..364a67b59 100644 --- a/packages/voila/src/manager.ts +++ b/packages/voila/src/manager.ts @@ -25,6 +25,8 @@ import { Widget } from '@lumino/widgets'; import { Kernel } from '@jupyterlab/services'; +import { OutputModel } from './output'; + const WIDGET_MIMETYPE = 'application/vnd.jupyter.widget-view+json'; /** @@ -112,7 +114,10 @@ export class WidgetManager extends KernelWidgetManager { this.register({ name: '@jupyter-widgets/output', version: output.OUTPUT_WIDGET_VERSION, - exports: output as any + exports: { + ...(output as any), + OutputModel + } }); } } diff --git a/packages/voila/src/output.ts b/packages/voila/src/output.ts new file mode 100644 index 000000000..58aeb94d6 --- /dev/null +++ b/packages/voila/src/output.ts @@ -0,0 +1,98 @@ +import { LabWidgetManager } from '@jupyter-widgets/jupyterlab-manager'; + +import * as outputBase from '@jupyter-widgets/output'; + +import * as nbformat from '@jupyterlab/nbformat'; + +import { OutputAreaModel } from '@jupyterlab/outputarea'; + +import { KernelMessage } from '@jupyterlab/services'; + +/** + * Adapt the upstream output model to Voila using a KernelWidgetManager: + * https://github.com/jupyter-widgets/ipywidgets/blob/58adde2cfbe2f78a8ec6756d38a7c637f5e599f8/python/jupyterlab_widgets/src/output.ts#L22 + * + * TODO: remove when https://github.com/jupyter-widgets/ipywidgets/pull/3561 (or similar) is merged and released in ipywidgets. + */ +export class OutputModel extends outputBase.OutputModel { + defaults(): Backbone.ObjectHash { + return { ...super.defaults(), msg_id: '', outputs: [] }; + } + + initialize(attributes: any, options: any): void { + super.initialize(attributes, options); + // The output area model is trusted since widgets are only rendered in trusted contexts. + this._outputs = new OutputAreaModel({ trusted: true }); + this._msgHook = (msg): boolean => { + this.add(msg); + return false; + }; + + this.listenTo(this, 'change:msg_id', this.reset_msg_id); + this.listenTo(this, 'change:outputs', this.setOutputs); + this.setOutputs(); + } + + /** + * Reset the message id. + */ + reset_msg_id(): void { + const kernel = this.widget_manager.kernel; + const msgId = this.get('msg_id'); + const oldMsgId = this.previous('msg_id'); + + // Clear any old handler. + if (oldMsgId && kernel) { + kernel.removeMessageHook(oldMsgId, this._msgHook); + } + + // Register any new handler. + if (msgId && kernel) { + kernel.registerMessageHook(msgId, this._msgHook); + } + } + + add(msg: KernelMessage.IIOPubMessage): void { + const msgType = msg.header.msg_type; + switch (msgType) { + case 'execute_result': + case 'display_data': + case 'stream': + case 'error': { + const model = msg.content as nbformat.IOutput; + model.output_type = msgType as nbformat.OutputType; + this._outputs.add(model); + break; + } + case 'clear_output': + this.clear_output((msg as KernelMessage.IClearOutputMsg).content.wait); + break; + default: + break; + } + this.set('outputs', this._outputs.toJSON(), { newMessage: true }); + this.save_changes(); + } + + clear_output(wait = false): void { + this._outputs.clear(wait); + } + + get outputs(): OutputAreaModel { + return this._outputs; + } + + setOutputs(model?: any, value?: any, options?: any): void { + if (!(options && options.newMessage)) { + // fromJSON does not clear the existing output + this.clear_output(); + // fromJSON does not copy the message, so we make a deep copy + this._outputs.fromJSON(JSON.parse(JSON.stringify(this.get('outputs')))); + } + } + + widget_manager!: LabWidgetManager; + + private _msgHook!: (msg: KernelMessage.IIOPubMessage) => boolean; + private _outputs!: OutputAreaModel; +} From a507297e9495d6f48da8b426123a3e103bf30632 Mon Sep 17 00:00:00 2001 From: martinRenou Date: Thu, 25 Aug 2022 11:11:43 +0200 Subject: [PATCH 13/18] Make Voila package public --- packages/voila/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/voila/package.json b/packages/voila/package.json index db1d7d804..7a1b8f5bc 100644 --- a/packages/voila/package.json +++ b/packages/voila/package.json @@ -1,6 +1,5 @@ { "name": "@voila-dashboards/voila", - "private": true, "version": "0.3.6", "description": "The Voilà Frontend", "author": "Voilà contributors", From 1eec341ce7794128e83ea166530248c60ef9301a Mon Sep 17 00:00:00 2001 From: martinRenou Date: Thu, 25 Aug 2022 11:12:44 +0200 Subject: [PATCH 14/18] Export everything from the Voila package --- packages/voila/src/index.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/voila/src/index.ts b/packages/voila/src/index.ts index 4a4f58515..e23afe40a 100644 --- a/packages/voila/src/index.ts +++ b/packages/voila/src/index.ts @@ -8,3 +8,6 @@ ****************************************************************************/ export * from './app'; +export * from './plugins'; +export * from './manager'; +export * from './shell'; From 295205dd5eaaff0fc683cf1c4edc6f18080a18ee Mon Sep 17 00:00:00 2001 From: martinRenou Date: Thu, 25 Aug 2022 11:33:45 +0200 Subject: [PATCH 15/18] Export plugins --- packages/voila/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/voila/src/index.ts b/packages/voila/src/index.ts index e23afe40a..bd7da753c 100644 --- a/packages/voila/src/index.ts +++ b/packages/voila/src/index.ts @@ -8,6 +8,6 @@ ****************************************************************************/ export * from './app'; -export * from './plugins'; +export * as plugins from './plugins'; export * from './manager'; export * from './shell'; From 7282f32e503a8d95cbac38bdea5deb43a9a4d226 Mon Sep 17 00:00:00 2001 From: martinRenou Date: Thu, 25 Aug 2022 18:29:47 +0200 Subject: [PATCH 16/18] Fix VoilaApp constructor by passing the correct options to super --- packages/voila/src/app.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/voila/src/app.ts b/packages/voila/src/app.ts index 9efcf14d9..8e8283f45 100644 --- a/packages/voila/src/app.ts +++ b/packages/voila/src/app.ts @@ -21,6 +21,7 @@ export class VoilaApp extends JupyterFrontEnd { */ constructor(options: App.IOptions = { shell: new VoilaShell() }) { super({ + ...options, shell: options.shell ?? new VoilaShell() }); From e8401628f1c39bd181b48cbfc95cdc3ed1a61b2c Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Thu, 25 Aug 2022 21:07:12 +0200 Subject: [PATCH 17/18] Fix export --- packages/voila/src/index.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/voila/src/index.ts b/packages/voila/src/index.ts index bd7da753c..e6af693dc 100644 --- a/packages/voila/src/index.ts +++ b/packages/voila/src/index.ts @@ -8,6 +8,9 @@ ****************************************************************************/ export * from './app'; -export * as plugins from './plugins'; export * from './manager'; export * from './shell'; + +import * as plugins from './plugins'; + +export { plugins }; From ec917803149e8e5d20d564084927a30a3116c45e Mon Sep 17 00:00:00 2001 From: martinRenou Date: Fri, 2 Sep 2022 13:12:13 +0200 Subject: [PATCH 18/18] Pass the WidgetManager to the WidgetRenderer Not doing this will make the WidgetRenderer fail to render newly created widgets (In the case of Voilite which dynamically creates new widgets instead of using the build_widgets method) --- packages/voila/src/manager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/voila/src/manager.ts b/packages/voila/src/manager.ts index 364a67b59..b6165a35b 100644 --- a/packages/voila/src/manager.ts +++ b/packages/voila/src/manager.ts @@ -42,7 +42,7 @@ export class WidgetManager extends KernelWidgetManager { { safe: false, mimeTypes: [WIDGET_MIMETYPE], - createRenderer: options => new WidgetRenderer(options) + createRenderer: options => new WidgetRenderer(options, this as any) }, 1 );