From d81c6b85bc1b8d9dd369f57166dcc5c56235cb99 Mon Sep 17 00:00:00 2001 From: Trung Le Date: Tue, 8 Nov 2022 11:03:50 +0100 Subject: [PATCH 01/10] Create voilite package --- .binder/postBuild | 5 +- .gitignore | 2 + packages/voila/index.js | 189 +++++++ packages/voila/src/index.ts | 1 + packages/voilite/package.json | 92 +++ packages/voilite/publicpath.js | 37 ++ packages/voilite/src/app.ts | 267 +++++++++ packages/voilite/src/bootstrap.ts | 1 + packages/voilite/src/global.d.ts | 20 + packages/voilite/src/index.ts | 229 ++++++++ packages/voilite/src/manager.ts | 63 +++ packages/voilite/src/plugins.ts | 123 ++++ packages/voilite/style.css | 3 + packages/voilite/style/index.css | 0 packages/voilite/tsconfig.json | 9 + packages/voilite/webpack.config.js | 166 ++++++ pyproject.toml | 9 +- .../templates/base/spinner.macro.html.j2 | 2 +- .../templates/base/static/require.min.js | 1 - .../templates/base/voila_setup.macro.html.j2 | 2 +- .../jupyter/voila/templates/lab/index.html.j2 | 2 +- voila/handler.py | 2 +- voila/notebook_renderer.py | 1 + voila/utils.py | 23 +- voila/voilite/__init__.py | 0 voila/voilite/app.py | 180 ++++++ voila/voilite/exporter.py | 134 +++++ voila/voilite/static/services.js | 91 +++ yarn.lock | 526 +++++++++++++++++- 29 files changed, 2167 insertions(+), 13 deletions(-) create mode 100644 packages/voila/index.js create mode 100644 packages/voilite/package.json create mode 100644 packages/voilite/publicpath.js create mode 100644 packages/voilite/src/app.ts create mode 100644 packages/voilite/src/bootstrap.ts create mode 100644 packages/voilite/src/global.d.ts create mode 100644 packages/voilite/src/index.ts create mode 100644 packages/voilite/src/manager.ts create mode 100644 packages/voilite/src/plugins.ts create mode 100644 packages/voilite/style.css create mode 100644 packages/voilite/style/index.css create mode 100644 packages/voilite/tsconfig.json create mode 100644 packages/voilite/webpack.config.js delete mode 100644 share/jupyter/voila/templates/base/static/require.min.js create mode 100644 voila/voilite/__init__.py create mode 100644 voila/voilite/app.py create mode 100644 voila/voilite/exporter.py create mode 100644 voila/voilite/static/services.js 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/.gitignore b/.gitignore index 310b1f5a2..2f93d24e7 100644 --- a/.gitignore +++ b/.gitignore @@ -41,6 +41,8 @@ share/jupyter/voila/templates/reveal/static/materialcolors.css lib voila/labextension +voila/voilite/static/voila/**/* + tsconfig.tsbuildinfo ui-tests/playwright-report diff --git a/packages/voila/index.js b/packages/voila/index.js new file mode 100644 index 000000000..523103563 --- /dev/null +++ b/packages/voila/index.js @@ -0,0 +1,189 @@ +/*************************************************************************** + * 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') + ); + + 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/src/index.ts b/packages/voila/src/index.ts index e6af693dc..c44c9300a 100644 --- a/packages/voila/src/index.ts +++ b/packages/voila/src/index.ts @@ -10,6 +10,7 @@ export * from './app'; export * from './manager'; export * from './shell'; +export * from './output'; import * as plugins from './plugins'; diff --git a/packages/voilite/package.json b/packages/voilite/package.json new file mode 100644 index 000000000..449fee0a9 --- /dev/null +++ b/packages/voilite/package.json @@ -0,0 +1,92 @@ +{ + "name": "@voila-dashboards/voilite", + "version": "0.4.0-beta.0", + "description": "The Voilite Frontend", + "author": "Voilà contributors", + "license": "BSD-3-Clause", + "main": "lib/index.js", + "browserslist": ">0.8%, not ie 11, not op_mini all, not dead", + "dependencies": { + "@jupyter-widgets/base": "^6.0.1", + "@jupyter-widgets/controls": "^5.0.1", + "@jupyter-widgets/jupyterlab-manager": "^5.0.3", + "@jupyter-widgets/output": "^6.0.1", + "@jupyterlab/application": "^3.0.0", + "@jupyterlab/apputils": "^3.0.0", + "@jupyterlab/apputils-extension": "^3.4.8", + "@jupyterlab/coreutils": "^5.0.0", + "@jupyterlab/docregistry": "^3.0.0", + "@jupyterlab/json-extension": "^3.0.0", + "@jupyterlab/logconsole": "^3.0.0", + "@jupyterlab/mainmenu": "^3.0.0", + "@jupyterlab/markdownviewer-extension": "^3.0.0", + "@jupyterlab/mathjax2-extension": "^3.0.0", + "@jupyterlab/nbconvert-css": "^3.4.8", + "@jupyterlab/nbformat": "^3.0.0", + "@jupyterlab/notebook": "^3.0.0", + "@jupyterlab/outputarea": "^3.0.0", + "@jupyterlab/rendermime": "^3.0.0", + "@jupyterlab/rendermime-extension": "^3.0.0", + "@jupyterlab/services": "^6.1.8", + "@jupyterlab/settingregistry": "^3.0.0", + "@jupyterlab/theme-dark-extension": "^3.4.8", + "@jupyterlab/theme-light-extension": "^3.4.8", + "@jupyterlab/translation": "^3.0.0", + "@jupyterlab/ui-components": "^3.0.0", + "@jupyterlite/iframe-extension": "^0.1.0-beta.13", + "@jupyterlite/pyolite-kernel-extension": "^0.1.0-beta.13", + "@jupyterlite/server": "^0.1.0-beta.13", + "@jupyterlite/server-extension": "^0.1.0-beta.13", + "@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", + "@types/node": "^18.8.3", + "babel-loader": "^8.0.5", + "css-loader": "~5.0.2", + "file-loader": "^6.2.0", + "fs-extra": "^9.1.0", + "glob": "~7.1.6", + "ignore-loader": "^0.1.2", + "json-loader": "^0.5.7", + "mini-css-extract-plugin": "~0.9.0", + "npm-run-all": "^4.1.5", + "p-limit": "^2.2.2", + "raw-loader": "^4.0.2", + "rimraf": "^3.0.2", + "style-loader": "^2.0.0", + "svg-url-loader": "^7.1.1", + "typescript": "~4.1.3", + "url-loader": "^4.1.1", + "watch": "^1.0.2", + "webpack": "^5.24.1", + "webpack-bundle-analyzer": "^4.4.0", + "webpack-cli": "^4.5.0", + "webpack-merge": "^5.7.3", + "whatwg-fetch": "^3.0.0" + }, + "scripts": { + "build": "npm run build:lib && webpack --mode=development", + "build:lib": "tsc", + "build:prod": "npm run build:lib && webpack --mode=production", + "clean": "jlpm run clean:lib && rimraf build", + "clean:lib": "rimraf lib tsconfig.tsbuildinfo", + "test": "echo \"Error: no test specified\" && exit 1", + "watch": "npm-run-all -p watch:*", + "watch:lib": "tsc -w", + "watch:bundle": "webpack --watch --mode=development" + } +} diff --git a/packages/voilite/publicpath.js b/packages/voilite/publicpath.js new file mode 100644 index 000000000..751281fe5 --- /dev/null +++ b/packages/voilite/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/voilite/src/app.ts b/packages/voilite/src/app.ts new file mode 100644 index 000000000..9b485409e --- /dev/null +++ b/packages/voilite/src/app.ts @@ -0,0 +1,267 @@ +import { + JupyterFrontEnd, + JupyterFrontEndPlugin, + createRendermimePlugins +} from '@jupyterlab/application'; + +import { PageConfig } from '@jupyterlab/coreutils'; +import { OutputAreaModel, SimplifiedOutputArea } from '@jupyterlab/outputarea'; +import { IRenderMime } from '@jupyterlab/rendermime'; +import { ServiceManager } from '@jupyterlab/services'; +import { + RenderMimeRegistry, + standardRendererFactories +} from '@jupyterlab/rendermime'; +import { IShell, VoilaShell } from '@voila-dashboards/voila'; +import { VoiliteWidgetManager } from './manager'; +import { IKernelConnection } from '@jupyterlab/services/lib/kernel/kernel'; +import { Widget } from '@lumino/widgets'; +import { managerPromise } from './plugins'; + +const PACKAGE = require('../package.json'); + +/** + * App is the main application class. It is instantiated once and shared. + */ +export class VoiliteApp extends JupyterFrontEnd { + /** + * Construct a new App object. + * + * @param options The instantiation options for an application. + */ + constructor(options: App.IOptions) { + super({ + ...options, + shell: options.shell ?? new VoilaShell() + }); + if (options.mimeExtensions) { + for (const plugin of createRendermimePlugins(options.mimeExtensions)) { + this.registerPlugin(plugin); + } + } + + this._serviceManager = options.serviceManager; + } + + /** + * The name of the application. + */ + readonly name = 'Voilite'; + + /** + * A namespace/prefix plugins may use to denote their provenance. + */ + readonly namespace = this.name; + + /** + * The version of the application. + */ + readonly version = PACKAGE['version']; + + /** + * 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); + }); + } + + async renderWidgets(): Promise { + const serviceManager = this._serviceManager; + if (!serviceManager) { + console.error('Missing service manager'); + return; + } + await serviceManager.ready; + const sessionManager = serviceManager.sessions; + await sessionManager.ready; + const connection = await sessionManager.startNew({ + name: '', + path: '', + type: 'notebook', + kernel: { + name: 'python' // TODO Correct kernel name + } + }); + const kernel = connection.kernel; + if (!kernel) { + console.error('Can not start kernel'); + return; + } + + kernel.connectionStatusChanged.connect(async (_, status) => { + if (status === 'connected') { + window.update_loading_text(0, 0, 'Starting up kernel...'); + const rendermime = new RenderMimeRegistry({ + initialFactories: standardRendererFactories + }); + + // Create Voila widget manager + const widgetManager = new VoiliteWidgetManager(kernel, rendermime); + managerPromise.resolve(widgetManager); + if (!connection.kernel) { + return; + } + // Execute Notebook + + // The wheels loading step will take way more than 500ms, + // Let's wait a little bit before listening for the + // `idle` status of the kernel. + await new Promise(r => setTimeout(r, 500)); + let executed = false; + const notebookSrc = JSON.parse( + PageConfig.getOption('notebookSrc') + ) as ICellData[]; + + kernel.statusChanged.connect(async (_, status) => { + if (!executed && status === 'idle') { + executed = true; + await App.executeCells(notebookSrc, rendermime, connection.kernel!); + } + }); + } + }); + } + + private _serviceManager?: ServiceManager; +} + +/** + * 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[]; + } + + export async function executeCells( + source: ICellData[], + rendermime: RenderMimeRegistry, + kernel: IKernelConnection + ): Promise { + // const cellKeys = Object.keys(cells).map(key => parseInt(key)); + const cellCount = source.length; + for (let idx = 0; idx < cellCount; idx++) { + const cell = source[idx]; + window.update_loading_text(idx + 1, cellCount, null); + if (cell.cell_type !== 'code') { + if (idx === cellCount - 1) { + window.display_cells(); + } + continue; + } + const model = new OutputAreaModel({ trusted: true }); + const area = new SimplifiedOutputArea({ + model, + rendermime + }); + area.future = kernel.requestExecute({ + code: cell.cell_source + }); + await area.future.done; + const element = document.querySelector(`[cell-index="${idx + 1}"]`); + + if (element) { + if (area.node.childNodes.length > 0) { + element.lastElementChild?.classList.remove( + 'jp-mod-noOutputs', + 'jp-mod-noInput' + ); + const wrapper = document.createElement('div'); + wrapper.classList.add('jp-Cell-outputWrapper'); + element.lastElementChild?.appendChild(wrapper); + area.node.classList.add('jp-Cell-outputArea', 'jp-OutputArea-child'); + Widget.attach(area, wrapper); + } + } + if (idx === cellCount - 1) { + window.display_cells(); + window.dispatchEvent(new Event('resize')); + } + } + } +} diff --git a/packages/voilite/src/bootstrap.ts b/packages/voilite/src/bootstrap.ts new file mode 100644 index 000000000..a1b3b9319 --- /dev/null +++ b/packages/voilite/src/bootstrap.ts @@ -0,0 +1 @@ +import('./index.js'); diff --git a/packages/voilite/src/global.d.ts b/packages/voilite/src/global.d.ts new file mode 100644 index 000000000..8df0f7a33 --- /dev/null +++ b/packages/voilite/src/global.d.ts @@ -0,0 +1,20 @@ +/*eslint no-var: 0*/ + +declare function __webpack_init_sharing__(arg: any); +declare var _JUPYTERLAB; +declare var __webpack_share_scopes__: any; +declare var jupyterapp: any; +interface ICellData { + cell_count: number; + cell_type: string; + cell_source: string; +} +declare var cells: { + [key: number]: ICellData; +}; +declare function update_loading_text( + cell_index: number, + cell_count: number, + text: string | null +); +declare function display_cells(); diff --git a/packages/voilite/src/index.ts b/packages/voilite/src/index.ts new file mode 100644 index 000000000..e38f85022 --- /dev/null +++ b/packages/voilite/src/index.ts @@ -0,0 +1,229 @@ +/*************************************************************************** + * Copyright (c) 2022, Voilà contributors * + * Copyright (c) 2022, QuantStack * + * * + * Distributed under the terms of the BSD 3-Clause License. * + * * + * The full license is in the file LICENSE, distributed with this software. * + ****************************************************************************/ +import '@jupyterlab/nbconvert-css/style/index.css'; + +import { PageConfig, URLExt } from '@jupyterlab/coreutils'; +import { JupyterLiteServer } from '@jupyterlite/server'; +import { VoilaShell } from '@voila-dashboards/voila'; + +import { VoiliteApp } from './app'; +import plugins from './plugins'; + +// 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 + +function loadScript(url: string) { + 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: string, scope: string) { + 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: string, module: any) { + 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 serverExtensions = [ + // import('@jupyterlite/javascript-kernel-extension'), + import('@jupyterlite/pyolite-kernel-extension'), + import('@jupyterlite/server-extension') +]; + +const disabled = ['@jupyter-widgets/jupyterlab-manager']; + +/** + * The main function + */ +async function main() { + const mods = [ + // @jupyterlab plugins + require('@jupyterlab/apputils-extension').default.filter((m: any) => + [ + '@jupyterlab/apputils-extension:settings', + '@jupyterlab/apputils-extension:themes' + ].includes(m.id) + ), + 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'), + plugins + ]; + + const mimeExtensions = [ + require('@jupyterlite/iframe-extension'), + require('@jupyterlab/json-extension') + ]; + + /** + * Iterate over active plugins in an extension. + * + * #### Notes + * This also populates the disabled + */ + function* activePlugins(extension: any) { + // Handle commonjs or es2015 modules + let exports; + if (Object.prototype.hasOwnProperty.call(extension, '__esModule')) { + exports = extension.default; + } else { + // CommonJS exports. + exports = extension; + } + + const plugins = Array.isArray(exports) ? exports : [exports]; + for (const 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') + ); + + const federatedExtensionPromises: any[] = []; + const federatedMimeExtensionPromises: any[] = []; + const federatedStylePromises: any[] = []; + + const extensions = await Promise.allSettled( + extensionData.map(async (data: any) => { + await loadComponent( + `${URLExt.join( + PageConfig.getOption('fullLabextensionsUrl'), + data.name, + data.load + )}`, + data.name + ); + return data; + }) + ); + + Object.entries(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 (const 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 (const 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(p => { + console.error((p as PromiseRejectedResult).reason); + }); + + const litePluginsToRegister: any[] = []; + const baseServerExtensions = await Promise.all(serverExtensions); + baseServerExtensions.forEach(p => { + for (const plugin of activePlugins(p)) { + litePluginsToRegister.push(plugin); + } + }); + console.log('start server'); + + // create the in-browser JupyterLite Server + const jupyterLiteServer = new JupyterLiteServer({ shell: null as never }); + + jupyterLiteServer.registerPluginModules(litePluginsToRegister); + // start the server + await jupyterLiteServer.start(); + console.log('done server'); + const serviceManager = jupyterLiteServer.serviceManager; + const app = new VoiliteApp({ + serviceManager: serviceManager as any, + mimeExtensions, + shell: new VoilaShell() + }); + + app.registerPluginModules(mods); + + await app.start(); + await app.renderWidgets(); + window.jupyterapp = app; +} + +window.addEventListener('load', main); diff --git a/packages/voilite/src/manager.ts b/packages/voilite/src/manager.ts new file mode 100644 index 000000000..2a90b3364 --- /dev/null +++ b/packages/voilite/src/manager.ts @@ -0,0 +1,63 @@ +/*************************************************************************** + * Copyright (c) 2022, Voilà contributors * + * Copyright (c) 2022, QuantStack * + * * + * Distributed under the terms of the BSD 3-Clause License. * + * * + * The full license is in the file LICENSE, distributed with this software. * + ****************************************************************************/ + +import * as base from '@jupyter-widgets/base'; +import * as controls from '@jupyter-widgets/controls'; +import { + KernelWidgetManager, + output, + WidgetRenderer +} from '@jupyter-widgets/jupyterlab-manager'; +import { IRenderMimeRegistry } from '@jupyterlab/rendermime'; +import { Kernel } from '@jupyterlab/services'; +import { OutputModel } from '@voila-dashboards/voila'; + +const WIDGET_MIMETYPE = 'application/vnd.jupyter.widget-view+json'; + +/** + * A custom widget manager to render widgets with Voila + */ +export class VoiliteWidgetManager extends KernelWidgetManager { + constructor( + kernel: Kernel.IKernelConnection, + rendermime: IRenderMimeRegistry + ) { + super(kernel, rendermime); + rendermime.addFactory( + { + safe: false, + mimeTypes: [WIDGET_MIMETYPE], + createRenderer: options => new WidgetRenderer(options, this as any) + }, + -10 + ); + this._registerWidgets(); + } + + private _registerWidgets(): void { + this.register({ + name: '@jupyter-widgets/base', + version: base.JUPYTER_WIDGETS_VERSION, + exports: base as any + }); + this.register({ + name: '@jupyter-widgets/controls', + version: controls.JUPYTER_CONTROLS_VERSION, + exports: controls as any + }); + this.register({ + name: '@jupyter-widgets/output', + version: output.OUTPUT_WIDGET_VERSION, + exports: { + ...(output as any), + OutputModel + } + }); + } +} diff --git a/packages/voilite/src/plugins.ts b/packages/voilite/src/plugins.ts new file mode 100644 index 000000000..73546021f --- /dev/null +++ b/packages/voilite/src/plugins.ts @@ -0,0 +1,123 @@ +import { PageConfig } from '@jupyterlab/coreutils'; +/*************************************************************************** + * Copyright (c) 2022, Voilà contributors * + * Copyright (c) 2022, QuantStack * + * * + * Distributed under the terms of the BSD 3-Clause License. * + * * + * The full license is in the file LICENSE, distributed with this software. * + ****************************************************************************/ +import * as base from '@jupyter-widgets/base'; +import { + JupyterFrontEnd, + JupyterFrontEndPlugin +} from '@jupyterlab/application'; +import { IThemeManager } from '@jupyterlab/apputils'; +import { ITranslator, TranslationManager } from '@jupyterlab/translation'; +import { PromiseDelegate } from '@lumino/coreutils'; +import { VoilaApp } from '@voila-dashboards/voila'; + +import { VoiliteWidgetManager } 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 +}; + +export const managerPromise = new PromiseDelegate(); + +/** + * The Voila widgets manager plugin. + */ +const widgetManager = { + id: '@voila-dashboards/voilite:widget-manager', + autoStart: true, + provides: base.IJupyterWidgetRegistry, + activate: async (): Promise => { + return { + registerWidget: async (data: any) => { + const manager = await managerPromise.promise; + manager.register(data); + } + }; + } +}; + +/** + * A plugin to handler the theme + */ +const themePlugin: JupyterFrontEndPlugin = { + id: '@voila-dashboards/voilite:theme-manager', + autoStart: true, + optional: [IThemeManager], + activate: (app: JupyterFrontEnd, themeManager: IThemeManager | null) => { + if (!themeManager) { + return; + } + const labThemeName = PageConfig.getOption('labThemeName'); + + const search = window.location.search; + const urlParams = new URLSearchParams(search); + const theme = urlParams.get('theme')?.trim() ?? labThemeName; + + const themeName = decodeURIComponent(theme); + + themeManager.setTheme(themeName); + } +}; + +/** + * Export the plugins as default. + */ +const plugins: JupyterFrontEndPlugin[] = [ + paths, + stopPolling, + translator, + widgetManager, + themePlugin +]; + +export default plugins; diff --git a/packages/voilite/style.css b/packages/voilite/style.css new file mode 100644 index 000000000..03b669625 --- /dev/null +++ b/packages/voilite/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/voilite/style/index.css b/packages/voilite/style/index.css new file mode 100644 index 000000000..e69de29bb diff --git a/packages/voilite/tsconfig.json b/packages/voilite/tsconfig.json new file mode 100644 index 000000000..b3e424fbf --- /dev/null +++ b/packages/voilite/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfigbase", + "compilerOptions": { + "outDir": "lib", + "rootDir": "src", + "types": ["node"] + }, + "include": ["src/**/*"] +} diff --git a/packages/voilite/webpack.config.js b/packages/voilite/webpack.config.js new file mode 100644 index 000000000..9bba85406 --- /dev/null +++ b/packages/voilite/webpack.config.js @@ -0,0 +1,166 @@ +// 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 glob = require('glob'); +const Build = require('@jupyterlab/builder').Build; +const baseConfig = require('@jupyterlab/builder/lib/webpack.config.base'); + +const data = require('./package.json'); + +/** + * A helper for filtering deprecated webpack loaders, to be replaced with assets + */ +function filterDeprecatedRule(rule) { + if (typeof rule.use === 'string' && rule.use.match(/^(file|url)-loader/)) { + return false; + } + return true; +} + +baseConfig.module.rules = [ + { + test: /\.json$/, + use: ['json-loader'], + type: 'javascript/auto' + }, + ...baseConfig.module.rules.filter(filterDeprecatedRule) +]; + +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 style = path.resolve(__dirname, 'style.css'); + +fs.copySync(libDir, buildDir); +fs.copySync(style, path.resolve(buildDir, 'style.css')); + +const distRoot = path.resolve( + __dirname, + '..', + '..', + 'voila', + 'voilite', + 'static', + 'voila' +); + +const topLevelBuild = path.resolve('build'); + +const extras = Build.ensureAssets({ + packageNames: names, + output: buildDir, + themeOutput: path.resolve(distRoot) +}); + +// Make a bootstrap entrypoint +const entryPoint = path.join(buildDir, 'bootstrap.js'); + +if (process.env.NODE_ENV === 'production') { + baseConfig.mode = 'production'; +} + +class CompileSchemasPlugin { + apply(compiler) { + compiler.hooks.done.tapAsync( + 'CompileSchemasPlugin', + (compilation, callback) => { + // ensure all schemas are statically compiled + const schemaDir = path.resolve(topLevelBuild, './schemas'); + const files = glob.sync(`${schemaDir}/**/*.json`, { + ignore: [`${schemaDir}/all.json`] + }); + const all = files.map(file => { + const schema = fs.readJSONSync(file); + const pluginFile = file.replace(`${schemaDir}/`, ''); + const basename = path.basename(pluginFile, '.json'); + const dirname = path.dirname(pluginFile); + const packageJsonFile = path.resolve( + schemaDir, + dirname, + 'package.json.orig' + ); + const packageJson = fs.readJSONSync(packageJsonFile); + const pluginId = `${dirname}:${basename}`; + return { + id: pluginId, + raw: '{}', + schema, + settings: {}, + version: packageJson.version + }; + }); + const distDir = path.resolve(distRoot, 'schemas'); + fs.mkdirSync(distDir, { recursive: true }); + fs.writeFileSync( + path.resolve(distDir, 'all.json'), + JSON.stringify(all) + ); + callback(); + } + ); + } +} + +module.exports = [ + merge(baseConfig, { + mode: 'development', + entry: ['./publicpath.js', './' + path.relative(__dirname, entryPoint)], + output: { + path: distRoot, + library: { + type: 'var', + name: ['_JUPYTERLAB', 'CORE_OUTPUT'] + }, + filename: 'voilite.js' + }, + module: { + rules: [ + // just keep the woff2 fonts from fontawesome + { + test: /fontawesome-free.*\.(svg|eot|ttf|woff)$/, + loader: 'ignore-loader' + }, + { + test: /\.(jpe?g|png|gif|ico|eot|ttf|map|woff2?)(\?v=\d+\.\d+\.\d+)?$/i, + type: 'asset/resource' + } + ] + }, + plugins: [ + new webpack.DefinePlugin({ + // Needed for Blueprint. See https://github.com/palantir/blueprint/issues/4393 + 'process.env': '{}', + // Needed for various packages using cwd(), like the path polyfill + process: { cwd: () => '/' } + }), + new ModuleFederationPlugin({ + library: { + type: 'var', + name: ['_JUPYTERLAB', 'CORE_LIBRARY_FEDERATION'] + }, + name: 'CORE_FEDERATION', + shared: { + ...data.dependencies + } + }), + new CompileSchemasPlugin() + ] + }) +].concat(extras); diff --git a/pyproject.toml b/pyproject.toml index 84e49032a..a0f7ebce8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -70,6 +70,10 @@ test = [ [project.scripts] voila = "voila.app:main" +voilite = "voila.voilite.app:main" + +[project.entry-points."nbconvert.exporters"] +voilite_dashboard = "voilite.exporter:VoiliteExporter" [project.urls] Homepage = "https://github.com/voila-dashboards/voila" @@ -80,7 +84,8 @@ path = "voila/_version.py" [tool.hatch.build] artifacts = [ "voila/labextension", - "share/jupyter/voila/templates" + "share/jupyter/voila/templates", + "voila/voilite/static", ] [tool.hatch.build.hooks.custom] @@ -105,6 +110,7 @@ dependencies = [ build-function = "hatch_jupyter_builder.npm_builder" ensured-targets = [ "voila/labextension/static/style.js", + "voila/voilite/static/voila/voilite.js", "share/jupyter/voila/templates/classic/static/materialcolors.css", "share/jupyter/voila/templates/classic/static/labvariables.css", "share/jupyter/voila/templates/reveal/static/materialcolors.css", @@ -112,6 +118,7 @@ ensured-targets = [ ] skip-if-exists = [ "voila/labextension/static/style.js", + "voila/voilite/static/voila/voilite.js", "share/jupyter/voila/templates/classic/static/materialcolors.css", "share/jupyter/voila/templates/classic/static/labvariables.css", "share/jupyter/voila/templates/reveal/static/materialcolors.css", diff --git a/share/jupyter/voila/templates/base/spinner.macro.html.j2 b/share/jupyter/voila/templates/base/spinner.macro.html.j2 index 230d1581f..8a517529b 100644 --- a/share/jupyter/voila/templates/base/spinner.macro.html.j2 +++ b/share/jupyter/voila/templates/base/spinner.macro.html.j2 @@ -36,7 +36,7 @@ {% endmacro %} {% macro html() %} -
+
{{ voila_setup_labextensions(resources.base_url, resources.labextensions) }} {{ super() }} diff --git a/yarn.lock b/yarn.lock index b7a0a7b28..c12497003 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24,38 +24,38 @@ dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.1.tgz#72d647b4ff6a4f82878d184613353af1dd0290f9" - integrity sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg== +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.0", "@babel/compat-data@^7.20.1": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.1.tgz#f2e6ef7790d8c8dbf03d379502dcc246dcce0b30" + integrity sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ== "@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.19.1" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.1.tgz#c8fa615c5e88e272564ace3d42fbc8b17bfeb22b" - integrity sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw== + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.2.tgz#8dc9b1620a673f92d3624bd926dc49a52cf25b92" + integrity sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.0" - "@babel/helper-compilation-targets" "^7.19.1" - "@babel/helper-module-transforms" "^7.19.0" - "@babel/helpers" "^7.19.0" - "@babel/parser" "^7.19.1" + "@babel/generator" "^7.20.2" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-module-transforms" "^7.20.2" + "@babel/helpers" "^7.20.1" + "@babel/parser" "^7.20.2" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.1" - "@babel/types" "^7.19.0" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.2" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.0.tgz#785596c06425e59334df2ccee63ab166b738419a" - integrity sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg== +"@babel/generator@^7.20.1", "@babel/generator@^7.20.2": + version "7.20.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.3.tgz#e58c9ae2f7bf7fdf4899160cf1e04400a82cd641" + integrity sha512-Wl5ilw2UD1+ZYprHVprxHZJCFeBWlzZYOovE4SDYLZnqCOD11j+0QzNeEWKLLTWM7nixrZEh7vNIyb76MyJg3A== dependencies: - "@babel/types" "^7.19.0" + "@babel/types" "^7.20.2" "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" @@ -74,27 +74,27 @@ "@babel/helper-explode-assignable-expression" "^7.18.6" "@babel/types" "^7.18.9" -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0", "@babel/helper-compilation-targets@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz#7f630911d83b408b76fe584831c98e5395d7a17c" - integrity sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg== +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" + integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== dependencies: - "@babel/compat-data" "^7.19.1" + "@babel/compat-data" "^7.20.0" "@babel/helper-validator-option" "^7.18.6" browserslist "^4.21.3" semver "^6.3.0" "@babel/helper-create-class-features-plugin@^7.18.6": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz#bfd6904620df4e46470bae4850d66be1054c404b" - integrity sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw== + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz#3c08a5b5417c7f07b5cf3dfb6dc79cbec682e8c2" + integrity sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-function-name" "^7.19.0" "@babel/helper-member-expression-to-functions" "^7.18.9" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-replace-supers" "^7.19.1" "@babel/helper-split-export-declaration" "^7.18.6" "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.19.0": @@ -158,19 +158,19 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz#309b230f04e22c58c6a2c0c0c7e50b216d350c30" - integrity sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ== +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.6", "@babel/helper-module-transforms@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712" + integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.2" "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" @@ -179,10 +179,10 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz#4796bb14961521f0f8715990bee2fb6e51ce21bf" - integrity sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== "@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" @@ -194,7 +194,7 @@ "@babel/helper-wrap-function" "^7.18.9" "@babel/types" "^7.18.9" -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz#e1592a9b4b368aa6bdb8784a711e0bcbf0612b78" integrity sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw== @@ -205,19 +205,19 @@ "@babel/traverse" "^7.19.1" "@babel/types" "^7.19.0" -"@babel/helper-simple-access@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea" - integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== +"@babel/helper-simple-access@^7.19.4", "@babel/helper-simple-access@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== dependencies: - "@babel/types" "^7.18.6" + "@babel/types" "^7.20.2" "@babel/helper-skip-transparent-expression-wrappers@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818" - integrity sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw== + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" + integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== dependencies: - "@babel/types" "^7.18.9" + "@babel/types" "^7.20.0" "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" @@ -226,12 +226,12 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-string-parser@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" - integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== +"@babel/helper-string-parser@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== -"@babel/helper-validator-identifier@^7.18.6": +"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== @@ -251,14 +251,14 @@ "@babel/traverse" "^7.19.0" "@babel/types" "^7.19.0" -"@babel/helpers@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.19.0.tgz#f30534657faf246ae96551d88dd31e9d1fa1fc18" - integrity sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg== +"@babel/helpers@^7.20.1": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.1.tgz#2ab7a0fcb0a03b5bf76629196ed63c2d7311f4c9" + integrity sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg== dependencies: "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.0" "@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6": version "7.18.6" @@ -269,10 +269,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.1.tgz#6f6d6c2e621aad19a92544cc217ed13f1aac5b4c" - integrity sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.20.1", "@babel/parser@^7.20.2": + version "7.20.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.3.tgz#5358cf62e380cf69efcb87a7bb922ff88bfac6e2" + integrity sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" @@ -290,10 +290,10 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-proposal-optional-chaining" "^7.18.9" -"@babel/plugin-proposal-async-generator-functions@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz#34f6f5174b688529342288cd264f80c9ea9fb4a7" - integrity sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q== +"@babel/plugin-proposal-async-generator-functions@^7.20.1": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz#352f02baa5d69f4e7529bdac39aaa02d41146af9" + integrity sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-plugin-utils" "^7.19.0" @@ -365,16 +365,16 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7" - integrity sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q== +"@babel/plugin-proposal-object-rest-spread@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz#a556f59d555f06961df1e572bb5eca864c84022d" + integrity sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ== dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/compat-data" "^7.20.1" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.18.8" + "@babel/plugin-transform-parameters" "^7.20.1" "@babel/plugin-proposal-optional-catch-binding@^7.18.6": version "7.18.6" @@ -461,12 +461,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-import-assertions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz#cd6190500a4fa2fe31990a963ffab4b63e4505e4" - integrity sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ== +"@babel/plugin-syntax-import-assertions@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4" + integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" @@ -561,25 +561,25 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-block-scoping@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz#f9b7e018ac3f373c81452d6ada8bd5a18928926d" - integrity sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw== +"@babel/plugin-transform-block-scoping@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz#f59b1767e6385c663fd0bce655db6ca9c8b236ed" + integrity sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-classes@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz#0e61ec257fba409c41372175e7c1e606dc79bb20" - integrity sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A== +"@babel/plugin-transform-classes@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz#c0033cf1916ccf78202d04be4281d161f6709bb2" + integrity sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-compilation-targets" "^7.19.0" + "@babel/helper-compilation-targets" "^7.20.0" "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-function-name" "^7.19.0" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-replace-supers" "^7.19.1" "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" @@ -590,12 +590,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-destructuring@^7.18.13": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz#9e03bc4a94475d62b7f4114938e6c5c33372cbf5" - integrity sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow== +"@babel/plugin-transform-destructuring@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz#c23741cfa44ddd35f5e53896e88c75331b8b2792" + integrity sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.18.6" @@ -650,35 +650,32 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-modules-amd@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz#8c91f8c5115d2202f277549848874027d7172d21" - integrity sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg== +"@babel/plugin-transform-modules-amd@^7.19.6": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz#aca391801ae55d19c4d8d2ebfeaa33df5f2a2cbd" + integrity sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg== dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-module-transforms" "^7.19.6" + "@babel/helper-plugin-utils" "^7.19.0" -"@babel/plugin-transform-modules-commonjs@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz#afd243afba166cca69892e24a8fd8c9f2ca87883" - integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== +"@babel/plugin-transform-modules-commonjs@^7.19.6": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz#25b32feef24df8038fc1ec56038917eacb0b730c" + integrity sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ== dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-module-transforms" "^7.19.6" + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-simple-access" "^7.19.4" -"@babel/plugin-transform-modules-systemjs@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz#5f20b471284430f02d9c5059d9b9a16d4b085a1f" - integrity sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A== +"@babel/plugin-transform-modules-systemjs@^7.19.6": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz#59e2a84064b5736a4471b1aa7b13d4431d327e0d" + integrity sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ== dependencies: "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.19.0" + "@babel/helper-module-transforms" "^7.19.6" "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-validator-identifier" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-validator-identifier" "^7.19.1" "@babel/plugin-transform-modules-umd@^7.18.6": version "7.18.6" @@ -711,12 +708,12 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-replace-supers" "^7.18.6" -"@babel/plugin-transform-parameters@^7.18.8": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" - integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== +"@babel/plugin-transform-parameters@^7.20.1": + version "7.20.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz#7b3468d70c3c5b62e46be0a47b6045d8590fb748" + integrity sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-property-literals@^7.18.6": version "7.18.6" @@ -792,17 +789,17 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/preset-env@^7.10.2", "@babel/preset-env@^7.3.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.19.1.tgz#9f04c916f9c0205a48ebe5cc1be7768eb1983f67" - integrity sha512-c8B2c6D16Lp+Nt6HcD+nHl0VbPKVnNPTpszahuxJJnurfMtKeZ80A+qUv48Y7wqvS+dTFuLuaM9oYxyNHbCLWA== + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.20.2.tgz#9b1642aa47bb9f43a86f9630011780dab7f86506" + integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg== dependencies: - "@babel/compat-data" "^7.19.1" - "@babel/helper-compilation-targets" "^7.19.1" - "@babel/helper-plugin-utils" "^7.19.0" + "@babel/compat-data" "^7.20.1" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.19.1" + "@babel/plugin-proposal-async-generator-functions" "^7.20.1" "@babel/plugin-proposal-class-properties" "^7.18.6" "@babel/plugin-proposal-class-static-block" "^7.18.6" "@babel/plugin-proposal-dynamic-import" "^7.18.6" @@ -811,7 +808,7 @@ "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.18.9" + "@babel/plugin-proposal-object-rest-spread" "^7.20.2" "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" "@babel/plugin-proposal-optional-chaining" "^7.18.9" "@babel/plugin-proposal-private-methods" "^7.18.6" @@ -822,7 +819,7 @@ "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.18.6" + "@babel/plugin-syntax-import-assertions" "^7.20.0" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" @@ -835,10 +832,10 @@ "@babel/plugin-transform-arrow-functions" "^7.18.6" "@babel/plugin-transform-async-to-generator" "^7.18.6" "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.18.9" - "@babel/plugin-transform-classes" "^7.19.0" + "@babel/plugin-transform-block-scoping" "^7.20.2" + "@babel/plugin-transform-classes" "^7.20.2" "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.18.13" + "@babel/plugin-transform-destructuring" "^7.20.2" "@babel/plugin-transform-dotall-regex" "^7.18.6" "@babel/plugin-transform-duplicate-keys" "^7.18.9" "@babel/plugin-transform-exponentiation-operator" "^7.18.6" @@ -846,14 +843,14 @@ "@babel/plugin-transform-function-name" "^7.18.9" "@babel/plugin-transform-literals" "^7.18.9" "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.18.6" - "@babel/plugin-transform-modules-commonjs" "^7.18.6" - "@babel/plugin-transform-modules-systemjs" "^7.19.0" + "@babel/plugin-transform-modules-amd" "^7.19.6" + "@babel/plugin-transform-modules-commonjs" "^7.19.6" + "@babel/plugin-transform-modules-systemjs" "^7.19.6" "@babel/plugin-transform-modules-umd" "^7.18.6" "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" "@babel/plugin-transform-new-target" "^7.18.6" "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.18.8" + "@babel/plugin-transform-parameters" "^7.20.1" "@babel/plugin-transform-property-literals" "^7.18.6" "@babel/plugin-transform-regenerator" "^7.18.6" "@babel/plugin-transform-reserved-words" "^7.18.6" @@ -865,7 +862,7 @@ "@babel/plugin-transform-unicode-escapes" "^7.18.10" "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.19.0" + "@babel/types" "^7.20.2" babel-plugin-polyfill-corejs2 "^0.3.3" babel-plugin-polyfill-corejs3 "^0.6.0" babel-plugin-polyfill-regenerator "^0.4.1" @@ -884,11 +881,11 @@ esutils "^2.0.2" "@babel/runtime@^7.1.2", "@babel/runtime@^7.8.4": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.0.tgz#22b11c037b094d27a8a2504ea4dcff00f50e2259" - integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA== + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.1.tgz#1148bb33ab252b165a06698fde7576092a78b4a9" + integrity sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg== dependencies: - regenerator-runtime "^0.13.4" + regenerator-runtime "^0.13.10" "@babel/template@^7.18.10", "@babel/template@^7.3.3": version "7.18.10" @@ -899,29 +896,29 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.1.tgz#0fafe100a8c2a603b4718b1d9bf2568d1d193347" - integrity sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA== +"@babel/traverse@^7.1.0", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.20.1": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.1.tgz#9b15ccbf882f6d107eeeecf263fbcdd208777ec8" + integrity sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.0" + "@babel/generator" "^7.20.1" "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-function-name" "^7.19.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.19.1" - "@babel/types" "^7.19.0" + "@babel/parser" "^7.20.1" + "@babel/types" "^7.20.0" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.0.tgz#75f21d73d73dc0351f3368d28db73465f4814600" - integrity sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA== +"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.2.tgz#67ac09266606190f496322dbaff360fdaa5e7842" + integrity sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog== dependencies: - "@babel/helper-string-parser" "^7.18.10" - "@babel/helper-validator-identifier" "^7.18.6" + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -930,9 +927,9 @@ integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@blueprintjs/colors@^4.0.0-alpha.3": - version "4.1.6" - resolved "https://registry.yarnpkg.com/@blueprintjs/colors/-/colors-4.1.6.tgz#a2e3d02b40867b3770187c69a8514f113ab4dd85" - integrity sha512-3/kahUWyvgQUV9NtCMeeJgTFHziM2Z3f4hjDfnl03X4MW0onUeZfa2Mu4ZsRn2IAK7AmfLNkZe8vp8mxX9pDRg== + version "4.1.9" + resolved "https://registry.yarnpkg.com/@blueprintjs/colors/-/colors-4.1.9.tgz#cabba3ba18d58070168df40234a78ce34c7fa2cc" + integrity sha512-AxBKGwHS9Ojs7YPRMiwDlUEnSG36P/Hi0C3i4/smPmzUzqFGp1ZDqTmBBM15XoUKIuYfmpNATqIdKgNx2OzOkg== "@blueprintjs/core@^3.36.0", "@blueprintjs/core@^3.54.0": version "3.54.0" @@ -1238,7 +1235,7 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@^3.0.3": +"@jridgewell/resolve-uri@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== @@ -1256,18 +1253,18 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@^1.4.10": +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.14" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== "@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.15" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774" - integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g== + version "0.3.17" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" "@juggle/resize-observer@^3.3.1": version "3.4.0" @@ -1354,44 +1351,21 @@ dependencies: "@jupyter-widgets/base" "^6.0.1" -"@jupyterlab/application@^3.0.0", "@jupyterlab/application@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/application/-/application-3.4.7.tgz#f97f9cc2cee105c9ad064f9531f1e5960b86b465" - integrity sha512-lm+kHctu3aFs0NPtIpKhHpDrcdItJS6xfNpAyORWwncErs+SuMjw45s9NQeH3zmlzLad133P0KpcpXsMxNNPLg== +"@jupyterlab/application@^3.0.0", "@jupyterlab/application@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/application/-/application-3.5.0.tgz#44705368565c82c8effd07132994c6401d24e152" + integrity sha512-cXqxYW74HjMaMkEzjw53KSKQOQ/FSRY8fmBM+pVYUNFf281M8d5VAa96L7JNSMQaJ/i/M/fnpuH1QbldYjumkg== dependencies: "@fortawesome/fontawesome-free" "^5.12.0" - "@jupyterlab/apputils" "^3.4.7" - "@jupyterlab/coreutils" "^5.4.7" - "@jupyterlab/docregistry" "^3.4.7" - "@jupyterlab/rendermime" "^3.4.7" - "@jupyterlab/rendermime-interfaces" "^3.4.7" - "@jupyterlab/services" "^6.4.7" - "@jupyterlab/statedb" "^3.4.7" - "@jupyterlab/translation" "^3.4.7" - "@jupyterlab/ui-components" "^3.4.7" - "@lumino/algorithm" "^1.9.0" - "@lumino/application" "^1.27.0" - "@lumino/commands" "^1.19.0" - "@lumino/coreutils" "^1.11.0" - "@lumino/disposable" "^1.10.0" - "@lumino/messaging" "^1.10.0" - "@lumino/polling" "^1.9.0" - "@lumino/properties" "^1.8.0" - "@lumino/signaling" "^1.10.0" - "@lumino/widgets" "^1.33.0" - -"@jupyterlab/apputils@^3.0.0", "@jupyterlab/apputils@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/apputils/-/apputils-3.4.7.tgz#e7fd82406450d034bf83780b42678d1d8ace4496" - integrity sha512-fdzSn/xiPRTRay1AooCmZolhva844cJhlMmUyQsj+B8IXX+qAw9Spj8KhjpQCJwcSo9SH4yVGPGzQiuZmPG0Aw== - dependencies: - "@jupyterlab/coreutils" "^5.4.7" - "@jupyterlab/observables" "^4.4.7" - "@jupyterlab/services" "^6.4.7" - "@jupyterlab/settingregistry" "^3.4.7" - "@jupyterlab/statedb" "^3.4.7" - "@jupyterlab/translation" "^3.4.7" - "@jupyterlab/ui-components" "^3.4.7" + "@jupyterlab/apputils" "^3.5.0" + "@jupyterlab/coreutils" "^5.5.0" + "@jupyterlab/docregistry" "^3.5.0" + "@jupyterlab/rendermime" "^3.5.0" + "@jupyterlab/rendermime-interfaces" "^3.5.0" + "@jupyterlab/services" "^6.5.0" + "@jupyterlab/statedb" "^3.5.0" + "@jupyterlab/translation" "^3.5.0" + "@jupyterlab/ui-components" "^3.5.0" "@lumino/algorithm" "^1.9.0" "@lumino/application" "^1.27.0" "@lumino/commands" "^1.19.0" @@ -1404,21 +1378,21 @@ "@lumino/widgets" "^1.33.0" "@jupyterlab/apputils-extension@^3.4.8": - version "3.4.8" - resolved "https://registry.yarnpkg.com/@jupyterlab/apputils-extension/-/apputils-extension-3.4.8.tgz#f7655c8ecdb3c0613388a97a9c52568929f4d6b4" - integrity sha512-S/9RYBV/RImOj30V8s3e3LlqVp+IhqWv4OvphFrnWtk16ERuS7cKSIkWa6U56dcHegRBh8cNBtxLV2/EZWOlng== - dependencies: - "@jupyterlab/application" "^3.4.8" - "@jupyterlab/apputils" "^3.4.8" - "@jupyterlab/coreutils" "^5.4.8" - "@jupyterlab/docregistry" "^3.4.8" - "@jupyterlab/filebrowser" "^3.4.8" - "@jupyterlab/mainmenu" "^3.4.8" - "@jupyterlab/services" "^6.4.8" - "@jupyterlab/settingregistry" "^3.4.8" - "@jupyterlab/statedb" "^3.4.8" - "@jupyterlab/translation" "^3.4.8" - "@jupyterlab/ui-components" "^3.4.8" + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/apputils-extension/-/apputils-extension-3.5.0.tgz#d09b7f8e94c04eead79e89e198adcdca57be61a8" + integrity sha512-lxGEF5DvwuiJGsv42s6AqGibJln6WLy6oL7ATfRnaVFo5e88oVye+k0wn7gMe/p/AVTTkUA6FFYpT2WBnUcYlA== + dependencies: + "@jupyterlab/application" "^3.5.0" + "@jupyterlab/apputils" "^3.5.0" + "@jupyterlab/coreutils" "^5.5.0" + "@jupyterlab/docregistry" "^3.5.0" + "@jupyterlab/filebrowser" "^3.5.0" + "@jupyterlab/mainmenu" "^3.5.0" + "@jupyterlab/services" "^6.5.0" + "@jupyterlab/settingregistry" "^3.5.0" + "@jupyterlab/statedb" "^3.5.0" + "@jupyterlab/translation" "^3.5.0" + "@jupyterlab/ui-components" "^3.5.0" "@lumino/algorithm" "^1.9.0" "@lumino/commands" "^1.19.0" "@lumino/coreutils" "^1.11.0" @@ -1427,18 +1401,18 @@ "@lumino/widgets" "^1.33.0" es6-promise "~4.2.8" -"@jupyterlab/apputils@^3.0.0", "@jupyterlab/apputils@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/apputils/-/apputils-3.4.7.tgz#e7fd82406450d034bf83780b42678d1d8ace4496" - integrity sha512-fdzSn/xiPRTRay1AooCmZolhva844cJhlMmUyQsj+B8IXX+qAw9Spj8KhjpQCJwcSo9SH4yVGPGzQiuZmPG0Aw== - dependencies: - "@jupyterlab/coreutils" "^5.4.7" - "@jupyterlab/observables" "^4.4.7" - "@jupyterlab/services" "^6.4.7" - "@jupyterlab/settingregistry" "^3.4.7" - "@jupyterlab/statedb" "^3.4.7" - "@jupyterlab/translation" "^3.4.7" - "@jupyterlab/ui-components" "^3.4.7" +"@jupyterlab/apputils@^3.0.0", "@jupyterlab/apputils@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/apputils/-/apputils-3.5.0.tgz#9ce715f6d56d3647798dc8d1108c638466459d3f" + integrity sha512-brL1CR0F2ocxt+YSWQGRh9OoJWxlqQb5BxQNJy+qJceCpwkMyZmZyf2gxHc9bu67HkL96Sa46wGIn6WKobARrA== + dependencies: + "@jupyterlab/coreutils" "^5.5.0" + "@jupyterlab/observables" "^4.5.0" + "@jupyterlab/services" "^6.5.0" + "@jupyterlab/settingregistry" "^3.5.0" + "@jupyterlab/statedb" "^3.5.0" + "@jupyterlab/translation" "^3.5.0" + "@jupyterlab/ui-components" "^3.5.0" "@lumino/algorithm" "^1.9.0" "@lumino/commands" "^1.19.0" "@lumino/coreutils" "^1.11.0" @@ -1456,59 +1430,24 @@ sanitize-html "~2.5.3" url "^0.11.0" -"@jupyterlab/attachments@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/attachments/-/attachments-3.4.7.tgz#6c5fa025457bd2437b50fdf4b3d9b2598fed8387" - integrity sha512-n7ZrHXZ9QlHxDlsDKJ3r1+UpFiNAGmbfO/VesfXyVyO9mZm+C14TJ1riAq9AHZKMtZtVJWj4uGq0bEuK+GFjHQ== - dependencies: - "@jupyterlab/nbformat" "^3.4.7" - "@jupyterlab/observables" "^4.4.7" - "@jupyterlab/rendermime" "^3.4.7" - "@jupyterlab/rendermime-interfaces" "^3.4.7" - "@lumino/disposable" "^1.10.0" - "@lumino/domutils" "^1.8.0" - "@lumino/messaging" "^1.10.0" - "@lumino/polling" "^1.9.0" - "@lumino/properties" "^1.8.0" - "@lumino/signaling" "^1.10.0" - "@lumino/virtualdom" "^1.14.0" - "@lumino/widgets" "^1.33.0" - "@types/react" "^17.0.0" - react "^17.0.1" - react-dom "^17.0.1" - sanitize-html "~2.5.3" - url "^0.11.0" - -"@jupyterlab/attachments@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/attachments/-/attachments-3.4.7.tgz#6c5fa025457bd2437b50fdf4b3d9b2598fed8387" - integrity sha512-n7ZrHXZ9QlHxDlsDKJ3r1+UpFiNAGmbfO/VesfXyVyO9mZm+C14TJ1riAq9AHZKMtZtVJWj4uGq0bEuK+GFjHQ== +"@jupyterlab/attachments@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/attachments/-/attachments-3.5.0.tgz#739fa29a5c95f6135e8ad45f3992247882764456" + integrity sha512-IaSlzQ7VD680/mcKAVkOgUjRtqpUXCd91XRa5gjD+lBKvS+E0dNBY/cpmpgUEPw9Z07bwRW3+Zq8ATitcmy/gw== dependencies: - "@jupyterlab/nbformat" "^3.4.7" - "@jupyterlab/observables" "^4.4.7" - "@jupyterlab/rendermime" "^3.4.7" - "@jupyterlab/rendermime-interfaces" "^3.4.7" - "@lumino/disposable" "^1.10.0" - "@lumino/signaling" "^1.10.0" - -"@jupyterlab/attachments@^3.4.8": - version "3.4.8" - resolved "https://registry.yarnpkg.com/@jupyterlab/attachments/-/attachments-3.4.8.tgz#70c6a2cb28e3033dd64d86aa76a2c3bbec194c46" - integrity sha512-hNLLLogvx3gbDatKqTcF6MPG9+HUcxuba3D5W83TMpZvUxvOvtbC1NLOugPYUwQrWgv1O0S9i0t+xIboWtgkzA== - dependencies: - "@jupyterlab/nbformat" "^3.4.8" - "@jupyterlab/observables" "^4.4.8" - "@jupyterlab/rendermime" "^3.4.8" - "@jupyterlab/rendermime-interfaces" "^3.4.8" + "@jupyterlab/nbformat" "^3.5.0" + "@jupyterlab/observables" "^4.5.0" + "@jupyterlab/rendermime" "^3.5.0" + "@jupyterlab/rendermime-interfaces" "^3.5.0" "@lumino/disposable" "^1.10.0" "@lumino/signaling" "^1.10.0" "@jupyterlab/builder@^3.0.0": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/builder/-/builder-3.4.7.tgz#4a21dfd8f51752e6aa4bf5582ad578b386bb6a05" - integrity sha512-lnwOh7HKi92sgAP1fCnj+HIwzcuJ/0/lv2lbCJ+8ya0+qBmNjto57CxGuojdtXm3Gg2SANeAscFYwJ2Yhh4RQA== + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/builder/-/builder-3.5.0.tgz#f7f92a39496e058ab01a8b1d8d169e4deca3e073" + integrity sha512-5nPZI29kAGhCGzDIU1NGmcwodVj/1hSqRuasozZEQYGxhEMUs3Nf3YRUbQrXrg2XnsWWhlZFOOUb1DZ8MkM+rw== dependencies: - "@jupyterlab/buildutils" "^3.4.7" + "@jupyterlab/buildutils" "^3.5.0" "@lumino/algorithm" "^1.9.0" "@lumino/application" "^1.27.0" "@lumino/commands" "^1.19.0" @@ -1544,10 +1483,10 @@ webpack-merge "^5.1.2" worker-loader "^3.0.2" -"@jupyterlab/buildutils@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/buildutils/-/buildutils-3.4.7.tgz#075c82c4dfc4b6cba8d253bb30851642baf1407a" - integrity sha512-KsKo2kpo5dnkRhElzNRPdAXbd0w/SZ+KXdEMLX5ZP7aKeg0JVrc+/+egJyp+iJnOYmT2IHCSNbFUdmuU0rC0hA== +"@jupyterlab/buildutils@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/buildutils/-/buildutils-3.5.0.tgz#640990c4504880dadd6f57c609ee1facbb9cc114" + integrity sha512-NueiFvybuV2cfg4WRIyhrfuJ80cKwCgiwnMYX5pwCR7LkZ8OQAwDC/HQlkZSxPOCJGNK6ogUNxzARLQHLTJ/Ww== dependencies: "@lumino/coreutils" "^1.11.0" "@yarnpkg/lockfile" "^1.1.0" @@ -1568,24 +1507,24 @@ typescript "~4.1.3" verdaccio "^5.13.3" -"@jupyterlab/cells@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/cells/-/cells-3.4.7.tgz#425f908d60e16e8333837adf1d8bf4707794b725" - integrity sha512-ulQELblgQkL/NG7U2TNYGEyawmIeDPrgzUN+DVdMewB/rpLB9D/9x3FyjiVE6/6zd0RtA3EuLxq8G42Y8noAiQ== - dependencies: - "@jupyterlab/apputils" "^3.4.7" - "@jupyterlab/attachments" "^3.4.7" - "@jupyterlab/codeeditor" "^3.4.7" - "@jupyterlab/codemirror" "^3.4.7" - "@jupyterlab/coreutils" "^5.4.7" - "@jupyterlab/filebrowser" "^3.4.7" - "@jupyterlab/nbformat" "^3.4.7" - "@jupyterlab/observables" "^4.4.7" - "@jupyterlab/outputarea" "^3.4.7" - "@jupyterlab/rendermime" "^3.4.7" - "@jupyterlab/services" "^6.4.7" - "@jupyterlab/shared-models" "^3.4.7" - "@jupyterlab/ui-components" "^3.4.7" +"@jupyterlab/cells@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/cells/-/cells-3.5.0.tgz#dd4598f66200e075abcecab7f0c92ecc46fb6123" + integrity sha512-2ogdSP5+OmLo1IgjE7/2Jyvgr+dAzI2aZNTntRsjAmeIsk5fZSyKk+5LJWPhAUYTghbIGL7vqSfYbaGG+kL5Ng== + dependencies: + "@jupyterlab/apputils" "^3.5.0" + "@jupyterlab/attachments" "^3.5.0" + "@jupyterlab/codeeditor" "^3.5.0" + "@jupyterlab/codemirror" "^3.5.0" + "@jupyterlab/coreutils" "^5.5.0" + "@jupyterlab/filebrowser" "^3.5.0" + "@jupyterlab/nbformat" "^3.5.0" + "@jupyterlab/observables" "^4.5.0" + "@jupyterlab/outputarea" "^3.5.0" + "@jupyterlab/rendermime" "^3.5.0" + "@jupyterlab/services" "^6.5.0" + "@jupyterlab/shared-models" "^3.5.0" + "@jupyterlab/ui-components" "^3.5.0" "@lumino/algorithm" "^1.9.0" "@lumino/coreutils" "^1.11.0" "@lumino/domutils" "^1.8.0" @@ -1598,39 +1537,17 @@ marked "^4.0.17" react "^17.0.1" -"@jupyterlab/codeeditor@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/codeeditor/-/codeeditor-3.4.7.tgz#9a3966239cc5cb04ce1c788755c0a1be48e9aba6" - integrity sha512-k3XIWPQvfcwJ8J1+lZ7vyzXfaPh/HdRbZuiSbbX8QZ1qmFii4QmX2fXBU7+Nwsrw5weGl10g4WOhYBEeKZzqUA== - dependencies: - "@jupyterlab/coreutils" "^5.4.7" - "@jupyterlab/nbformat" "^3.4.7" - "@jupyterlab/observables" "^4.4.7" - "@jupyterlab/shared-models" "^3.4.7" - "@jupyterlab/translation" "^3.4.7" - "@jupyterlab/ui-components" "^3.4.7" - "@lumino/coreutils" "^1.11.0" - "@lumino/domutils" "^1.8.0" - "@lumino/dragdrop" "^1.13.0" - "@lumino/messaging" "^1.10.0" - "@lumino/polling" "^1.9.0" - "@lumino/signaling" "^1.10.0" - "@lumino/virtualdom" "^1.14.0" - "@lumino/widgets" "^1.33.0" - marked "^4.0.17" - react "^17.0.1" - -"@jupyterlab/codeeditor@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/codeeditor/-/codeeditor-3.4.7.tgz#9a3966239cc5cb04ce1c788755c0a1be48e9aba6" - integrity sha512-k3XIWPQvfcwJ8J1+lZ7vyzXfaPh/HdRbZuiSbbX8QZ1qmFii4QmX2fXBU7+Nwsrw5weGl10g4WOhYBEeKZzqUA== - dependencies: - "@jupyterlab/coreutils" "^5.4.7" - "@jupyterlab/nbformat" "^3.4.7" - "@jupyterlab/observables" "^4.4.7" - "@jupyterlab/shared-models" "^3.4.7" - "@jupyterlab/translation" "^3.4.7" - "@jupyterlab/ui-components" "^3.4.7" +"@jupyterlab/codeeditor@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/codeeditor/-/codeeditor-3.5.0.tgz#b5345f028196c68077424b4a9f33ca315ec49828" + integrity sha512-imdYuovxyIIQqZdoRnZAr0VQHqiIVPPFwk8hAgDYtfl8VxFOPMTh203Z6y+CLv5V62J03OU7HZutP/f5u1nZ1w== + dependencies: + "@jupyterlab/coreutils" "^5.5.0" + "@jupyterlab/nbformat" "^3.5.0" + "@jupyterlab/observables" "^4.5.0" + "@jupyterlab/shared-models" "^3.5.0" + "@jupyterlab/translation" "^3.5.0" + "@jupyterlab/ui-components" "^3.5.0" "@lumino/coreutils" "^1.11.0" "@lumino/disposable" "^1.10.0" "@lumino/dragdrop" "^1.13.0" @@ -1638,19 +1555,19 @@ "@lumino/signaling" "^1.10.0" "@lumino/widgets" "^1.33.0" -"@jupyterlab/codemirror@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/codemirror/-/codemirror-3.4.7.tgz#c66c764e4bb4b7459369ba3930a990a9f776f4e2" - integrity sha512-ZR/M/yYfCWgZzjhnrQznVI06lJyLid4otd5xYn0ib17rcXeKoRD3mDlc7kdKtaSTGtDfbSVlK2fiET2zzR8EXw== - dependencies: - "@jupyterlab/apputils" "^3.4.7" - "@jupyterlab/codeeditor" "^3.4.7" - "@jupyterlab/coreutils" "^5.4.7" - "@jupyterlab/nbformat" "^3.4.7" - "@jupyterlab/observables" "^4.4.7" - "@jupyterlab/shared-models" "^3.4.7" - "@jupyterlab/statusbar" "^3.4.7" - "@jupyterlab/translation" "^3.4.7" +"@jupyterlab/codemirror@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/codemirror/-/codemirror-3.5.0.tgz#b16190e99584acfb0b18c44dd1c005366a829062" + integrity sha512-i6rGYLnWsBuL8zkCpPTCMeZc2lHI5pIgtEpO/CEfeigYhZI9NkaLSiF64Jwt8bgurS10O02bxl+3hIgU3mSSQA== + dependencies: + "@jupyterlab/apputils" "^3.5.0" + "@jupyterlab/codeeditor" "^3.5.0" + "@jupyterlab/coreutils" "^5.5.0" + "@jupyterlab/nbformat" "^3.5.0" + "@jupyterlab/observables" "^4.5.0" + "@jupyterlab/shared-models" "^3.5.0" + "@jupyterlab/statusbar" "^3.5.0" + "@jupyterlab/translation" "^3.5.0" "@lumino/algorithm" "^1.9.0" "@lumino/commands" "^1.19.0" "@lumino/coreutils" "^1.11.0" @@ -1662,34 +1579,23 @@ react "^17.0.1" y-codemirror "^3.0.1" -"@jupyterlab/coreutils@^5.0.0", "@jupyterlab/coreutils@^5.4.7": - version "5.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/coreutils/-/coreutils-5.4.7.tgz#ad3d4f7c77c743d9621454a4782f9b747c180cbb" - integrity sha512-/ckf81JM4UDA4LFnGPNwWrzhpRAptWZH/dv64jpervfcQ8CCYa3OGRyeSLJpjdiVhSpgG2qM58uI3QmW9c/dTQ== +"@jupyterlab/coreutils@^5.0.0", "@jupyterlab/coreutils@^5.4.6", "@jupyterlab/coreutils@^5.4.8", "@jupyterlab/coreutils@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/coreutils/-/coreutils-5.5.0.tgz#0cbceb74e75a96cc69c8dd14b61f37d8ea940d75" + integrity sha512-mVBuVDUA87hvtS5DfbjfLIE1EFdhAGEU8f19G33QfhD/w2vYDi7vE4ro4arNT47r17MzXW4XfaE4LwatR6uvPw== dependencies: - "@jupyterlab/apputils" "^3.4.8" - "@jupyterlab/codeeditor" "^3.4.8" - "@jupyterlab/coreutils" "^5.4.8" - "@jupyterlab/nbformat" "^3.4.8" - "@jupyterlab/observables" "^4.4.8" - "@jupyterlab/shared-models" "^3.4.8" - "@jupyterlab/statusbar" "^3.4.8" - "@jupyterlab/translation" "^3.4.8" - "@lumino/algorithm" "^1.9.0" - "@lumino/commands" "^1.19.0" "@lumino/coreutils" "^1.11.0" "@lumino/disposable" "^1.10.0" - "@lumino/polling" "^1.9.0" "@lumino/signaling" "^1.10.0" - "@lumino/widgets" "^1.33.0" - codemirror "~5.61.0" - react "^17.0.1" - y-codemirror "^3.0.1" + minimist "~1.2.0" + moment "^2.24.0" + path-browserify "^1.0.0" + url-parse "~1.5.1" -"@jupyterlab/coreutils@^5.0.0", "@jupyterlab/coreutils@^5.4.7": - version "5.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/coreutils/-/coreutils-5.4.7.tgz#ad3d4f7c77c743d9621454a4782f9b747c180cbb" - integrity sha512-/ckf81JM4UDA4LFnGPNwWrzhpRAptWZH/dv64jpervfcQ8CCYa3OGRyeSLJpjdiVhSpgG2qM58uI3QmW9c/dTQ== +"@jupyterlab/coreutils@~5.4.6": + version "5.4.8" + resolved "https://registry.yarnpkg.com/@jupyterlab/coreutils/-/coreutils-5.4.8.tgz#e3a81a8edb51c9a8d40f9baf4149f86c5e5109d0" + integrity sha512-UICv9nBCL+thSSOFlLWGjPm+UTT1ioPq+pOMjgn0E/DPliUMAMKtrAU5viAbRhITGAU55uL2KH9ijMUIc6o3xA== dependencies: "@lumino/coreutils" "^1.11.0" "@lumino/disposable" "^1.10.0" @@ -1699,18 +1605,18 @@ path-browserify "^1.0.0" url-parse "~1.5.1" -"@jupyterlab/docmanager@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/docmanager/-/docmanager-3.4.7.tgz#6f51647fbc152144e83d0250119cac72f85e8e58" - integrity sha512-DrjBVs6XcXzzBTU2p0EH9D6oRbBePODzoDAxI5/fMrbAgTVMmmLJigF8rHXnrJwI35Mh/Rq+428Mff5SwF/TFg== - dependencies: - "@jupyterlab/apputils" "^3.4.7" - "@jupyterlab/coreutils" "^5.4.7" - "@jupyterlab/docprovider" "^3.4.7" - "@jupyterlab/docregistry" "^3.4.7" - "@jupyterlab/services" "^6.4.7" - "@jupyterlab/statusbar" "^3.4.7" - "@jupyterlab/translation" "^3.4.7" +"@jupyterlab/docmanager@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/docmanager/-/docmanager-3.5.0.tgz#80dd3ffe688436b5d98f73b7de1de588f7929fce" + integrity sha512-IkPUXpI6zcGufGwetge6F/b5pyF9CLYb/xdK+fuN61jub8aEWFE4vebXNhb1rhmyjynjDwSmLcUTX3slFTItRA== + dependencies: + "@jupyterlab/apputils" "^3.5.0" + "@jupyterlab/coreutils" "^5.5.0" + "@jupyterlab/docprovider" "^3.5.0" + "@jupyterlab/docregistry" "^3.5.0" + "@jupyterlab/services" "^6.5.0" + "@jupyterlab/statusbar" "^3.5.0" + "@jupyterlab/translation" "^3.5.0" "@lumino/algorithm" "^1.9.0" "@lumino/coreutils" "^1.11.0" "@lumino/disposable" "^1.10.0" @@ -1720,70 +1626,34 @@ "@lumino/widgets" "^1.33.0" react "^17.0.1" -"@jupyterlab/docprovider@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/docprovider/-/docprovider-3.4.7.tgz#71238e4d8802c468ba4e8cde3a5ed8939a7b43a2" - integrity sha512-US9/sldjoykfXuSMO3MAWq+et9q2KA+I5UyBTgwmt7OaWqm8OVv28lSgeaRCaBr2bx2hW7sOQRwOBEcGx2hxUw== +"@jupyterlab/docprovider@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/docprovider/-/docprovider-3.5.0.tgz#8593ada08c0e7ec014084e16e918d26aac14c441" + integrity sha512-F5VtIIDUpWEFKc0S/xDs8GIjEZC/xn6SVrdNY0+ixDPyC5VNJo+IU5JmqrcU25DlJ+jMbnKlPdRLYsRtJTDKrw== dependencies: - "@jupyterlab/shared-models" "^3.4.7" - "@lumino/coreutils" "^1.11.0" - "@lumino/disposable" "^1.10.0" - "@lumino/messaging" "^1.10.0" - "@lumino/properties" "^1.8.0" - "@lumino/signaling" "^1.10.0" - "@lumino/widgets" "^1.33.0" - react "^17.0.1" - -"@jupyterlab/docprovider@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/docprovider/-/docprovider-3.4.7.tgz#71238e4d8802c468ba4e8cde3a5ed8939a7b43a2" - integrity sha512-US9/sldjoykfXuSMO3MAWq+et9q2KA+I5UyBTgwmt7OaWqm8OVv28lSgeaRCaBr2bx2hW7sOQRwOBEcGx2hxUw== - dependencies: - "@jupyterlab/shared-models" "^3.4.7" + "@jupyterlab/shared-models" "^3.5.0" "@lumino/coreutils" "^1.11.0" lib0 "^0.2.42" y-websocket "^1.3.15" yjs "^13.5.17" -"@jupyterlab/docregistry@^3.0.0", "@jupyterlab/docregistry@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/docregistry/-/docregistry-3.4.7.tgz#468a68f7adbb34aed81ab1c80eaed1d2d56cc208" - integrity sha512-hhwfgUmbjr6c3svJ2hc4UXNDZIFNr0lyMCLQIUTa6gUt1dDF/44nN+Ya+ghBmVwM6wgFcfGDipVmbNUm73Yg1A== - dependencies: - "@jupyterlab/apputils" "^3.4.7" - "@jupyterlab/codeeditor" "^3.4.7" - "@jupyterlab/codemirror" "^3.4.7" - "@jupyterlab/coreutils" "^5.4.7" - "@jupyterlab/docprovider" "^3.4.7" - "@jupyterlab/observables" "^4.4.7" - "@jupyterlab/rendermime" "^3.4.7" - "@jupyterlab/rendermime-interfaces" "^3.4.7" - "@jupyterlab/services" "^6.4.7" - "@jupyterlab/shared-models" "^3.4.7" - "@jupyterlab/translation" "^3.4.7" - "@jupyterlab/ui-components" "^3.4.7" - "@lumino/algorithm" "^1.9.0" - "@lumino/coreutils" "^1.11.0" - "@lumino/disposable" "^1.10.0" - "@lumino/messaging" "^1.10.0" - "@lumino/signaling" "^1.10.0" - "@lumino/widgets" "^1.33.0" - yjs "^13.5.17" - -"@jupyterlab/filebrowser@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/filebrowser/-/filebrowser-3.4.7.tgz#baa0bdb431c92172fd55cf9791dc46ed6b548817" - integrity sha512-C5NeLj1dNvvLffwp3ShWv1VMHrQQJwaee7M1w5MVHQTe/JXpy1MptM/r+DgQxfekK9v8S6H08gLSb0sNVYY7iw== - dependencies: - "@jupyterlab/apputils" "^3.4.7" - "@jupyterlab/coreutils" "^5.4.7" - "@jupyterlab/docmanager" "^3.4.7" - "@jupyterlab/docregistry" "^3.4.7" - "@jupyterlab/services" "^6.4.7" - "@jupyterlab/statedb" "^3.4.7" - "@jupyterlab/statusbar" "^3.4.7" - "@jupyterlab/translation" "^3.4.7" - "@jupyterlab/ui-components" "^3.4.7" +"@jupyterlab/docregistry@^3.0.0", "@jupyterlab/docregistry@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/docregistry/-/docregistry-3.5.0.tgz#aa3ebc2cd676f7ff564dd055fdd629f0dd16b5b1" + integrity sha512-OdP+q4rvZARqJvZWCyae23K8IHN+TvSP0xPyTVHd1aXFXi6cWlNUOUGRHd9TlEUNqyJxKjkZNuhozMu8ANEBAQ== + dependencies: + "@jupyterlab/apputils" "^3.5.0" + "@jupyterlab/codeeditor" "^3.5.0" + "@jupyterlab/codemirror" "^3.5.0" + "@jupyterlab/coreutils" "^5.5.0" + "@jupyterlab/docprovider" "^3.5.0" + "@jupyterlab/observables" "^4.5.0" + "@jupyterlab/rendermime" "^3.5.0" + "@jupyterlab/rendermime-interfaces" "^3.5.0" + "@jupyterlab/services" "^6.5.0" + "@jupyterlab/shared-models" "^3.5.0" + "@jupyterlab/translation" "^3.5.0" + "@jupyterlab/ui-components" "^3.5.0" "@lumino/algorithm" "^1.9.0" "@lumino/coreutils" "^1.11.0" "@lumino/disposable" "^1.10.0" @@ -1792,46 +1662,20 @@ "@lumino/widgets" "^1.33.0" yjs "^13.5.17" -"@jupyterlab/filebrowser@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/filebrowser/-/filebrowser-3.4.7.tgz#baa0bdb431c92172fd55cf9791dc46ed6b548817" - integrity sha512-C5NeLj1dNvvLffwp3ShWv1VMHrQQJwaee7M1w5MVHQTe/JXpy1MptM/r+DgQxfekK9v8S6H08gLSb0sNVYY7iw== - dependencies: - "@jupyterlab/apputils" "^3.4.7" - "@jupyterlab/coreutils" "^5.4.7" - "@jupyterlab/docmanager" "^3.4.7" - "@jupyterlab/docregistry" "^3.4.7" - "@jupyterlab/services" "^6.4.7" - "@jupyterlab/statedb" "^3.4.7" - "@jupyterlab/statusbar" "^3.4.7" - "@jupyterlab/translation" "^3.4.7" - "@jupyterlab/ui-components" "^3.4.7" - "@lumino/algorithm" "^1.9.0" - "@lumino/coreutils" "^1.11.0" - "@lumino/disposable" "^1.10.0" - "@lumino/domutils" "^1.8.0" - "@lumino/dragdrop" "^1.13.0" - "@lumino/messaging" "^1.10.0" - "@lumino/polling" "^1.9.0" - "@lumino/signaling" "^1.10.0" - "@lumino/virtualdom" "^1.14.0" - "@lumino/widgets" "^1.33.0" - react "^17.0.1" - -"@jupyterlab/filebrowser@^3.4.8": - version "3.4.8" - resolved "https://registry.yarnpkg.com/@jupyterlab/filebrowser/-/filebrowser-3.4.8.tgz#686133581a4d2de4c72d864bdef9db110f54d11d" - integrity sha512-IX/qkpoK5+uFrb/pg9akjzpW0iHo6GcqdmivXcXGuLozTla0fKuXMtiRFV1zX3wkFHFSXOGqDZX6nwrNrf2TiQ== - dependencies: - "@jupyterlab/apputils" "^3.4.8" - "@jupyterlab/coreutils" "^5.4.8" - "@jupyterlab/docmanager" "^3.4.8" - "@jupyterlab/docregistry" "^3.4.8" - "@jupyterlab/services" "^6.4.8" - "@jupyterlab/statedb" "^3.4.8" - "@jupyterlab/statusbar" "^3.4.8" - "@jupyterlab/translation" "^3.4.8" - "@jupyterlab/ui-components" "^3.4.8" +"@jupyterlab/filebrowser@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/filebrowser/-/filebrowser-3.5.0.tgz#3dda05e314f9e20bac9e734ac103db81760c85b7" + integrity sha512-7e/AAbkgzG7pR5cO3HCWQwO87tde4/vqnG8u+H0b5DuUy1EIAU+xHyAfCV6x2XXyLsXl1lhMNSPgT+PVvoKynQ== + dependencies: + "@jupyterlab/apputils" "^3.5.0" + "@jupyterlab/coreutils" "^5.5.0" + "@jupyterlab/docmanager" "^3.5.0" + "@jupyterlab/docregistry" "^3.5.0" + "@jupyterlab/services" "^6.5.0" + "@jupyterlab/statedb" "^3.5.0" + "@jupyterlab/statusbar" "^3.5.0" + "@jupyterlab/translation" "^3.5.0" + "@jupyterlab/ui-components" "^3.5.0" "@lumino/algorithm" "^1.9.0" "@lumino/coreutils" "^1.11.0" "@lumino/disposable" "^1.10.0" @@ -1845,30 +1689,30 @@ react "^17.0.1" "@jupyterlab/fileeditor@^3.0.0": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/fileeditor/-/fileeditor-3.4.7.tgz#b76f1733648d05d5e8df2b0906eb2e637639f231" - integrity sha512-67mYE/rNAoHapKODitbX8eoBgzNoNrT8Ud0kIHoCFTqcopSRbuAQYh7cNC5zaVpjWRQnHqQXsYtEwL69kIkWew== - dependencies: - "@jupyterlab/apputils" "^3.4.7" - "@jupyterlab/codeeditor" "^3.4.7" - "@jupyterlab/docregistry" "^3.4.7" - "@jupyterlab/statusbar" "^3.4.7" - "@jupyterlab/translation" "^3.4.7" - "@jupyterlab/ui-components" "^3.4.7" + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/fileeditor/-/fileeditor-3.5.0.tgz#23f48f4dbe8f58e49cb0812fd92d4cfca37773e1" + integrity sha512-xahPO68ylMf5hkUMZv+M4f2MIA1vJBr0Eg8IMykCaD8o/ssc2oEaMcYkJIoBq9E5/wr5iS4TNcT9CmMld2sK0Q== + dependencies: + "@jupyterlab/apputils" "^3.5.0" + "@jupyterlab/codeeditor" "^3.5.0" + "@jupyterlab/docregistry" "^3.5.0" + "@jupyterlab/statusbar" "^3.5.0" + "@jupyterlab/translation" "^3.5.0" + "@jupyterlab/ui-components" "^3.5.0" "@lumino/coreutils" "^1.11.0" "@lumino/messaging" "^1.10.0" "@lumino/widgets" "^1.33.0" react "^17.0.1" "@jupyterlab/json-extension@^3.0.0": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/json-extension/-/json-extension-3.4.7.tgz#a86527468b677545d519d0b14e8b5ecedb2938ea" - integrity sha512-89sanm/k/LMuKU3FbQxnLExh+2DcO6UY2DS41KKnCutwXOIr1fLMQXkyG2bMouRJwYS7N+2yEf1iVMSsivUpfQ== - dependencies: - "@jupyterlab/apputils" "^3.4.7" - "@jupyterlab/rendermime-interfaces" "^3.4.7" - "@jupyterlab/translation" "^3.4.7" - "@jupyterlab/ui-components" "^3.4.7" + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/json-extension/-/json-extension-3.5.0.tgz#f94df7f193fbefceb38daa61706b8d35864dafd5" + integrity sha512-189JnJtXMwgYoABla/MlNhruESE30yudBaqmjTuF/fK6vdfdwMSiNZREiT0IOawEBl1YSh2h8eUsQcIaWC78hg== + dependencies: + "@jupyterlab/apputils" "^3.5.0" + "@jupyterlab/rendermime-interfaces" "^3.5.0" + "@jupyterlab/translation" "^3.5.0" + "@jupyterlab/ui-components" "^3.5.0" "@lumino/coreutils" "^1.11.0" "@lumino/messaging" "^1.10.0" "@lumino/widgets" "^1.33.0" @@ -1878,137 +1722,127 @@ react-json-tree "^0.15.0" "@jupyterlab/logconsole@^3.0.0": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/logconsole/-/logconsole-3.4.7.tgz#2892552133ac8ac71d19fac062f55022f6751078" - integrity sha512-W5X23ajSaQlyClKyhzKH3FN25Ki88VypmCtQU/cWuY8wnNBMW48x/CujudpeLruwCzxVGPLfMhVfwGBib7zVbw== - dependencies: - "@jupyterlab/coreutils" "^5.4.7" - "@jupyterlab/nbformat" "^3.4.7" - "@jupyterlab/outputarea" "^3.4.7" - "@jupyterlab/rendermime" "^3.4.7" - "@jupyterlab/services" "^6.4.7" - "@jupyterlab/translation" "^3.4.7" + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/logconsole/-/logconsole-3.5.0.tgz#bb2a5af02ed5f05de6674a65a36776bfd7d06c6f" + integrity sha512-njQEGLzK+JOOYoyCPYFWtnj13A9eYPhmjOuNrfzzFnM2mVYSN6BspqpY762l0W2afkc5de+cCZrrBdYUDHdFKw== + dependencies: + "@jupyterlab/coreutils" "^5.5.0" + "@jupyterlab/nbformat" "^3.5.0" + "@jupyterlab/outputarea" "^3.5.0" + "@jupyterlab/rendermime" "^3.5.0" + "@jupyterlab/services" "^6.5.0" + "@jupyterlab/translation" "^3.5.0" "@lumino/coreutils" "^1.11.0" "@lumino/disposable" "^1.10.0" "@lumino/messaging" "^1.10.0" "@lumino/signaling" "^1.10.0" "@lumino/widgets" "^1.33.0" -"@jupyterlab/mainmenu@^3.0.0": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/mainmenu/-/mainmenu-3.4.7.tgz#670aa1735b85e72e2083b2f8aa549789f434b3ab" - integrity sha512-MbTNDSJW502Ev2FhwTgkOYRlb2lFdlyCrFolLdFrY1cOcYGCzIApUiHPZewbc9hf6JPYrSTY4k0Ygqo9Vjf+gA== +"@jupyterlab/mainmenu@^3.0.0", "@jupyterlab/mainmenu@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/mainmenu/-/mainmenu-3.5.0.tgz#a49cd2efec1eb42ab45033bebe0c3c88d6f4ac3e" + integrity sha512-Sl94dcwGe2Dqt+9mIIcwymtBtymmzMOPaqrEnJSgVET4a42SFgmeS1JBXGAFj4djbCB8VDzGHe+IbBlKLX8IaQ== dependencies: - "@jupyterlab/apputils" "^3.4.7" - "@jupyterlab/services" "^6.4.7" - "@jupyterlab/translation" "^3.4.7" - "@jupyterlab/ui-components" "^3.4.7" + "@jupyterlab/apputils" "^3.5.0" + "@jupyterlab/services" "^6.5.0" + "@jupyterlab/translation" "^3.5.0" + "@jupyterlab/ui-components" "^3.5.0" "@lumino/algorithm" "^1.9.0" "@lumino/commands" "^1.19.0" "@lumino/coreutils" "^1.11.0" "@lumino/widgets" "^1.33.0" "@jupyterlab/markdownviewer-extension@^3.0.0": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/markdownviewer-extension/-/markdownviewer-extension-3.4.7.tgz#8ee90570ec1034686894c0de34ae8ca2f259cf44" - integrity sha512-lRmJDUtxodwhGb5zjLRCalfGj76aSXETN12XJVeENUrJ9vxoM9wczV/6MSby/PiUeIPeJL2Tq2m/r8wNAdIyhg== - dependencies: - "@jupyterlab/application" "^3.4.7" - "@jupyterlab/apputils" "^3.4.7" - "@jupyterlab/coreutils" "^5.4.7" - "@jupyterlab/markdownviewer" "^3.4.7" - "@jupyterlab/rendermime" "^3.4.7" - "@jupyterlab/settingregistry" "^3.4.7" - "@jupyterlab/translation" "^3.4.7" - -"@jupyterlab/markdownviewer@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/markdownviewer/-/markdownviewer-3.4.7.tgz#436ee0ded7d98a9c586058deffbda4331f1dc510" - integrity sha512-IzgcfJUsJmdjtoP/02xUaV+p5qMqWQul2jPfUhfy5zekGlX1BohqjoXMYkLlVCmxjM+5r88vUU+K0A2P6OQWEA== - dependencies: - "@jupyterlab/apputils" "^3.4.7" - "@jupyterlab/coreutils" "^5.4.7" - "@jupyterlab/docregistry" "^3.4.7" - "@jupyterlab/rendermime" "^3.4.7" - "@jupyterlab/translation" "^3.4.7" + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/markdownviewer-extension/-/markdownviewer-extension-3.5.0.tgz#70cc1c4b89f5bfb94263119eb54f0496fcc05183" + integrity sha512-WckCxQ8y3R4HWoSqA3Z+wIcc31O/E1TeesO5dSrKduHwxtgadE2Sg6J8MlMRuv1eK0jM853bNSD+NIS6jdQ9zw== + dependencies: + "@jupyterlab/application" "^3.5.0" + "@jupyterlab/apputils" "^3.5.0" + "@jupyterlab/coreutils" "^5.5.0" + "@jupyterlab/markdownviewer" "^3.5.0" + "@jupyterlab/rendermime" "^3.5.0" + "@jupyterlab/settingregistry" "^3.5.0" + "@jupyterlab/translation" "^3.5.0" + +"@jupyterlab/markdownviewer@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/markdownviewer/-/markdownviewer-3.5.0.tgz#f7255d317c485ffd86d355d98f50579fd285d434" + integrity sha512-qYV7l4KgSJhzSxKajgXOUevsLuMmnC6MngkCfXfm6pcbnnaeGD6yYAngbmVDWIJpIcHPhGXaMapFSjhjWvS45Q== + dependencies: + "@jupyterlab/apputils" "^3.5.0" + "@jupyterlab/coreutils" "^5.5.0" + "@jupyterlab/docregistry" "^3.5.0" + "@jupyterlab/rendermime" "^3.5.0" + "@jupyterlab/translation" "^3.5.0" "@lumino/coreutils" "^1.11.0" "@lumino/messaging" "^1.10.0" "@lumino/widgets" "^1.33.0" "@jupyterlab/mathjax2-extension@^3.0.0": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/mathjax2-extension/-/mathjax2-extension-3.4.7.tgz#74156a3a1f768f4865b5cf45be3ddd7997853811" - integrity sha512-wtvDPhUBrNbRUGaHWJsVGuyKU7rkerXfW0h57L1kiAvHUjcl1LSWYQ+W8OXzXouNJVEeOtwNvaAoJrptGXjtVw== + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/mathjax2-extension/-/mathjax2-extension-3.5.0.tgz#040dac47fc7376c3feed34dc3807c7778d878865" + integrity sha512-I20Wcogyg2xIqCT3v8b2cJlG3tlbSrQrQicURR1yrcyUzljecqU2yMg/VrjjagOEYdLjKfIHZInRFXuBjDbyqg== dependencies: - "@jupyterlab/application" "^3.4.7" - "@jupyterlab/coreutils" "^5.4.7" - "@jupyterlab/mathjax2" "^3.4.7" - "@jupyterlab/rendermime" "^3.4.7" + "@jupyterlab/application" "^3.5.0" + "@jupyterlab/coreutils" "^5.5.0" + "@jupyterlab/mathjax2" "^3.5.0" + "@jupyterlab/rendermime" "^3.5.0" -"@jupyterlab/mathjax2@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/mathjax2/-/mathjax2-3.4.7.tgz#e630c89e08ddda34a2ee52be5eec2bd3614d8941" - integrity sha512-7H/wWlRTCuL3I3UGy90lTUazP+P9I2z/HYveQgx6E6sFRYiloABE35qlBkeFc4TZd48SM0draBdGEC68ze7VmA== +"@jupyterlab/mathjax2@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/mathjax2/-/mathjax2-3.5.0.tgz#592c940e81b0909f1ad4fe74db2163900eb69ce3" + integrity sha512-F2SKcB2f8W4wYCrLw+rcnM5borUZ1ykr1cKEKo38khB4W8IsMyxL698gmsOPLDq08UBh6ctHbZbetXEfLy0Wtg== dependencies: - "@jupyterlab/rendermime-interfaces" "^3.4.7" + "@jupyterlab/rendermime-interfaces" "^3.5.0" "@lumino/coreutils" "^1.11.0" -"@jupyterlab/nbformat@^3.0.0", "@jupyterlab/nbformat@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/nbformat/-/nbformat-3.4.7.tgz#47c0c697d02fbdd5242001245ba4f6e14d1d92ec" - integrity sha512-cdLXKkE37Ygi7i48sp7lYR2sds6fiCk4GijJ7OGSQipFUwcn/s88Y5wwknb0ysnC9VnFpq9oaqRyV34sfDCJ4g== +"@jupyterlab/nbconvert-css@^3.4.8": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/nbconvert-css/-/nbconvert-css-3.5.0.tgz#caadc51a86c3e966c9c5cc50042604404b5e2bb4" + integrity sha512-mFg8A8V950bbx3QLsSXtEQSa6HbbXF5bfPsN9QgCTbJi+ynQeHWPpNgmXaFbrR8wD3rm2ZNoJU+nNOItPQE3eQ== dependencies: - "@lumino/coreutils" "^1.11.0" + "@jupyterlab/application" "^3.5.0" + "@jupyterlab/apputils" "^3.5.0" + "@jupyterlab/cells" "^3.5.0" + "@jupyterlab/codemirror" "^3.5.0" + "@jupyterlab/notebook" "^3.5.0" + "@jupyterlab/outputarea" "^3.5.0" + "@jupyterlab/rendermime" "^3.5.0" -"@jupyterlab/notebook@^3.0.0", "@jupyterlab/notebook@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/notebook/-/notebook-3.4.7.tgz#a79ffc9b39addccc30f33c4244b238f1712807c2" - integrity sha512-LinEQrUMjQvWg2Z4EPDn+SsDRYz3jzNvjUOBQiIG12DKiBaM3h0XEgh/3CFSt7guS0+C26Efy/ev4XAsZHuEvA== - dependencies: - "@jupyterlab/apputils" "^3.4.7" - "@jupyterlab/cells" "^3.4.7" - "@jupyterlab/codeeditor" "^3.4.7" - "@jupyterlab/coreutils" "^5.4.7" - "@jupyterlab/docregistry" "^3.4.7" - "@jupyterlab/nbformat" "^3.4.7" - "@jupyterlab/observables" "^4.4.7" - "@jupyterlab/rendermime" "^3.4.7" - "@jupyterlab/services" "^6.4.7" - "@jupyterlab/settingregistry" "^3.4.7" - "@jupyterlab/shared-models" "^3.4.7" - "@jupyterlab/statusbar" "^3.4.7" - "@jupyterlab/translation" "^3.4.7" - "@jupyterlab/ui-components" "^3.4.7" - "@lumino/algorithm" "^1.9.0" +"@jupyterlab/nbformat@^3.0.0", "@jupyterlab/nbformat@^3.4.8", "@jupyterlab/nbformat@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/nbformat/-/nbformat-3.5.0.tgz#ea3d926b90db9ff2da988db1ea3c8ac1dc3ba9fa" + integrity sha512-tQ0MCJ2NSlGTYM7auiL2vdqirIv39Pd2/gfFd4XdHClJgvT65b7XkNDOwBv6mqIuhNdHo3Mc3RXiODTo1tle7Q== + dependencies: "@lumino/coreutils" "^1.11.0" - "@lumino/domutils" "^1.8.0" - "@lumino/dragdrop" "^1.13.0" - "@lumino/messaging" "^1.10.0" - "@lumino/properties" "^1.8.0" - "@lumino/signaling" "^1.10.0" - "@lumino/virtualdom" "^1.14.0" - "@lumino/widgets" "^1.33.0" - react "^17.0.1" -"@jupyterlab/observables@^4.4.7": - version "4.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/observables/-/observables-4.4.7.tgz#a199dabc82cd45e7b99bbfbc2bfcfa556db5d82e" - integrity sha512-nr07UH0NVb3/M8yBPyzYgR3WWKxFfybFCYaEJ5t6ihEHvC8JgrtAoGXf0Fqo/7DPMkvp0pBvlAK+QT0PAj1rBA== +"@jupyterlab/nbformat@~3.4.8": + version "3.4.8" + resolved "https://registry.yarnpkg.com/@jupyterlab/nbformat/-/nbformat-3.4.8.tgz#8552c9d32e8f04bd3e9be468be57662f0c5307c2" + integrity sha512-RcyITAagwXMIWqehpctb43mVB1H3LrTfikGvykLICmA5AfT+byhooCDN4d+ipg4rkeioUmEgX+2uTfForCsJWQ== dependencies: - "@jupyterlab/apputils" "^3.4.8" - "@jupyterlab/cells" "^3.4.8" - "@jupyterlab/codeeditor" "^3.4.8" - "@jupyterlab/coreutils" "^5.4.8" - "@jupyterlab/docregistry" "^3.4.8" - "@jupyterlab/nbformat" "^3.4.8" - "@jupyterlab/observables" "^4.4.8" - "@jupyterlab/rendermime" "^3.4.8" - "@jupyterlab/services" "^6.4.8" - "@jupyterlab/settingregistry" "^3.4.8" - "@jupyterlab/shared-models" "^3.4.8" - "@jupyterlab/statusbar" "^3.4.8" - "@jupyterlab/translation" "^3.4.8" - "@jupyterlab/ui-components" "^3.4.8" + "@lumino/coreutils" "^1.11.0" + +"@jupyterlab/notebook@^3.0.0", "@jupyterlab/notebook@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/notebook/-/notebook-3.5.0.tgz#50e997e89037949c14c7038d08ae2939a2baa5c8" + integrity sha512-NGocuZiIcZ6mWXMLdenj2/qtLiJFCUlWzIp5bbwW6yu4whNxVMG8CEAomyUKWIbJFe0XuT9ZRLocUV82mOGH+A== + dependencies: + "@jupyterlab/apputils" "^3.5.0" + "@jupyterlab/cells" "^3.5.0" + "@jupyterlab/codeeditor" "^3.5.0" + "@jupyterlab/coreutils" "^5.5.0" + "@jupyterlab/docregistry" "^3.5.0" + "@jupyterlab/nbformat" "^3.5.0" + "@jupyterlab/observables" "^4.5.0" + "@jupyterlab/rendermime" "^3.5.0" + "@jupyterlab/services" "^6.5.0" + "@jupyterlab/settingregistry" "^3.5.0" + "@jupyterlab/shared-models" "^3.5.0" + "@jupyterlab/statusbar" "^3.5.0" + "@jupyterlab/translation" "^3.5.0" + "@jupyterlab/ui-components" "^3.5.0" "@lumino/algorithm" "^1.9.0" "@lumino/coreutils" "^1.11.0" "@lumino/domutils" "^1.8.0" @@ -2020,10 +1854,10 @@ "@lumino/widgets" "^1.33.0" react "^17.0.1" -"@jupyterlab/observables@^4.4.7": - version "4.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/observables/-/observables-4.4.7.tgz#a199dabc82cd45e7b99bbfbc2bfcfa556db5d82e" - integrity sha512-nr07UH0NVb3/M8yBPyzYgR3WWKxFfybFCYaEJ5t6ihEHvC8JgrtAoGXf0Fqo/7DPMkvp0pBvlAK+QT0PAj1rBA== +"@jupyterlab/observables@^4.4.8", "@jupyterlab/observables@^4.5.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/observables/-/observables-4.5.0.tgz#3cba31bf2358c11f3c7ba39b7aa840e727733405" + integrity sha512-YiUljeHNz80YpIPDi0zoUC26AwAhyDu1UXm2kH5J/lPViycz8X22RWXkIBc40kvWoasUTSomZiEv/W2hFUs0Vw== dependencies: "@lumino/algorithm" "^1.9.0" "@lumino/coreutils" "^1.11.0" @@ -2031,34 +1865,28 @@ "@lumino/messaging" "^1.10.0" "@lumino/signaling" "^1.10.0" -"@jupyterlab/outputarea@^3.0.0", "@jupyterlab/outputarea@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/outputarea/-/outputarea-3.4.7.tgz#98e205f73f3d866a0fe275c94b38b0a7deb5bf1f" - integrity sha512-3kxK0LFj+NPQzBOC3m0+83fMvMy0t91XmD/ie5f+A7sDEwzdG8+/HeJlUMc0kO2KSzmuoBw10dO2zN8uotan8A== - dependencies: - "@jupyterlab/apputils" "^3.4.7" - "@jupyterlab/nbformat" "^3.4.7" - "@jupyterlab/observables" "^4.4.7" - "@jupyterlab/rendermime" "^3.4.7" - "@jupyterlab/rendermime-interfaces" "^3.4.7" - "@jupyterlab/services" "^6.4.7" +"@jupyterlab/observables@~4.4.4": + version "4.4.8" + resolved "https://registry.yarnpkg.com/@jupyterlab/observables/-/observables-4.4.8.tgz#a73833e4f33b3d7e9c2a59306e8f526e13c043d9" + integrity sha512-TT7YQNxvLnfuzbHQjoovfVN02dXDG/zxfWiA1RkycAJnQ/aTgRtEMlLMs7dUqNCh6ej6zNQOUEduJInro/OL4A== + dependencies: "@lumino/algorithm" "^1.9.0" "@lumino/coreutils" "^1.11.0" "@lumino/disposable" "^1.10.0" "@lumino/messaging" "^1.10.0" "@lumino/signaling" "^1.10.0" -"@jupyterlab/outputarea@^3.0.0", "@jupyterlab/outputarea@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/outputarea/-/outputarea-3.4.7.tgz#98e205f73f3d866a0fe275c94b38b0a7deb5bf1f" - integrity sha512-3kxK0LFj+NPQzBOC3m0+83fMvMy0t91XmD/ie5f+A7sDEwzdG8+/HeJlUMc0kO2KSzmuoBw10dO2zN8uotan8A== - dependencies: - "@jupyterlab/apputils" "^3.4.7" - "@jupyterlab/nbformat" "^3.4.7" - "@jupyterlab/observables" "^4.4.7" - "@jupyterlab/rendermime" "^3.4.7" - "@jupyterlab/rendermime-interfaces" "^3.4.7" - "@jupyterlab/services" "^6.4.7" +"@jupyterlab/outputarea@^3.0.0", "@jupyterlab/outputarea@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/outputarea/-/outputarea-3.5.0.tgz#9ecab47c4ce512a0c6d3ac3235ae924a8edcad09" + integrity sha512-GF9jXeQDUQw93w4+Oh7J8AjFzBjcXL9f0CmGCao0H4rjni1EFByU5eLPe0FM7YRubU9ike7JMu3+9dJDlnpdAA== + dependencies: + "@jupyterlab/apputils" "^3.5.0" + "@jupyterlab/nbformat" "^3.5.0" + "@jupyterlab/observables" "^4.5.0" + "@jupyterlab/rendermime" "^3.5.0" + "@jupyterlab/rendermime-interfaces" "^3.5.0" + "@jupyterlab/services" "^6.5.0" "@lumino/algorithm" "^1.9.0" "@lumino/coreutils" "^1.11.0" "@lumino/disposable" "^1.10.0" @@ -2069,43 +1897,47 @@ resize-observer-polyfill "^1.5.1" "@jupyterlab/rendermime-extension@^3.0.0": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime-extension/-/rendermime-extension-3.4.7.tgz#00b20a66fe31fb3d6545d79524e383e453ff7143" - integrity sha512-B9WfG9iULn02BmSsG7OHX9oT5Uy0jRQyVkayjYEnyZCYTRxUPbNML1KnVgGSB9F7WXzxUJGtJutqUdOci42ffg== - dependencies: - "@jupyterlab/application" "^3.4.7" - "@jupyterlab/apputils" "^3.4.7" - "@jupyterlab/docmanager" "^3.4.7" - "@jupyterlab/rendermime" "^3.4.7" - "@jupyterlab/translation" "^3.4.7" - -"@jupyterlab/rendermime-interfaces@^3.0.0", "@jupyterlab/rendermime-interfaces@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime-interfaces/-/rendermime-interfaces-3.4.7.tgz#fc40eecebefeca55749791fd103f0cc268934aee" - integrity sha512-GeVstEtlce95T/NHXV/jJQ+N1LiIdLPICBFgnKJumNlc/foLm4ALoKTgUJhXhhPtWm8QVfZTAihoIJ6bC+GM1w== - dependencies: - "@jupyterlab/translation" "^3.4.7" + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime-extension/-/rendermime-extension-3.5.0.tgz#866e71e9750946d49c33b5442b04aa6647d4691b" + integrity sha512-SS+vwKdHvGmZgHYW23bCbLK4KrYbXGhzAitcXLIpImAmSd+SjAerHohDc31jNuZF567uyE/3dZvoRpgYIFfKPw== + dependencies: + "@jupyterlab/application" "^3.5.0" + "@jupyterlab/apputils" "^3.5.0" + "@jupyterlab/docmanager" "^3.5.0" + "@jupyterlab/rendermime" "^3.5.0" + "@jupyterlab/translation" "^3.5.0" + +"@jupyterlab/rendermime-interfaces@^3.0.0", "@jupyterlab/rendermime-interfaces@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime-interfaces/-/rendermime-interfaces-3.5.0.tgz#e833b1304ff1e86934fcb039dec7b5ffbf374ae9" + integrity sha512-SWpNX8dwRuAH0GMeuamN1O096Ypn2XcosNbo60P8860qi2KzTXgxADt5xcOf6FK+tXVQ+qi3hJi+055+1xjq+g== + dependencies: + "@jupyterlab/translation" "^3.5.0" "@lumino/coreutils" "^1.11.0" - "@lumino/disposable" "^1.10.0" - "@lumino/messaging" "^1.10.0" - "@lumino/properties" "^1.8.0" - "@lumino/signaling" "^1.10.0" "@lumino/widgets" "^1.33.0" - resize-observer-polyfill "^1.5.1" -"@jupyterlab/rendermime@^3.0.0", "@jupyterlab/rendermime@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime/-/rendermime-3.4.7.tgz#800710e5395adb21b9c739cdfba3d78bb3be5da8" - integrity sha512-2P4Byac30C85852W/7JHx0FJYS809r8QYNEdwpub6F5Bhwdi3AnDlzKJeVi2nSniQc5pvgrRgl/tRkyKt5CxeA== - dependencies: - "@jupyterlab/apputils" "^3.4.7" - "@jupyterlab/codemirror" "^3.4.7" - "@jupyterlab/coreutils" "^5.4.7" - "@jupyterlab/nbformat" "^3.4.7" - "@jupyterlab/observables" "^4.4.7" - "@jupyterlab/rendermime-interfaces" "^3.4.7" - "@jupyterlab/services" "^6.4.7" - "@jupyterlab/translation" "^3.4.7" +"@jupyterlab/rendermime-interfaces@~3.4.8": + version "3.4.8" + resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime-interfaces/-/rendermime-interfaces-3.4.8.tgz#2ed70bf936a03523fbd0a8838cded9c23af6211f" + integrity sha512-zaJbCv9fhgwAlNOcmWnz2rSmoRPR3QLUvhEQ7e08k0jrG6O3Zf19SObEOcp1TM0qwPNSEFT71AbAa81ari13Jg== + dependencies: + "@jupyterlab/translation" "^3.4.8" + "@lumino/coreutils" "^1.11.0" + "@lumino/widgets" "^1.33.0" + +"@jupyterlab/rendermime@^3.0.0", "@jupyterlab/rendermime@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime/-/rendermime-3.5.0.tgz#279a2672690b63ac23990b366f2dc5cdc786dacc" + integrity sha512-vA5bQA/v7/P/6a3WXdrSoTeGgIJy1iLvpVpJ3DfR9NIpPrXzazDtRplipwcHsNjtUn4P2oS8C46s/eTOEPsQOw== + dependencies: + "@jupyterlab/apputils" "^3.5.0" + "@jupyterlab/codemirror" "^3.5.0" + "@jupyterlab/coreutils" "^5.5.0" + "@jupyterlab/nbformat" "^3.5.0" + "@jupyterlab/observables" "^4.5.0" + "@jupyterlab/rendermime-interfaces" "^3.5.0" + "@jupyterlab/services" "^6.5.0" + "@jupyterlab/translation" "^3.5.0" "@lumino/algorithm" "^1.9.0" "@lumino/coreutils" "^1.11.0" "@lumino/messaging" "^1.10.0" @@ -2114,34 +1946,34 @@ lodash.escape "^4.0.1" marked "^4.0.17" -"@jupyterlab/services@^6.0.0", "@jupyterlab/services@^6.1.8", "@jupyterlab/services@^6.4.7": - version "6.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/services/-/services-6.4.7.tgz#099cac035e3b61fe85015dabf1d864f10eecb060" - integrity sha512-toBSXj3kOk470IFFVJx3zdzJ2Qho3LHe/1YfBSuIQ2fSD+RimHnWgZPdMxntH6uaowLIESi/w6Dv48BnbAZPXg== - dependencies: - "@jupyterlab/coreutils" "^5.4.7" - "@jupyterlab/nbformat" "^3.4.7" - "@jupyterlab/observables" "^4.4.7" - "@jupyterlab/settingregistry" "^3.4.7" - "@jupyterlab/statedb" "^3.4.7" +"@jupyterlab/services@^6.0.0", "@jupyterlab/services@^6.1.8", "@jupyterlab/services@^6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/services/-/services-6.5.0.tgz#cf89407d8f39ed708394e8ba14b5cba5b65b9cba" + integrity sha512-g5fa7oFu1I6i0agOmx6ud/1fjYAsr3zHzoymE4oAGN3nIbt8HTcmzLbiwmaWssGCVUF4h06GOYWcAe/x/ND8JA== + dependencies: + "@jupyterlab/coreutils" "^5.5.0" + "@jupyterlab/nbformat" "^3.5.0" + "@jupyterlab/observables" "^4.5.0" + "@jupyterlab/settingregistry" "^3.5.0" + "@jupyterlab/statedb" "^3.5.0" "@lumino/algorithm" "^1.9.0" "@lumino/coreutils" "^1.11.0" - "@lumino/messaging" "^1.10.0" + "@lumino/disposable" "^1.10.0" + "@lumino/polling" "^1.9.0" "@lumino/signaling" "^1.10.0" - "@lumino/widgets" "^1.33.0" - lodash.escape "^4.0.1" - marked "^4.0.17" + node-fetch "^2.6.0" + ws "^7.4.6" -"@jupyterlab/services@^6.0.0", "@jupyterlab/services@^6.1.8", "@jupyterlab/services@^6.4.7": - version "6.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/services/-/services-6.4.7.tgz#099cac035e3b61fe85015dabf1d864f10eecb060" - integrity sha512-toBSXj3kOk470IFFVJx3zdzJ2Qho3LHe/1YfBSuIQ2fSD+RimHnWgZPdMxntH6uaowLIESi/w6Dv48BnbAZPXg== +"@jupyterlab/services@~6.4.6": + version "6.4.8" + resolved "https://registry.yarnpkg.com/@jupyterlab/services/-/services-6.4.8.tgz#2da20fd5a5c94ab8f8200da633a252792927318a" + integrity sha512-/acj4d1A1V9KDN+k4CUokOA8e/IxaoJW2B+FJxVnTZvVOBh7093EIG+HYL1SQuQ8CUc2T4DNiq9mG3skiSe2fQ== dependencies: - "@jupyterlab/coreutils" "^5.4.7" - "@jupyterlab/nbformat" "^3.4.7" - "@jupyterlab/observables" "^4.4.7" - "@jupyterlab/settingregistry" "^3.4.7" - "@jupyterlab/statedb" "^3.4.7" + "@jupyterlab/coreutils" "^5.4.8" + "@jupyterlab/nbformat" "^3.4.8" + "@jupyterlab/observables" "^4.4.8" + "@jupyterlab/settingregistry" "^3.4.8" + "@jupyterlab/statedb" "^3.4.8" "@lumino/algorithm" "^1.9.0" "@lumino/coreutils" "^1.11.0" "@lumino/disposable" "^1.10.0" @@ -2150,12 +1982,12 @@ node-fetch "^2.6.0" ws "^7.4.6" -"@jupyterlab/settingregistry@^3.0.0", "@jupyterlab/settingregistry@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/settingregistry/-/settingregistry-3.4.7.tgz#482bbd156ddb7a704b0f6ef693dd2dfde0731476" - integrity sha512-g173LWho1nOJ/fzp8tpiy09mFvTw9c2hleIyKpiYDUhdsBBGttSOAd6bdb/rCCy+d1mHKxLH61FNHuPZuA/ceA== +"@jupyterlab/settingregistry@^3.0.0", "@jupyterlab/settingregistry@^3.4.8", "@jupyterlab/settingregistry@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/settingregistry/-/settingregistry-3.5.0.tgz#2a6a0c2771c61643ab4aff9355ac863b4c8fc0ab" + integrity sha512-y9H9U4iMVfe2btImp5DR9mGAs36Sow0hI6ajK61bhHVJ4CumYdFBd8drrQGuYcyk/Y4ypU5HO9EaLBQU3CLCug== dependencies: - "@jupyterlab/statedb" "^3.4.7" + "@jupyterlab/statedb" "^3.5.0" "@lumino/commands" "^1.19.0" "@lumino/coreutils" "^1.11.0" "@lumino/disposable" "^1.10.0" @@ -2163,46 +1995,35 @@ ajv "^6.12.3" json5 "^2.1.1" -"@jupyterlab/shared-models@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/shared-models/-/shared-models-3.4.7.tgz#d991be3a860b144cd020b818280d294840cfaeff" - integrity sha512-w5895CCFjqpQ+S5Yj9wSCud6RUcq02azmnuW7hUxodHENjOa4IjoxrgQmdQHq/G4L2anCNvEihhQe+B59os3fw== +"@jupyterlab/settingregistry@~3.4.8": + version "3.4.8" + resolved "https://registry.yarnpkg.com/@jupyterlab/settingregistry/-/settingregistry-3.4.8.tgz#10f52898b8553639ed4d9d786294617ac599c4a9" + integrity sha512-w9MNFivKXUOLrEvWckpcYm3XAZr0sbcKQ33SkftaLSQODsFlUwkcsjCPJJATVyxiWXAsCAgUlOKdNcqWxYXvOA== dependencies: - "@jupyterlab/nbformat" "^3.4.7" + "@jupyterlab/statedb" "^3.4.8" + "@lumino/commands" "^1.19.0" "@lumino/coreutils" "^1.11.0" "@lumino/disposable" "^1.10.0" "@lumino/signaling" "^1.10.0" ajv "^6.12.3" json5 "^2.1.1" -"@jupyterlab/shared-models@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/shared-models/-/shared-models-3.4.7.tgz#d991be3a860b144cd020b818280d294840cfaeff" - integrity sha512-w5895CCFjqpQ+S5Yj9wSCud6RUcq02azmnuW7hUxodHENjOa4IjoxrgQmdQHq/G4L2anCNvEihhQe+B59os3fw== +"@jupyterlab/shared-models@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/shared-models/-/shared-models-3.5.0.tgz#d34b5ac6d0121ea8daf3862bb92926959aade209" + integrity sha512-QZL9BPCC+iV12AsUbUAwQvZeeo3fKh1X8h9odtlc+Oc+dyZAqREYXuZGjVlaG9qwbF62xDr7acfO4HqCK6Kjyw== dependencies: - "@jupyterlab/nbformat" "^3.4.7" + "@jupyterlab/nbformat" "^3.5.0" "@lumino/coreutils" "^1.11.0" "@lumino/disposable" "^1.10.0" "@lumino/signaling" "^1.10.0" y-protocols "^1.0.5" yjs "^13.5.17" -"@jupyterlab/statedb@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/statedb/-/statedb-3.4.7.tgz#24cc92d67f5174c6fcbd46c406df63e5f76ec7e6" - integrity sha512-eewDSA8z/vRgJbzU3HGs2+i6L82RM+y8E6/eH2O2S1YMuuW+gVf6mbDOJvMCIGtL5gEuVeen/zpLN3/hZivb+Q== - dependencies: - "@jupyterlab/nbformat" "^3.4.8" - "@lumino/coreutils" "^1.11.0" - "@lumino/disposable" "^1.10.0" - "@lumino/signaling" "^1.10.0" - y-protocols "^1.0.5" - yjs "^13.5.17" - -"@jupyterlab/statedb@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/statedb/-/statedb-3.4.7.tgz#24cc92d67f5174c6fcbd46c406df63e5f76ec7e6" - integrity sha512-eewDSA8z/vRgJbzU3HGs2+i6L82RM+y8E6/eH2O2S1YMuuW+gVf6mbDOJvMCIGtL5gEuVeen/zpLN3/hZivb+Q== +"@jupyterlab/statedb@^3.4.8", "@jupyterlab/statedb@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/statedb/-/statedb-3.5.0.tgz#6118a7cf339a3d5f033b7b61c3480bfd9bb97a48" + integrity sha512-S4/BjcfSN8tGMyL4jjrD4TMoLTABI3zkLjaqSNRfT6iyKnqN8VKcMHBZXOq90uWGkw+caQZ5GiL+L7uEtahE4w== dependencies: "@lumino/commands" "^1.19.0" "@lumino/coreutils" "^1.11.0" @@ -2210,36 +2031,27 @@ "@lumino/properties" "^1.8.0" "@lumino/signaling" "^1.10.0" -"@jupyterlab/statusbar@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/statusbar/-/statusbar-3.4.7.tgz#add1c4cbf71c938d3f2a2975bcd7dcf7bfac67ab" - integrity sha512-HBkJjJamsQzoZxywqeEZ4iO9+nXSe9Oj8ns+GuXrKlULKs79c2LfJOJ9SDW0amSgjplcNnM6lxrKI/ppDrIB9Q== +"@jupyterlab/statedb@~3.4.8": + version "3.4.8" + resolved "https://registry.yarnpkg.com/@jupyterlab/statedb/-/statedb-3.4.8.tgz#78654b5563f97e8f63683c54403bdc391f4c8df3" + integrity sha512-PMlo+x4R8uXPH1BgCJUVVIj/H8SY9scGJU0pqHhYa6mm3R2EHNAwr8JxyqGjAqT3C0VCCCIDzHtQ3f9inW+OXg== dependencies: - "@jupyterlab/apputils" "^3.4.7" - "@jupyterlab/codeeditor" "^3.4.7" - "@jupyterlab/services" "^6.4.7" - "@jupyterlab/translation" "^3.4.7" - "@jupyterlab/ui-components" "^3.4.7" - "@lumino/algorithm" "^1.9.0" + "@lumino/commands" "^1.19.0" "@lumino/coreutils" "^1.11.0" "@lumino/disposable" "^1.10.0" - "@lumino/messaging" "^1.10.0" + "@lumino/properties" "^1.8.0" "@lumino/signaling" "^1.10.0" - "@lumino/widgets" "^1.33.0" - csstype "~3.0.3" - react "^17.0.1" - typestyle "^2.0.4" -"@jupyterlab/statusbar@^3.4.8": - version "3.4.8" - resolved "https://registry.yarnpkg.com/@jupyterlab/statusbar/-/statusbar-3.4.8.tgz#ac99f5304cf54ec06b7fb02badde8f22201f713e" - integrity sha512-WdeiqMmUEfxfOSMyOTRHQwPKSpcE9ucmq8SL0KN5pY5jcEfw3JTJGSb1tKV3WpI6lqErCQITcu29i1jiP/p+Vg== +"@jupyterlab/statusbar@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/statusbar/-/statusbar-3.5.0.tgz#62155a3938f6aff6081820c54007d7cbae93bf68" + integrity sha512-kXgMN7x5V3bTWP45mahOt2SaNOMXgeohlMsIou9f+OHZeR++6dmMMKyHPnE7QXES4At26FQu3swRI+8+A2klgA== dependencies: - "@jupyterlab/apputils" "^3.4.8" - "@jupyterlab/codeeditor" "^3.4.8" - "@jupyterlab/services" "^6.4.8" - "@jupyterlab/translation" "^3.4.8" - "@jupyterlab/ui-components" "^3.4.8" + "@jupyterlab/apputils" "^3.5.0" + "@jupyterlab/codeeditor" "^3.5.0" + "@jupyterlab/services" "^6.5.0" + "@jupyterlab/translation" "^3.5.0" + "@jupyterlab/ui-components" "^3.5.0" "@lumino/algorithm" "^1.9.0" "@lumino/coreutils" "^1.11.0" "@lumino/disposable" "^1.10.0" @@ -2251,20 +2063,20 @@ typestyle "^2.0.4" "@jupyterlab/testutils@^3.0.0": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/testutils/-/testutils-3.4.7.tgz#16f90b61178f4a4fed207de87c8c2eca9c96fbfa" - integrity sha512-aDA4VrkN3qF2xxTNkJR3Tqt1kCb29rcLzOsG05pYfSpco9Dk7VUJN++iryEXA1OdaIbwy3EFbk3IF42GXhK7OQ== - dependencies: - "@jupyterlab/apputils" "^3.4.7" - "@jupyterlab/cells" "^3.4.7" - "@jupyterlab/codeeditor" "^3.4.7" - "@jupyterlab/codemirror" "^3.4.7" - "@jupyterlab/coreutils" "^5.4.7" - "@jupyterlab/docregistry" "^3.4.7" - "@jupyterlab/nbformat" "^3.4.7" - "@jupyterlab/notebook" "^3.4.7" - "@jupyterlab/rendermime" "^3.4.7" - "@jupyterlab/services" "^6.4.7" + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/testutils/-/testutils-3.5.0.tgz#ec77e167a68cbf0a7a9522f99d46510bba359b1c" + integrity sha512-7ZBwljj10l+E+49/Z0vC270OZqJzJGhso8gvI54ssrRZTjKj9njuU9In/oL90Fjn78iMkkCCtPB15hlcLTA0OA== + dependencies: + "@jupyterlab/apputils" "^3.5.0" + "@jupyterlab/cells" "^3.5.0" + "@jupyterlab/codeeditor" "^3.5.0" + "@jupyterlab/codemirror" "^3.5.0" + "@jupyterlab/coreutils" "^5.5.0" + "@jupyterlab/docregistry" "^3.5.0" + "@jupyterlab/nbformat" "^3.5.0" + "@jupyterlab/notebook" "^3.5.0" + "@jupyterlab/rendermime" "^3.5.0" + "@jupyterlab/services" "^6.5.0" "@lumino/algorithm" "^1.9.0" "@lumino/coreutils" "^1.11.0" "@lumino/properties" "^1.8.0" @@ -2283,56 +2095,43 @@ simulate-event "~1.4.0" ts-jest "^26.3.0" -"@jupyterlab/translation@^3.0.0", "@jupyterlab/translation@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/translation/-/translation-3.4.7.tgz#6b880ddcc1d8c413ddee41f7389ed5814b672924" - integrity sha512-JfMyIIt+ILtCi/8Y/KYZUtWfcwWbsd1yQJJyuIonRYBEOHa3KyPH58VOmiJGjXQoIaIt0lEEUdp5FjfxbU9zyA== +"@jupyterlab/theme-dark-extension@^3.4.8": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/theme-dark-extension/-/theme-dark-extension-3.5.0.tgz#77fa931535c0fb584f6f1e4c7c887eb577fd95ac" + integrity sha512-wzz3Vmiho7lBpGYcEYWAKuF8U4EZqTfGEFIdUC1EWlSBexp2dEXz2GYendzRbG+4Wbnn1SzsF7wHAVesBsiiaQ== dependencies: - "@jupyterlab/coreutils" "^5.4.7" - "@jupyterlab/services" "^6.4.7" - "@jupyterlab/statedb" "^3.4.7" - "@lumino/coreutils" "^1.11.0" + "@jupyterlab/application" "^3.5.0" + "@jupyterlab/apputils" "^3.5.0" + "@jupyterlab/translation" "^3.5.0" -"@jupyterlab/ui-components@^3.0.0", "@jupyterlab/ui-components@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/ui-components/-/ui-components-3.4.7.tgz#fda40956233ef14f84ba8401baf0c4452b370d31" - integrity sha512-bg+ZDw+SEPnKpqetfmBGFY1ZrrJvgk+U09fhQu/bpZZpH3w0W0kVX4S2jJvyPPRRgr1i/k1W/N2/Vu6XmtfbJQ== +"@jupyterlab/theme-light-extension@^3.4.8": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/theme-light-extension/-/theme-light-extension-3.5.0.tgz#5bc5da52ee752444ffb4542cf1b47168700aa19e" + integrity sha512-kPWTvRqqUZb0nhsBvp28n8g559hoFSvAzVgwAaBWjIKvyaLh4o4nYa1nZAPPZRh1qbd+fPYXvkCStUfAbSZuDQ== dependencies: - "@jupyterlab/coreutils" "^5.4.8" - "@jupyterlab/services" "^6.4.8" - "@jupyterlab/statedb" "^3.4.8" - "@lumino/coreutils" "^1.11.0" + "@jupyterlab/application" "^3.5.0" + "@jupyterlab/apputils" "^3.5.0" + "@jupyterlab/translation" "^3.5.0" -"@jupyterlab/ui-components@^3.0.0", "@jupyterlab/ui-components@^3.4.7": - version "3.4.7" - resolved "https://registry.yarnpkg.com/@jupyterlab/ui-components/-/ui-components-3.4.7.tgz#fda40956233ef14f84ba8401baf0c4452b370d31" - integrity sha512-bg+ZDw+SEPnKpqetfmBGFY1ZrrJvgk+U09fhQu/bpZZpH3w0W0kVX4S2jJvyPPRRgr1i/k1W/N2/Vu6XmtfbJQ== +"@jupyterlab/translation@^3.0.0", "@jupyterlab/translation@^3.4.8", "@jupyterlab/translation@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/translation/-/translation-3.5.0.tgz#4f8cfd7382009365297df112abb51b7a8d531081" + integrity sha512-68Cyc9gVKef/Gr9tx9YisiPEIzXUk+mnM7u9huthq5A0aHh1W0E51CM/m0BwJDBurbY+W7erphy0nSWSEk7vCg== dependencies: - "@blueprintjs/core" "^3.36.0" - "@blueprintjs/select" "^3.15.0" - "@jupyterlab/coreutils" "^5.4.7" - "@jupyterlab/translation" "^3.4.7" - "@lumino/algorithm" "^1.9.0" - "@lumino/commands" "^1.19.0" + "@jupyterlab/coreutils" "^5.5.0" + "@jupyterlab/services" "^6.5.0" + "@jupyterlab/statedb" "^3.5.0" "@lumino/coreutils" "^1.11.0" - "@lumino/disposable" "^1.10.0" - "@lumino/signaling" "^1.10.0" - "@lumino/virtualdom" "^1.14.0" - "@lumino/widgets" "^1.33.0" - "@rjsf/core" "^3.1.0" - react "^17.0.1" - react-dom "^17.0.1" - typestyle "^2.0.4" -"@jupyterlab/ui-components@^3.4.8": - version "3.4.8" - resolved "https://registry.yarnpkg.com/@jupyterlab/ui-components/-/ui-components-3.4.8.tgz#1aec1b7c6a07abe8d84424d8b3085d8f5627b360" - integrity sha512-mkbJnllKCHaKEtUAtCwQAHrJjoD13njlcaDM2Ml9x8vF7PQB8bwRfp/ml4d6n1jOEJjd+a8HRrpzD2X1mTneZQ== +"@jupyterlab/ui-components@^3.0.0", "@jupyterlab/ui-components@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@jupyterlab/ui-components/-/ui-components-3.5.0.tgz#329d0d0b3db666c041fa1a647af68400909d09e9" + integrity sha512-1AIKMUhyLgPYh3R3qvEPRhLKkiVwBtPg571If9UxTvDEJqVwtNTayn47sRsWlOKlueLVwebgEHVSkk2ahxgF6Q== dependencies: "@blueprintjs/core" "^3.36.0" "@blueprintjs/select" "^3.15.0" - "@jupyterlab/coreutils" "^5.4.8" - "@jupyterlab/translation" "^3.4.8" + "@jupyterlab/coreutils" "^5.5.0" + "@jupyterlab/translation" "^3.5.0" "@lumino/algorithm" "^1.9.0" "@lumino/commands" "^1.19.0" "@lumino/coreutils" "^1.11.0" @@ -2345,31 +2144,31 @@ react-dom "^17.0.1" typestyle "^2.0.4" -"@jupyterlite/contents@^0.1.0-beta.13": - version "0.1.0-beta.13" - resolved "https://registry.yarnpkg.com/@jupyterlite/contents/-/contents-0.1.0-beta.13.tgz#5c46ba95942223b2067e81a1212e26c5e8682927" - integrity sha512-TozXFXMTEGMjHnPBw2by/vQf0rqlgjPBZ6GL+sGSj5GfmG40Q/Sv7h+WaoL3peLtXTYHl5S4nycMfMi/CXWezw== +"@jupyterlite/contents@^0.1.0-beta.14": + version "0.1.0-beta.14" + resolved "https://registry.yarnpkg.com/@jupyterlite/contents/-/contents-0.1.0-beta.14.tgz#18d729da9b7dbd77bf34270d1ece9ceb5d8c1cc4" + integrity sha512-ygkG1N+CQKoL5KS4r2ewv+Oxfumw1DsvD+P9dxOmQ+fpAeeSE6Nn5h7xIXcPjToN/9aFMNQS7lTFp0U2acPNKw== dependencies: - "@jupyterlab/nbformat" "~3.4.7" + "@jupyterlab/nbformat" "~3.4.8" "@jupyterlab/services" "~6.4.6" - "@jupyterlite/localforage" "^0.1.0-beta.13" + "@jupyterlite/localforage" "^0.1.0-beta.14" "@lumino/coreutils" "^1.12.0" localforage "^1.9.0" mime "^3.0.0" "@jupyterlite/iframe-extension@^0.1.0-beta.13": - version "0.1.0-beta.13" - resolved "https://registry.yarnpkg.com/@jupyterlite/iframe-extension/-/iframe-extension-0.1.0-beta.13.tgz#f04e0f8fe1cde6c318d32094d078ada254a9424b" - integrity sha512-RHrrcMTRZo+o5eY42IAOHYc3BOuKnRpq5+hsdHPKf58end2LcPYnOSssVsKzou4dKrr+mSOnGVeB/Y0yO+JaAQ== + version "0.1.0-beta.14" + resolved "https://registry.yarnpkg.com/@jupyterlite/iframe-extension/-/iframe-extension-0.1.0-beta.14.tgz#0a3eff4990ffcb5049e80636938cac90d5e454ed" + integrity sha512-rZ7wj92JXpzQcS9y7KeLhk350bllexYecX+fvVUjg01noA3Hwg3nOWLkLI3EdyjqEXCK4A4TVORG+Hh7sCfO1A== dependencies: - "@jupyterlab/rendermime-interfaces" "~3.4.7" + "@jupyterlab/rendermime-interfaces" "~3.4.8" "@lumino/coreutils" "^1.12.0" "@lumino/widgets" "^1.33.0" -"@jupyterlite/kernel@^0.1.0-beta.13": - version "0.1.0-beta.13" - resolved "https://registry.yarnpkg.com/@jupyterlite/kernel/-/kernel-0.1.0-beta.13.tgz#96f851ca23a0d270709de6b56af44751fd02e5c6" - integrity sha512-E0bbfoO+bvLV2VUx6h+Zlb+SCLtGbovnXO70EsuGnWNJ0QfJRS/JL5YGL6Sb7H7ZZxJVKgUnVmjNpCFcBl5Jyg== +"@jupyterlite/kernel@^0.1.0-beta.14": + version "0.1.0-beta.14" + resolved "https://registry.yarnpkg.com/@jupyterlite/kernel/-/kernel-0.1.0-beta.14.tgz#c498422644d5d1d5537ace20ae1ce076946c1d35" + integrity sha512-NTvcTC/mIOroBM3JeVF8swHvxGkM79co8XSq6UTx/bcU5UNXNTbRxJQToDwGIf4Ir9v9x4+Xhdnaqvr6NHMysA== dependencies: "@jupyterlab/coreutils" "~5.4.6" "@jupyterlab/observables" "~4.4.4" @@ -2381,17 +2180,17 @@ comlink "^4.3.1" mock-socket "^9.1.0" -"@jupyterlite/licenses@^0.1.0-beta.13": - version "0.1.0-beta.13" - resolved "https://registry.yarnpkg.com/@jupyterlite/licenses/-/licenses-0.1.0-beta.13.tgz#7764189d063b5dce79b04c09fb8e9d99594d4f9c" - integrity sha512-iEezjDoiay/T/gmEJ3Lm0d7lxRakPJTFy4eWRPL9EtnTc1cHxn3Kf6NjSx1pGHcLBHoqjr7LCVoZ1rGO5823TA== +"@jupyterlite/licenses@^0.1.0-beta.14": + version "0.1.0-beta.14" + resolved "https://registry.yarnpkg.com/@jupyterlite/licenses/-/licenses-0.1.0-beta.14.tgz#85a4353bcdd285bc297bd50ec0248594ee89e895" + integrity sha512-TvbcJjjfZRdjIlo3142C9ICTU5+HAme5ZxqiZtd4GROYQy7podl2eNzGvFiRn0Yo/H07qKhdmtwWH0WIHANsyw== dependencies: "@jupyterlab/coreutils" "~5.4.6" -"@jupyterlite/localforage@^0.1.0-beta.13": - version "0.1.0-beta.13" - resolved "https://registry.yarnpkg.com/@jupyterlite/localforage/-/localforage-0.1.0-beta.13.tgz#281d06a2153e804f4c0c1fece2bb130d765a22cf" - integrity sha512-+ecU18eumiCc1e4/qRi+FPIZDk/dMPXVFZpV2AMcg9B2dnw/SFAIu/ovq+IsAUNYKzVXcm7YSG/P4LgWiEE0Vg== +"@jupyterlite/localforage@^0.1.0-beta.14": + version "0.1.0-beta.14" + resolved "https://registry.yarnpkg.com/@jupyterlite/localforage/-/localforage-0.1.0-beta.14.tgz#e44c13ca262bc85f2ec2a94adcee5231fb33636b" + integrity sha512-5kjg+28Tw45ogIX/EhWkWFQqskAV58oIz58zcUxmXYH0EA0nBwEK67Acx2aNhwUZ0dZN1yS5kl0F1YPlyLCXrw== dependencies: "@jupyterlab/coreutils" "^5.4.6" "@lumino/coreutils" "^1.5.3" @@ -2399,85 +2198,85 @@ localforage-memoryStorageDriver "^0.9.2" "@jupyterlite/pyolite-kernel-extension@^0.1.0-beta.13": - version "0.1.0-beta.13" - resolved "https://registry.yarnpkg.com/@jupyterlite/pyolite-kernel-extension/-/pyolite-kernel-extension-0.1.0-beta.13.tgz#c8d47b3865896daf8ea92b30fce6d2378f0374fa" - integrity sha512-c3yqIXIkoH/VPmwjc+sqPZwVCEMUP6bRwo92SRVptaKvHyAdo1/ErK1kBW8xCUrB+MP5lm6gduXHbGjmOmsr/Q== + version "0.1.0-beta.14" + resolved "https://registry.yarnpkg.com/@jupyterlite/pyolite-kernel-extension/-/pyolite-kernel-extension-0.1.0-beta.14.tgz#92e685d4416743d3acb486d5627bb8e56ee3cd2d" + integrity sha512-OmE9ceijWg4bKbw0uLoH89ES6N0LyYEoK8vNBfOuXM6+gF1uUgQfoO6BGHK0Rle0I1t1N5EV0tcZcZ3MqOZvDQ== dependencies: "@jupyterlab/coreutils" "~5.4.6" - "@jupyterlite/kernel" "^0.1.0-beta.13" - "@jupyterlite/pyolite-kernel" "^0.1.0-beta.13" - "@jupyterlite/server" "^0.1.0-beta.13" + "@jupyterlite/kernel" "^0.1.0-beta.14" + "@jupyterlite/pyolite-kernel" "^0.1.0-beta.14" + "@jupyterlite/server" "^0.1.0-beta.14" -"@jupyterlite/pyolite-kernel@^0.1.0-beta.13": - version "0.1.0-beta.13" - resolved "https://registry.yarnpkg.com/@jupyterlite/pyolite-kernel/-/pyolite-kernel-0.1.0-beta.13.tgz#47f4fd92da2e13f6cf4d404b49165dce02522fd2" - integrity sha512-djJ1aYdo1iULKA78737UNHUu6LGcoQThi/Y5ZH7yGcTuw1NQPb/HzbFvspNgXKuZmA3qGyNYQDEI2SX52Oz+1A== +"@jupyterlite/pyolite-kernel@^0.1.0-beta.14": + version "0.1.0-beta.14" + resolved "https://registry.yarnpkg.com/@jupyterlite/pyolite-kernel/-/pyolite-kernel-0.1.0-beta.14.tgz#e6fba6e5673dc681aced29f72a70960a5891317d" + integrity sha512-wiQkBM9FmvbN8HmD9rXeeDsHUXRk3d6oThhLsIC8SLPxTbuQl8j4jTNITGMTuh6ZQl3wgP9anVoGMwh/rmPuUw== dependencies: - "@jupyterlite/contents" "^0.1.0-beta.13" - "@jupyterlite/kernel" "^0.1.0-beta.13" + "@jupyterlite/contents" "^0.1.0-beta.14" + "@jupyterlite/kernel" "^0.1.0-beta.14" comlink "^4.3.1" "@jupyterlite/server-extension@^0.1.0-beta.13": - version "0.1.0-beta.13" - resolved "https://registry.yarnpkg.com/@jupyterlite/server-extension/-/server-extension-0.1.0-beta.13.tgz#cfa2fc3154698c031fcc0e050aa3e05bbdfbd127" - integrity sha512-yM/27AaRLLfY7Dbvz2oNKWgyPe2E8whQcGHKxBJ/n4C4t4qZmSzkBGmHM5c4AmB+3bJESLE24h/2084u1HJTxw== + version "0.1.0-beta.14" + resolved "https://registry.yarnpkg.com/@jupyterlite/server-extension/-/server-extension-0.1.0-beta.14.tgz#bf0c8e5f2137135849389b234e154df19202b3c2" + integrity sha512-cs0V1wzIy5ZOrn3RUtOltrlaAthAiNf1XNfvu4klpjoZeBoIYOPo0x8xrmNonEVq8AkVw8TZrR9RLZws4p41HQ== dependencies: "@jupyterlab/coreutils" "~5.4.6" - "@jupyterlite/kernel" "^0.1.0-beta.13" - "@jupyterlite/licenses" "^0.1.0-beta.13" - "@jupyterlite/localforage" "^0.1.0-beta.13" - "@jupyterlite/server" "^0.1.0-beta.13" - "@jupyterlite/session" "^0.1.0-beta.13" - "@jupyterlite/settings" "^0.1.0-beta.13" - "@jupyterlite/translation" "^0.1.0-beta.13" - -"@jupyterlite/server@^0.1.0-beta.13": - version "0.1.0-beta.13" - resolved "https://registry.yarnpkg.com/@jupyterlite/server/-/server-0.1.0-beta.13.tgz#2663a0b05fab9bfb22c1f0c19827931f388f1d5f" - integrity sha512-I1oOgd3ALNE1mJQPSj16T7UtkV8OwcRJuyIswQAOen5hSkeMbHWBQmy6vn94zHKe9InATesK6J2ytnsWFDLa5A== + "@jupyterlite/kernel" "^0.1.0-beta.14" + "@jupyterlite/licenses" "^0.1.0-beta.14" + "@jupyterlite/localforage" "^0.1.0-beta.14" + "@jupyterlite/server" "^0.1.0-beta.14" + "@jupyterlite/session" "^0.1.0-beta.14" + "@jupyterlite/settings" "^0.1.0-beta.14" + "@jupyterlite/translation" "^0.1.0-beta.14" + +"@jupyterlite/server@^0.1.0-beta.13", "@jupyterlite/server@^0.1.0-beta.14": + version "0.1.0-beta.14" + resolved "https://registry.yarnpkg.com/@jupyterlite/server/-/server-0.1.0-beta.14.tgz#1bdffa1ff5a0fdd2390a9c48e182cfd2d439231d" + integrity sha512-fMW6+jrbbo5XuCaQ79cnZhQEj6kY6bwUtjrOluG5YTrm3IWfEtIZvxwQAbq3GeEiYIih02TftFmUJajRII3q+g== dependencies: "@jupyterlab/coreutils" "~5.4.6" - "@jupyterlab/nbformat" "~3.4.7" + "@jupyterlab/nbformat" "~3.4.8" "@jupyterlab/observables" "~4.4.4" "@jupyterlab/services" "~6.4.6" - "@jupyterlab/settingregistry" "~3.4.7" - "@jupyterlab/statedb" "~3.4.7" - "@jupyterlite/contents" "^0.1.0-beta.13" - "@jupyterlite/kernel" "^0.1.0-beta.13" - "@jupyterlite/session" "^0.1.0-beta.13" - "@jupyterlite/settings" "^0.1.0-beta.13" - "@jupyterlite/translation" "^0.1.0-beta.13" + "@jupyterlab/settingregistry" "~3.4.8" + "@jupyterlab/statedb" "~3.4.8" + "@jupyterlite/contents" "^0.1.0-beta.14" + "@jupyterlite/kernel" "^0.1.0-beta.14" + "@jupyterlite/session" "^0.1.0-beta.14" + "@jupyterlite/settings" "^0.1.0-beta.14" + "@jupyterlite/translation" "^0.1.0-beta.14" "@lumino/application" "^1.27.0" "@lumino/coreutils" "^1.12.0" mock-socket "^9.1.0" -"@jupyterlite/session@^0.1.0-beta.13": - version "0.1.0-beta.13" - resolved "https://registry.yarnpkg.com/@jupyterlite/session/-/session-0.1.0-beta.13.tgz#3b766c70198ddb0bb0ac6906ec1efd8e826f4d40" - integrity sha512-RVC97wmEPD2Yu5AVmI3/2wLTTx4Qof/CmAcKFKKucU8bDMQll7RB0/6rZYtlDL97gEnERd/iDLO6IS2gWrTOoA== +"@jupyterlite/session@^0.1.0-beta.14": + version "0.1.0-beta.14" + resolved "https://registry.yarnpkg.com/@jupyterlite/session/-/session-0.1.0-beta.14.tgz#d0ba3b2ca3cae8a5b9ed29eb90ca861d15a6844a" + integrity sha512-zfNnoC8iA+TzaBshCAIaTNEQTv9iWLZaIqrVhjydE8oaSHthNtEHsytbM8cRIkkMAJU5w8+8mUar3NtlWEOwSQ== dependencies: "@jupyterlab/coreutils" "~5.4.6" "@jupyterlab/services" "~6.4.6" - "@jupyterlite/kernel" "^0.1.0-beta.13" + "@jupyterlite/kernel" "^0.1.0-beta.14" "@lumino/algorithm" "^1.9.1" "@lumino/coreutils" "^1.12.0" -"@jupyterlite/settings@^0.1.0-beta.13": - version "0.1.0-beta.13" - resolved "https://registry.yarnpkg.com/@jupyterlite/settings/-/settings-0.1.0-beta.13.tgz#2ec6ea96f7cb62820a6279df494936cbbac6ddff" - integrity sha512-0mq/3PdUVxB8RxnyxjcmZ04ch6t9JgZjinqwct18Eu+jr6O+392dp08ckWPM6PxSsAwOsgDnN+toHKizlfymRw== +"@jupyterlite/settings@^0.1.0-beta.14": + version "0.1.0-beta.14" + resolved "https://registry.yarnpkg.com/@jupyterlite/settings/-/settings-0.1.0-beta.14.tgz#cfcd6f4f3725a78293f6cc8f7b970b9a11a2afc4" + integrity sha512-8BvEeHHDD8sdaqA5Bu5JU56yNHAh8llh02dk4FDDaULrHglYZ+TnTZyJwPVvFoBwAG/vva6bC9TaeYXfMttUzA== dependencies: "@jupyterlab/coreutils" "~5.4.6" - "@jupyterlab/settingregistry" "~3.4.7" - "@jupyterlite/localforage" "^0.1.0-beta.13" + "@jupyterlab/settingregistry" "~3.4.8" + "@jupyterlite/localforage" "^0.1.0-beta.14" "@lumino/coreutils" "^1.12.0" json5 "^2.2.0" localforage "^1.9.0" -"@jupyterlite/translation@^0.1.0-beta.13": - version "0.1.0-beta.13" - resolved "https://registry.yarnpkg.com/@jupyterlite/translation/-/translation-0.1.0-beta.13.tgz#6b2d873adcdaebd80a81ab1266796632e0b9cfac" - integrity sha512-yiPxnNyZ/jSGiTaYQfiwFhypiGqLsSA6Mjo2+AceG6V/6UM5NaSXxPpgoiYfniWjFcTB1B64Lfh+ERQgra0ohQ== +"@jupyterlite/translation@^0.1.0-beta.14": + version "0.1.0-beta.14" + resolved "https://registry.yarnpkg.com/@jupyterlite/translation/-/translation-0.1.0-beta.14.tgz#85ddfbc84ca793c2026956fc303809aa93b8c78d" + integrity sha512-jhgUiXyAvDRgmnEKyFzcwTr1lAE7KwIi/kFIipm+LCfzbxJXqHfFLx/jcQ9xzgqAQ6GEx8fj+oYY2a+0Y1qS3g== dependencies: "@jupyterlab/coreutils" "~5.4.6" "@lumino/coreutils" "^1.12.0" @@ -3159,117 +2958,118 @@ integrity sha512-Z06lp/yuhz8CtIir3PNTGnuk7909eXt4ukJsCzChsGuot2l5Fbs96RJ/FOHgwCedaX74CtxPjXHXoszFbUA+4A== "@lumino/application@^1.27.0": - version "1.29.3" - resolved "https://registry.yarnpkg.com/@lumino/application/-/application-1.29.3.tgz#9194c9f95555aee5a6b9ac66074bd68fe0adc896" - integrity sha512-F7nnA6nY0PXtdqQej9cr55j/o5bHr+0I5KqvvX1nhjCfYPvcAszdEsOmyTMNIf0JnSvUNED6bdCh9ewkyuRzLw== + version "1.30.0" + resolved "https://registry.yarnpkg.com/@lumino/application/-/application-1.30.0.tgz#7fe12b716b5f3cb0404f3de8da54cba51a681954" + integrity sha512-MR3X2X+8I8httgziD2Az6ucrpr6ZJfVsQyfaiPfZ7vXSXahR4NWzayzV5D9HzIQl86xQsRhm7IuaCHeY1Lw/uw== dependencies: - "@lumino/commands" "^1.20.1" + "@lumino/commands" "^1.21.0" "@lumino/coreutils" "^1.12.1" - "@lumino/widgets" "^1.34.0" + "@lumino/widgets" "^1.35.0" -"@lumino/collections@^1.9.2": - version "1.9.2" - resolved "https://registry.yarnpkg.com/@lumino/collections/-/collections-1.9.2.tgz#8167833ec6d297111e0a66e6405a9ff958816243" - integrity sha512-j8eLf9m9cX4pc4yPld3oDfRwJIwI/T1h0/RJUsIyCF74qNQ8W7OH2V49PF6ARUqL7ug4Gltp9y2t6V9B9SOxDA== +"@lumino/collections@^1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@lumino/collections/-/collections-1.9.3.tgz#370dc2d50aa91371288a4f7376bea5a3191fc5dc" + integrity sha512-2i2Wf1xnfTgEgdyKEpqM16bcYRIhUOGCDzaVCEZACVG9R1CgYwOe3zfn71slBQOVSjjRgwYrgLXu4MBpt6YK+g== dependencies: "@lumino/algorithm" "^1.9.2" -"@lumino/commands@^1.15.2", "@lumino/commands@^1.19.0", "@lumino/commands@^1.20.1": - version "1.20.1" - resolved "https://registry.yarnpkg.com/@lumino/commands/-/commands-1.20.1.tgz#8a4e4840528e8009c5472dc6b5bb0970d7f27a5f" - integrity sha512-7u0vc3qWVAyI3CHGmQ+MXP5bvmj5dtnU5J4u2aRrodtlysU3nLjGhD57bbTq2VUqpmS1bkfBqNFhO1e4PFKSaQ== +"@lumino/commands@^1.15.2", "@lumino/commands@^1.19.0", "@lumino/commands@^1.21.0": + version "1.21.0" + resolved "https://registry.yarnpkg.com/@lumino/commands/-/commands-1.21.0.tgz#23cf0b5b1f9b00b0c2960d896726d89dd17bf6b4" + integrity sha512-N2LNL5fVNLdD48WEa7yyUtVRc2kIf4YpBojxygzZcMGVaoemLnCnUlw7espB5DTDl+WRO/pi5fkWTnoNvp+8Bg== dependencies: "@lumino/algorithm" "^1.9.2" "@lumino/coreutils" "^1.12.1" - "@lumino/disposable" "^1.10.2" + "@lumino/disposable" "^1.10.3" "@lumino/domutils" "^1.8.2" "@lumino/keyboard" "^1.8.2" - "@lumino/signaling" "^1.10.2" - "@lumino/virtualdom" "^1.14.2" + "@lumino/signaling" "^1.11.0" + "@lumino/virtualdom" "^1.14.3" -"@lumino/coreutils@^1.11.0", "@lumino/coreutils@^1.11.1", "@lumino/coreutils@^1.12.1", "@lumino/coreutils@^1.5.3", "@lumino/coreutils@^1.8.2": +"@lumino/coreutils@^1.11.0", "@lumino/coreutils@^1.11.1", "@lumino/coreutils@^1.12.0", "@lumino/coreutils@^1.12.1", "@lumino/coreutils@^1.5.3", "@lumino/coreutils@^1.8.2": version "1.12.1" resolved "https://registry.yarnpkg.com/@lumino/coreutils/-/coreutils-1.12.1.tgz#79860c9937483ddf6cda87f6c2b9da8eb1a5d768" integrity sha512-JLu3nTHzJk9N8ohZ85u75YxemMrmDzJdNgZztfP7F7T7mxND3YVNCkJG35a6aJ7edu1sIgCjBxOvV+hv27iYvQ== -"@lumino/disposable@^1.10.0", "@lumino/disposable@^1.10.1", "@lumino/disposable@^1.10.2", "@lumino/disposable@^1.7.2": - version "1.10.2" - resolved "https://registry.yarnpkg.com/@lumino/disposable/-/disposable-1.10.2.tgz#8a7e74320f51a48419d92672fe8abcf8cec04818" - integrity sha512-jwt8bCw3OU65wJMOCJUZAfVVUdxZdEufRDrDkoG91aSW+/R/VBzt33AqZX81/B0KxddL6R3PdNWI+0fRJBaeYw== +"@lumino/disposable@^1.10.0", "@lumino/disposable@^1.10.1", "@lumino/disposable@^1.10.3", "@lumino/disposable@^1.7.2": + version "1.10.3" + resolved "https://registry.yarnpkg.com/@lumino/disposable/-/disposable-1.10.3.tgz#c9778204f997605b00dab342029d488196d4baef" + integrity sha512-a+LplaVGuubmM0KcgAK5NCcJxo0vuw020p3r5AaM/uvAtvLHM+po0wqD0Lcz633ERunf+bDdQ+8BcOhrQLPofQ== dependencies: "@lumino/algorithm" "^1.9.2" - "@lumino/signaling" "^1.10.2" + "@lumino/signaling" "^1.11.0" "@lumino/domutils@^1.5.2", "@lumino/domutils@^1.8.0", "@lumino/domutils@^1.8.1", "@lumino/domutils@^1.8.2": version "1.8.2" resolved "https://registry.yarnpkg.com/@lumino/domutils/-/domutils-1.8.2.tgz#d15cdbae12bea52852bbc13c4629360f9f05b7f5" integrity sha512-QIpMfkPJrs4GrWBuJf2Sn1fpyVPmvqUUAeD8xAQo8+4V5JAT0vUDLxZ9HijefMgNCi3+Bs8Z3lQwRCrz+cFP1A== -"@lumino/dragdrop@^1.10.2", "@lumino/dragdrop@^1.13.0", "@lumino/dragdrop@^1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@lumino/dragdrop/-/dragdrop-1.14.1.tgz#17fbd7de30b0c199fec9c19d50dfb58b11eed6e2" - integrity sha512-SeciSUHKBBkkMKqK0l20c7vwGQA7pu/jMFMBK75In2Oz0049qU0OyNk6ngpcKRSBC/VKsbTPBQGI673w7Bd/VQ== +"@lumino/dragdrop@^1.10.2", "@lumino/dragdrop@^1.13.0", "@lumino/dragdrop@^1.14.3": + version "1.14.3" + resolved "https://registry.yarnpkg.com/@lumino/dragdrop/-/dragdrop-1.14.3.tgz#5621d97bcb90ae18b053f56d9c448ccef272d575" + integrity sha512-e3/lnc7bSqtdbDyamx+yeLuAECY1XGcczh8Wu66p6nkkohiajLqeNXicvWQd5G+T2xGce6QFkUnqWUcO5KNHOw== dependencies: "@lumino/coreutils" "^1.12.1" - "@lumino/disposable" "^1.10.2" + "@lumino/disposable" "^1.10.3" "@lumino/keyboard@^1.8.2": version "1.8.2" resolved "https://registry.yarnpkg.com/@lumino/keyboard/-/keyboard-1.8.2.tgz#714dbe671f0718f516d1ec23188b31a9ccd82fb2" integrity sha512-Dy+XqQ1wXbcnuYtjys5A0pAqf4SpAFl9NY6owyIhXAo0Va7w3LYp3jgiP1xAaBAwMuUppiUAfrbjrysZuZ625g== -"@lumino/messaging@^1.10.0", "@lumino/messaging@^1.10.1", "@lumino/messaging@^1.10.2", "@lumino/messaging@^1.7.2": - version "1.10.2" - resolved "https://registry.yarnpkg.com/@lumino/messaging/-/messaging-1.10.2.tgz#5faaf1bf9597437971bd9f71cafda242d2244c96" - integrity sha512-mVC3E5sptkU8g8GLNGiu4f1iY15QjU6R8RP9rJD6X8i2UAnT7z8KT+9rB3m7l8UqH1Pw5DZo8IJznrp6J/Dvmw== +"@lumino/messaging@^1.10.0", "@lumino/messaging@^1.10.1", "@lumino/messaging@^1.10.3", "@lumino/messaging@^1.7.2": + version "1.10.3" + resolved "https://registry.yarnpkg.com/@lumino/messaging/-/messaging-1.10.3.tgz#b6227bdfc178a8542571625ecb68063691b6af3c" + integrity sha512-F/KOwMCdqvdEG8CYAJcBSadzp6aI7a47Fr60zAKGqZATSRRRV41q53iXU7HjFPqQqQIvdn9Z7J32rBEAyQAzww== dependencies: "@lumino/algorithm" "^1.9.2" - "@lumino/collections" "^1.9.2" + "@lumino/collections" "^1.9.3" "@lumino/polling@^1.9.0": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@lumino/polling/-/polling-1.11.1.tgz#23c7674f66b194442272e86cd7718ea5c0f89230" - integrity sha512-SS60bhdUfwUAIPk0fc39bhBA0MjQ3Zqt/yBi6Jwzjkpm70y50J0GBW5/Ia6FZIQ2ht8cAQXuLCVAqYgQTCVuGw== + version "1.11.3" + resolved "https://registry.yarnpkg.com/@lumino/polling/-/polling-1.11.3.tgz#0b0b9a30b7077834d41df08fb2387260c95cd6e5" + integrity sha512-NPda40R/PFwzufuhfEx41g/L3I1K8TEM75QbooL22U+bFRBY9bChOLh+xKXyT2yO30SRLg7F7jaWcwZ01hCVwQ== dependencies: "@lumino/coreutils" "^1.12.1" - "@lumino/disposable" "^1.10.2" - "@lumino/signaling" "^1.10.2" + "@lumino/disposable" "^1.10.3" + "@lumino/signaling" "^1.11.0" "@lumino/properties@^1.5.2", "@lumino/properties@^1.8.0", "@lumino/properties@^1.8.1", "@lumino/properties@^1.8.2": version "1.8.2" resolved "https://registry.yarnpkg.com/@lumino/properties/-/properties-1.8.2.tgz#91131f2ca91a902faa138771eb63341db78fc0fd" integrity sha512-EkjI9Cw8R0U+xC9HxdFSu7X1tz1H1vKu20cGvJ2gU+CXlMB1DvoYJCYxCThByHZ+kURTAap4SE5x8HvKwNPbig== -"@lumino/signaling@^1.10.0", "@lumino/signaling@^1.10.1", "@lumino/signaling@^1.10.2", "@lumino/signaling@^1.4.3", "@lumino/signaling@^1.7.2": - version "1.10.2" - resolved "https://registry.yarnpkg.com/@lumino/signaling/-/signaling-1.10.2.tgz#da30a84b8820f2b29e0c176450059711913392d9" - integrity sha512-LvnLRb2ngOZbRtFHRcKkMdPSXm0bzfVv/5mbx/hpT1DWHihMtBpGQ+bIfFvnARmFJoI11Wt+DMX77MWPw6tpig== +"@lumino/signaling@^1.10.0", "@lumino/signaling@^1.10.1", "@lumino/signaling@^1.11.0", "@lumino/signaling@^1.4.3", "@lumino/signaling@^1.7.2": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@lumino/signaling/-/signaling-1.11.0.tgz#b61071875a69a02e7b14b779657ebdb099aac676" + integrity sha512-c4mfkmwr9RDh/cUF7BFoPj8KdSsmJRfGLt0e2ez4sgnbSX2afeMNQBIi/gKsD4mMmhI5bXa17tVDYQn6ICBXAw== dependencies: "@lumino/algorithm" "^1.9.2" + "@lumino/properties" "^1.8.2" -"@lumino/virtualdom@^1.11.2", "@lumino/virtualdom@^1.14.0", "@lumino/virtualdom@^1.14.2": - version "1.14.2" - resolved "https://registry.yarnpkg.com/@lumino/virtualdom/-/virtualdom-1.14.2.tgz#bee4fd3cf78c1aa003d9c208f6825969b4321573" - integrity sha512-iF20v6s4gP/hAH4VjmBtv2dexr18W4vL/Y5Rx4+U3kS/ZIFU7987NsM+0Yr6W9kdBQ1w6+pJjRBS9sWYnohdoQ== +"@lumino/virtualdom@^1.11.2", "@lumino/virtualdom@^1.14.0", "@lumino/virtualdom@^1.14.3": + version "1.14.3" + resolved "https://registry.yarnpkg.com/@lumino/virtualdom/-/virtualdom-1.14.3.tgz#e490c36ff506d877cf45771d6968e3e26a8919fd" + integrity sha512-5joUC1yuxeXbpfbSBm/OR8Mu9HoTo6PDX0RKqzlJ9o97iml7zayFN/ynzcxScKGQAo9iaXOY8uVIvGUT8FnsGw== dependencies: "@lumino/algorithm" "^1.9.2" -"@lumino/widgets@^1.26.2", "@lumino/widgets@^1.30.0", "@lumino/widgets@^1.33.0", "@lumino/widgets@^1.34.0": - version "1.34.0" - resolved "https://registry.yarnpkg.com/@lumino/widgets/-/widgets-1.34.0.tgz#0cc9ae568b7c129247e240d9b277ead324d4352f" - integrity sha512-HvvZ/UL1mcbvZ2IZrIA5p+YVSjTzQYrkXwPkFDPs6TgSgj5VmBm8Y13B7gS+/p9634OR5WNiWVO3KNALVHRXcw== +"@lumino/widgets@^1.26.2", "@lumino/widgets@^1.30.0", "@lumino/widgets@^1.33.0", "@lumino/widgets@^1.35.0": + version "1.35.0" + resolved "https://registry.yarnpkg.com/@lumino/widgets/-/widgets-1.35.0.tgz#1d6cf28195996635a8256e2d28edd4fe5dde5f4e" + integrity sha512-AFwCCt/4g6+3YwnrxRqjLusuLUidnldkQ+Dims3ZSm8keRtyjhr6ltnhj4KPZ5Nexxb0jmzWYcHHTceYTgU10w== dependencies: "@lumino/algorithm" "^1.9.2" - "@lumino/commands" "^1.20.1" + "@lumino/commands" "^1.21.0" "@lumino/coreutils" "^1.12.1" - "@lumino/disposable" "^1.10.2" + "@lumino/disposable" "^1.10.3" "@lumino/domutils" "^1.8.2" - "@lumino/dragdrop" "^1.14.1" + "@lumino/dragdrop" "^1.14.3" "@lumino/keyboard" "^1.8.2" - "@lumino/messaging" "^1.10.2" + "@lumino/messaging" "^1.10.3" "@lumino/properties" "^1.8.2" - "@lumino/signaling" "^1.10.2" - "@lumino/virtualdom" "^1.14.2" + "@lumino/signaling" "^1.11.0" + "@lumino/virtualdom" "^1.14.3" "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -3489,9 +3289,9 @@ integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== "@sinonjs/commons@^1.7.0": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" - integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== + version "1.8.5" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.5.tgz#e280c94c95f206dcfd5aca00a43f2156b758c764" + integrity sha512-rTpCA0wG1wUxglBSFdMMY0oTrKYvgf4fNgv/sXbfCVAdf+FnPBdKJR/7XbpTCwbCrvCbdPYnlWaUUYz4V2fPDA== dependencies: type-detect "4.0.8" @@ -3515,9 +3315,9 @@ integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": - version "7.1.19" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" - integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== + version "7.1.20" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.20.tgz#e168cdd612c92a2d335029ed62ac94c95b362359" + integrity sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -3541,9 +3341,9 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.18.1" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.1.tgz#ce5e2c8c272b99b7a9fd69fa39f0b4cd85028bd9" - integrity sha512-FSdLaZh2UxaMuLp9lixWaHq/golWTRWOnRsAXzDTDSDOQLuZb1nsdCt6pJSPWSEQt2eFZ2YVk3oYhn+1kLMeMA== + version "7.18.2" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.2.tgz#235bf339d17185bdec25e024ca19cce257cc7309" + integrity sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg== dependencies: "@babel/types" "^7.3.0" @@ -3574,9 +3374,9 @@ "@types/estree" "*" "@types/eslint@*": - version "8.4.6" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.6.tgz#7976f054c1bccfcf514bff0564c0c41df5c08207" - integrity sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g== + version "8.4.10" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.10.tgz#19731b9685c19ed1552da7052b6f668ed7eb64bb" + integrity sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -3638,9 +3438,9 @@ integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== "@types/lodash@^4.14.134", "@types/lodash@^4.14.178": - version "4.14.185" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.185.tgz#c9843f5a40703a8f5edfd53358a58ae729816908" - integrity sha512-evMDG1bC4rgQg4ku9tKpuMh5iBNEwNa3tf9zRHdP1qlv+1WUg44xat4IxCE14gIpZRGUUWAx2VhItCZc25NfMA== + version "4.14.188" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.188.tgz#e4990c4c81f7c9b00c5ff8eae389c10f27980da5" + integrity sha512-zmEmF5OIM3rb7SbLCFYoQhO4dGt2FRM9AMkxvA3LaADOF1n8in/zGJlWji9fmafLoNyz+FoL6FE0SLtGIArD7w== "@types/minimatch@*": version "5.1.2" @@ -3657,15 +3457,10 @@ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== -"@types/node@*": - version "18.7.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.18.tgz#633184f55c322e4fb08612307c274ee6d5ed3154" - integrity sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg== - -"@types/node@^18.8.3": - version "18.8.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.3.tgz#ce750ab4017effa51aed6a7230651778d54e327c" - integrity sha512-0os9vz6BpGwxGe9LOhgP/ncvYN5Tx1fNcd2TM3rD/aCGBkysb+ZWpXEocG24h6ZzOi13+VB8HndAQFezsSOw1w== +"@types/node@*", "@types/node@^18.8.3": + version "18.11.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4" + integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -3678,9 +3473,9 @@ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/prettier@^2.0.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.0.tgz#ea03e9f0376a4446f44797ca19d9c46c36e352dc" - integrity sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A== + version "2.7.1" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.1.tgz#dfd20e2dc35f027cdd6c1908e80a5ddc7499670e" + integrity sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow== "@types/prop-types@*", "@types/prop-types@^15.7.4": version "15.7.5" @@ -3688,16 +3483,16 @@ integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== "@types/react-dom@^17.0.0": - version "17.0.17" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.17.tgz#2e3743277a793a96a99f1bf87614598289da68a1" - integrity sha512-VjnqEmqGnasQKV0CWLevqMTXBYG9GbwuE6x3VetERLh0cq2LTptFE73MrQi2S7GkKXCf2GgwItB/melLnxfnsg== + version "17.0.18" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.18.tgz#8f7af38f5d9b42f79162eea7492e5a1caff70dc2" + integrity sha512-rLVtIfbwyur2iFKykP2w0pl/1unw26b5td16d5xMgp7/yjTHomkyxPYChFoCr/FtEX1lN9wY6lFj1qvKdS5kDw== dependencies: "@types/react" "^17" "@types/react@^17", "@types/react@^17.0.0": - version "17.0.50" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.50.tgz#39abb4f7098f546cfcd6b51207c90c4295ee81fc" - integrity sha512-ZCBHzpDb5skMnc1zFXAXnL3l1FAdi+xZvwxK+PkglMmBrwjpp9nKaWuEvrGnSifCJmBFGxZOOFuwC6KH/s0NuA== + version "17.0.52" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.52.tgz#10d8b907b5c563ac014a541f289ae8eaa9bf2e9b" + integrity sha512-vwk8QqVODi0VaZZpDXQCmEmiOuyjEFPY7Ttaw5vjM112LOq37yz1CDJGrRJwA1fYEq4Iitd5rnjd1yWAc/bT+A== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -3862,10 +3657,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.28": - version "6.0.0-6-next.28" - resolved "https://registry.yarnpkg.com/@verdaccio/ui-theme/-/ui-theme-6.0.0-6-next.28.tgz#bf8ff0e90f3d292741440c7e6ab6744b97d96a98" - integrity sha512-1sJ28aVGMiRJrSz0e8f4t+IUgt/cyYmuDLhogXHOEjEIIEcfMNyQ5bVYqq03wLVoKWEh5D6gHo1hQnVKQl1L5g== +"@verdaccio/ui-theme@6.0.0-6-next.48": + version "6.0.0-6-next.48" + resolved "https://registry.yarnpkg.com/@verdaccio/ui-theme/-/ui-theme-6.0.0-6-next.48.tgz#23bbc8037bf9e1b27600f5160a0ff716982db48b" + integrity sha512-1jls+cpfEXqXc1ZzqLGGNs6YCyG6B6QwDCezEkSvgKm+9A49FnSJ2n2dNIGcQYOszwHmd8EvwN98OEIx3Bbtrw== "@webassemblyjs/ast@1.11.1": version "1.11.1" @@ -4102,9 +3897,9 @@ acorn@^7.1.1, acorn@^7.4.0: integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== acorn@^8.0.4, acorn@^8.2.4, acorn@^8.5.0, acorn@^8.7.1: - version "8.8.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" - integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== + version "8.8.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" + integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== add-stream@^1.0.0: version "1.0.0" @@ -4288,14 +4083,14 @@ array-ify@^1.0.0: integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== array-includes@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" - integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== + version "3.1.6" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" + integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== dependencies: call-bind "^1.0.2" define-properties "^1.1.4" - es-abstract "^1.19.5" - get-intrinsic "^1.1.1" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" is-string "^1.0.7" array-union@^2.1.0: @@ -4309,23 +4104,23 @@ array-unique@^0.3.2: integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== array.prototype.flatmap@^1.3.0: - 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== + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" + integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" es-shim-unscopables "^1.0.0" -array.prototype.reduce@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz#8167e80089f78bff70a99e20bd4201d4663b0a6f" - integrity sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw== +array.prototype.reduce@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz#6b20b0daa9d9734dd6bc7ea66b5bbce395471eac" + integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" es-array-method-boxes-properly "^1.0.0" is-string "^1.0.7" @@ -4376,10 +4171,12 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async@3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== +async-mutex@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.3.2.tgz#1485eda5bda1b0ec7c8df1ac2e815757ad1831df" + integrity sha512-HuTK7E7MT7jZEh1P9GtRW9+aTWiDWWi9InbZ5hjxrnRa39KS4BW04+xLBhYNS2aXhHUIKZSw3gj4Pn1pj+qGAA== + dependencies: + tslib "^2.3.1" async@3.2.4: version "3.2.4" @@ -4431,22 +4228,15 @@ babel-jest@^26.6.3: slash "^3.0.0" babel-loader@^8.0.5: - version "8.2.5" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" - integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ== + version "8.3.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" + integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== dependencies: find-cache-dir "^3.3.1" loader-utils "^2.0.0" make-dir "^3.1.0" schema-utils "^2.6.5" -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - babel-plugin-istanbul@^6.0.0: version "6.1.1" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" @@ -4566,9 +4356,9 @@ bcryptjs@2.4.3: integrity sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ== before-after-hook@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" - integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== + version "2.2.3" + resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" + integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== big.js@^5.2.2: version "5.2.2" @@ -4820,9 +4610,9 @@ camelcase@^6.0.0, camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001400: - version "1.0.30001409" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001409.tgz#6135da9dcab34cd9761d9cdb12a68e6740c5e96e" - integrity sha512-V0mnJ5dwarmhYv8/MzhJ//aW68UpvnQBXv8lJ2QUsvn2pHcmAuNtu8hQEDz37XnA1iE+lRR9CIfGWWpgJ5QedQ== + version "1.0.30001431" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz#e7c59bd1bc518fae03a4656be442ce6c4887a795" + integrity sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ== capture-exit@^2.0.0: version "2.0.0" @@ -5296,11 +5086,9 @@ conventional-recommended-bump@^6.1.0: q "^1.5.1" convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== cookie-signature@1.0.6: version "1.0.6" @@ -5326,16 +5114,16 @@ copy-descriptor@^0.1.0: integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== core-js-compat@^3.25.1: - version "3.25.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.25.2.tgz#7875573586809909c69e03ef310810c1969ee138" - integrity sha512-TxfyECD4smdn3/CjWxczVtJqVLEEC2up7/82t7vC0AzNogr+4nQ8vyF7abxAuTXWvjTClSbvGhU0RgqA4ToQaQ== + version "3.26.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.26.0.tgz#94e2cf8ba3e63800c4956ea298a6473bc9d62b44" + integrity sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A== dependencies: browserslist "^4.21.4" core-js-pure@^3.6.5: - version "3.25.2" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.25.2.tgz#44a4fd873bdd4fecf6ca11512bcefedbe87e744a" - integrity sha512-ItD7YpW1cUB4jaqFLZXe1AXkyqIxz6GqPnsDV4uF4hVcWh/WAGIqSqw5p0/WdsILM0Xht9s3Koyw05R3K6RtiA== + version "3.26.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.26.0.tgz#7ad8a5dd7d910756f3124374b50026e23265ca9a" + integrity sha512-LiN6fylpVBVwT8twhhluD9TzXmZQQsr2I2eIKtWNbZI1XMfBT7CV18itaN6RA7EtQd/SDdRx/wzvAShX2HvhQA== core-util-is@1.0.2: version "1.0.2" @@ -5556,9 +5344,9 @@ debuglog@^1.0.1: integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw== decamelize-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" - integrity sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg== + version "1.1.1" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" + integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== dependencies: decamelize "^1.1.0" map-obj "^1.0.0" @@ -5569,9 +5357,9 @@ decamelize@^1.1.0, decamelize@^1.2.0: integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== decimal.js@^10.2.1: - version "10.4.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.1.tgz#be75eeac4a2281aace80c1a8753587c27ef053e7" - integrity sha512-F29o+vci4DodHYT9UrR5IEbfBw9pE5eSapIJdTqXK5+6hq+t8VRxwQyKlW2i+KDKFkkJQRvFyI/QXD83h8LyQw== + version "10.4.2" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.2.tgz#0341651d1d997d86065a2ce3a441fbd0d8e8b98e" + integrity sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA== decode-uri-component@^0.2.0: version "0.2.0" @@ -5618,9 +5406,9 @@ deepmerge@^4.2.2: integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== dependencies: clone "^1.0.2" @@ -5860,9 +5648,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.251: - version "1.4.257" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.257.tgz#895dc73c6bb58d1235dc80879ecbca0bcba96e2c" - integrity sha512-C65sIwHqNnPC2ADMfse/jWTtmhZMII+x6ADI9gENzrOiI7BpxmfKFE84WkIEl5wEg+7+SfIkwChDlsd1Erju2A== + version "1.4.284" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" + integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== emittery@^0.7.1: version "0.7.2" @@ -5957,22 +5745,22 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.1: - version "1.20.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.2.tgz#8495a07bc56d342a3b8ea3ab01bd986700c2ccb3" - integrity sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ== +es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.20.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.4.tgz#1d103f9f8d78d4cf0713edcd6d0ed1a46eed5861" + integrity sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA== dependencies: call-bind "^1.0.2" es-to-primitive "^1.2.1" function-bind "^1.1.1" function.prototype.name "^1.1.5" - get-intrinsic "^1.1.2" + get-intrinsic "^1.1.3" get-symbol-description "^1.0.0" has "^1.0.3" has-property-descriptors "^1.0.0" has-symbols "^1.0.3" internal-slot "^1.0.3" - is-callable "^1.2.4" + is-callable "^1.2.7" is-negative-zero "^2.0.2" is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" @@ -5982,6 +5770,7 @@ es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19 object-keys "^1.1.1" object.assign "^4.1.4" regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" string.prototype.trimend "^1.0.5" string.prototype.trimstart "^1.0.5" unbox-primitive "^1.0.2" @@ -6128,9 +5917,9 @@ eslint-plugin-prettier@^3.1.4: prettier-linter-helpers "^1.0.0" eslint-plugin-react@^7.21.5: - version "7.31.8" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.8.tgz#3a4f80c10be1bcbc8197be9e8b641b2a3ef219bf" - integrity sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw== + version "7.31.10" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz#6782c2c7fe91c09e715d536067644bbb9491419a" + integrity sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA== dependencies: array-includes "^3.1.5" array.prototype.flatmap "^1.3.0" @@ -6793,7 +6582,7 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.2: +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== @@ -7341,6 +7130,11 @@ ieee754@^1.1.13: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== +ignore-loader@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ignore-loader/-/ignore-loader-0.1.2.tgz#d81f240376d0ba4f0d778972c3ad25874117a463" + integrity sha512-yOJQEKrNwoYqrWLS4DcnzM7SEQhRKis5mB+LdKKh4cPmGYlLPR0ozRzHV5jmEk2IxptqJNQA5Cc0gw8Fj12bXA== + ignore-walk@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" @@ -7533,10 +7327,10 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.4, is-callable@^1.2.4: - version "1.2.6" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.6.tgz#fd6170b0b8c7e2cc73de342ef8284a2202023c44" - integrity sha512-krO72EO2NptOGAX2KYyqbP9vYMlNAXdB53rq6f8LXY6RY7JdSR/3BD6wLUlPHSAesmY9vstNrjvqGaCiRK/91Q== +is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-ci@^2.0.0: version "2.0.0" @@ -7546,9 +7340,9 @@ is-ci@^2.0.0: ci-info "^2.0.0" is-core-module@^2.5.0, is-core-module@^2.9.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" - integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== dependencies: has "^1.0.3" @@ -7848,9 +7642,9 @@ istanbul-lib-instrument@^4.0.3: semver "^6.3.0" istanbul-lib-instrument@^5.0.4: - 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== + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: "@babel/core" "^7.12.3" "@babel/parser" "^7.14.7" @@ -8366,6 +8160,11 @@ json-buffer@3.0.0: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== +json-loader@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" + integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w== + json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -8422,7 +8221,7 @@ json-to-html@~0.1.2: resolved "https://registry.yarnpkg.com/json-to-html/-/json-to-html-0.1.2.tgz#7a095ae4a34b33534aad0970ca4b7417b2c11ee3" integrity sha512-gwezGNdnxPnp+7m5aVFq080KGjURyLqLAMmoRlkfnapQYluxQX18Hu+MOPYOtPaipYSB1bawQem5cmvRo/aAMA== -json5@2.x, json5@^2.1.1, json5@^2.1.2, json5@^2.2.1: +json5@2.x, json5@^2.1.1, json5@^2.1.2, json5@^2.2.0, json5@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== @@ -8680,9 +8479,9 @@ levn@~0.3.0: type-check "~0.3.2" lib0@^0.2.31, lib0@^0.2.42, lib0@^0.2.49, lib0@^0.2.52: - version "0.2.52" - resolved "https://registry.yarnpkg.com/lib0/-/lib0-0.2.52.tgz#f07c975673ab3273e676712860d941f996e5fe79" - integrity sha512-CjxlM7UgICfN6b2OPALBXchIBiNk6jE+1g7JP8ha+dh1xKRDSYpH0WQl1+rMqCju49xUnwPG34v4CR5/rPOZhg== + version "0.2.53" + resolved "https://registry.yarnpkg.com/lib0/-/lib0-0.2.53.tgz#ee674571bc0a597bc06a03767908049fedab34fc" + integrity sha512-IT8j61GOFP23z9QYhBCHENqp4L7kCCtFXiCAtR3Is/QGIsq4FJv+ILoNgT+88NzQYI+qeZaDGqqVmrF/G0dYRw== dependencies: isomorphic.js "^0.2.4" @@ -8797,9 +8596,9 @@ loader-utils@^1.0.0, loader-utils@^1.1.0: json5 "^1.0.1" loader-utils@^2.0.0, loader-utils@~2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" - integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== + version "2.0.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.3.tgz#d4b15b8504c63d1fc3f2ade52d41bc8459d6ede1" + integrity sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" @@ -9131,7 +8930,7 @@ marked@4.0.18: resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.18.tgz#cd0ac54b2e5610cfb90e8fd46ccaa8292c9ed569" integrity sha512-wbLDJ7Zh0sqA0Vdg6aqlbT+yPxqLblpAZh1mK2+AO2twQkPywvvqQNfEPVwSSRjZ7dZcdeVBIAgiO7MMp3Dszw== -marked@4.1.0, marked@^4.0.17: +marked@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/marked/-/marked-4.1.0.tgz#3fc6e7485f21c1ca5d6ec4a39de820e146954796" integrity sha512-+Z6KDjSPa6/723PQYyc1axYZpYYpDnECDaU6hkaf5gqBieBkMKYReL5hteF2QizhlMbgbo8umXl/clZ67+GlsA== @@ -9141,6 +8940,11 @@ marked@^0.3.9: resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790" integrity sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg== +marked@^4.0.17: + version "4.2.2" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.2.tgz#1d2075ad6cdfe42e651ac221c32d949a26c0672a" + integrity sha512-JjBTFTAvuTgANXx82a5vzK9JLSMoV6V3LBVn4Uhdso6t7vXrGx7g1Cd2r6NYSsxrYbQGFCMqBDhFHyK5q2UvcQ== + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -9442,9 +9246,9 @@ modify-values@^1.0.0: integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== moment@^2.24.0: - version "2.29.3" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.3.tgz#edd47411c322413999f7a5940d526de183c031f3" - integrity sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw== + version "2.29.4" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== mrmime@^1.0.0: version "1.0.1" @@ -9880,7 +9684,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.0, object.assign@^4.1.3, object.assign@^4.1.4: +object.assign@^4.1.3, object.assign@^4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== @@ -9891,40 +9695,40 @@ object.assign@^4.1.0, object.assign@^4.1.3, object.assign@^4.1.4: object-keys "^1.1.1" object.entries@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" - integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== + version "1.1.6" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" + integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" object.fromentries@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" - integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== + version "2.0.6" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" + integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" object.getownpropertydescriptors@^2.0.3: - version "2.1.4" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz#7965e6437a57278b587383831a9b829455a4bc37" - integrity sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ== + version "2.1.5" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz#db5a9002489b64eef903df81d6623c07e5b4b4d3" + integrity sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw== dependencies: - array.prototype.reduce "^1.0.4" + array.prototype.reduce "^1.0.5" call-bind "^1.0.2" define-properties "^1.1.4" - es-abstract "^1.20.1" + es-abstract "^1.20.4" object.hasown@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" - integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" + integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== dependencies: define-properties "^1.1.4" - es-abstract "^1.19.5" + es-abstract "^1.20.4" object.pick@^1.3.0: version "1.3.0" @@ -9934,13 +9738,13 @@ object.pick@^1.3.0: isobject "^3.0.1" object.values@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + version "1.1.6" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" + integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" on-finished@2.4.1: version "2.4.1" @@ -10427,9 +10231,9 @@ postcss-value-parser@^4.1.0: integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== postcss@^8.2.15, postcss@^8.2.4, postcss@^8.3.11: - version "8.4.16" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.16.tgz#33a1d675fac39941f5f445db0de4db2b6e01d43c" - integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ== + version "8.4.18" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.18.tgz#6d50046ea7d3d66a85e0e782074e7203bc7fbca2" + integrity sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA== dependencies: nanoid "^3.3.4" picocolors "^1.0.0" @@ -10969,10 +10773,10 @@ regenerate@^1.4.2: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@^0.13.4: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== +regenerator-runtime@^0.13.10: + version "0.13.10" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" + integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== regenerator-transform@^0.15.0: version "0.15.0" @@ -10989,7 +10793,7 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.3: 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== @@ -11269,9 +11073,9 @@ rxjs@^6.6.0: tslib "^1.9.0" rxjs@^7.5.1: - version "7.5.6" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.6.tgz#0446577557862afd6903517ce7cae79ecb9662bc" - integrity sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw== + version "7.5.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.7.tgz#2ec0d57fdc89ece220d2e702730ae8f1e49def39" + integrity sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA== dependencies: tslib "^2.1.0" @@ -11285,6 +11089,15 @@ safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, s resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -11313,9 +11126,9 @@ sane@^4.0.3: walker "~1.0.5" sanitize-html@^2.3: - version "2.7.2" - resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.7.2.tgz#54c5189af75e3237d996e4b9a5e3eaad12c7f7fc" - integrity sha512-DggSTe7MviO+K4YTCwprG6W1vsG+IIX67yp/QY55yQqKCJYSWzCA1rZbaXzkjoKeL9+jqwm56wD6srYLtUNivg== + version "2.7.3" + resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.7.3.tgz#166c868444ee4f9fd7352ac8c63fa86c343fc2bd" + integrity sha512-jMaHG29ak4miiJ8wgqA1849iInqORgNv7SLfSw9LtfOhEUQ1C0YHKH73R+hgyufBW9ZFeJrb057k9hjlfBCVlw== dependencies: deepmerge "^4.2.2" escape-string-regexp "^4.0.0" @@ -11388,13 +11201,20 @@ semver-compare@^1.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@7.3.7, 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.7: 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@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.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + 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" @@ -11495,9 +11315,9 @@ shebang-regex@^3.0.0: integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.6.1, shell-quote@^1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" - integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== + version "1.7.4" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.4.tgz#33fe15dee71ab2a81fcbd3a52106c5cfb9fb75d8" + integrity sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw== shellwords@^0.1.1: version "0.1.1" @@ -11628,9 +11448,9 @@ socks-proxy-agent@^6.0.0: socks "^2.6.2" socks@^2.3.3, socks@^2.6.2: - version "2.7.0" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.0.tgz#f9225acdb841e874dca25f870e9130990f3913d0" - integrity sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA== + version "2.7.1" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" + integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== dependencies: ip "^2.0.0" smart-buffer "^4.2.0" @@ -11878,45 +11698,45 @@ string-width@^1.0.1: strip-ansi "^6.0.1" string.prototype.matchall@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" - integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== + version "4.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" + integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" has-symbols "^1.0.3" internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.1" + regexp.prototype.flags "^1.4.3" side-channel "^1.0.4" string.prototype.padend@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz#997a6de12c92c7cb34dc8a201a6c53d9bd88a5f1" - integrity sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg== + version "3.1.4" + resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz#2c43bb3a89eb54b6750de5942c123d6c98dd65b6" + integrity sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" string.prototype.trimend@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" - integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== dependencies: call-bind "^1.0.2" define-properties "^1.1.4" - es-abstract "^1.19.5" + es-abstract "^1.20.4" string.prototype.trimstart@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" - integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== dependencies: call-bind "^1.0.2" define-properties "^1.1.4" - es-abstract "^1.19.5" + es-abstract "^1.20.4" string_decoder@^1.1.1: version "1.3.0" @@ -12072,9 +11892,9 @@ symbol-tree@^3.2.4: integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== table@^6.0.9: - version "6.8.0" - resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" - integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== + version "6.8.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" + integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== dependencies: ajv "^8.0.1" lodash.truncate "^4.4.2" @@ -12101,9 +11921,9 @@ tar@^4.4.12: yallist "^3.1.1" tar@^6.0.2, tar@^6.1.0: - version "6.1.11" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" - integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== + version "6.1.12" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.12.tgz#3b742fb05669b55671fb769ab67a7791ea1a62e6" + integrity sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" @@ -12163,9 +11983,9 @@ terser-webpack-plugin@^5.1.3: terser "^5.14.1" terser@^5.14.1, terser@^5.3.4: - version "5.15.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.15.0.tgz#e16967894eeba6e1091509ec83f0c60e179f2425" - integrity sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA== + version "5.15.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.15.1.tgz#8561af6e0fd6d839669c73b92bdd5777d870ed6c" + integrity sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw== dependencies: "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" @@ -12359,10 +12179,10 @@ tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== +tslib@^2.1.0, tslib@^2.3.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" + integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== tslib@~2.3.1: version "2.3.1" @@ -12394,9 +12214,9 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== typanion@^3.3.1: - version "3.12.0" - resolved "https://registry.yarnpkg.com/typanion/-/typanion-3.12.0.tgz#8352830e5cf26ebfc5832da265886c9fb3ebb323" - integrity sha512-o59ZobUBsG+2dHnGVI2shscqqzHdzCOixCU0t8YXLxM2Su42J2ha7hY9V5+6SIBjVsw6aLqrlYznCgQGJN4Kag== + version "3.12.1" + resolved "https://registry.yarnpkg.com/typanion/-/typanion-3.12.1.tgz#d33deb130aba23ef6f2a3c69e7fb28148dd9089a" + integrity sha512-3SJF/czpzqq6G3lprGFLa6ps12yb1uQ1EmitNnep2fDMNh1aO/Zbq9sWY+3lem0zYb2oHJnQWyabTGUZ+L1ScQ== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" @@ -12504,9 +12324,9 @@ uglify-js@3.4.x: source-map "~0.6.1" uglify-js@^3.1.4: - version "3.17.1" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.1.tgz#1258a2a488147a8266b3034499ce6959978ba7f4" - integrity sha512-+juFBsLLw7AqMaqJ0GFvlsGZwdQfI2ooKQB39PSBgMnMakcFosi9O8jCwE+2/2nMNcc0z63r9mwjoDG8zr+q0Q== + version "3.17.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== uid-number@0.0.6: version "0.0.6" @@ -12529,9 +12349,9 @@ unbox-primitive@^1.0.2: which-boxed-primitive "^1.0.2" underscore@>=1.8.3: - version "1.13.4" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.4.tgz#7886b46bbdf07f768e0052f1828e1dcab40c0dee" - integrity sha512-BQFnUDuAQ4Yf/cYY5LNrK9NCJFKriaRbD9uR1fTeXnBeoa97W0i41qkZfGO9pSo8I5KzjAcSY2XYtdf0oKd7KQ== + version "1.13.6" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" + integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" @@ -12619,9 +12439,9 @@ upath@^2.0.1: integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== update-browserslist-db@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz#2924d3927367a38d5c555413a7ce138fc95fcb18" - integrity sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg== + version "1.0.10" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== dependencies: escalade "^3.1.1" picocolors "^1.0.0" @@ -12798,15 +12618,15 @@ verdaccio-htpasswd@10.5.0: unix-crypt-td-js "1.1.4" verdaccio@^5.13.3: - version "5.15.3" - resolved "https://registry.yarnpkg.com/verdaccio/-/verdaccio-5.15.3.tgz#4953471c0130c8e88b3d5562b5c63b38b575ed3d" - integrity sha512-8oEtepXF1oksGVYahi2HS1Yx9u6HD/4ukBDNDfwISmlNp7HVKJL2+kjzmDJWam88BpDNxOBU/LFXWSsEAFKFCQ== + version "5.15.4" + resolved "https://registry.yarnpkg.com/verdaccio/-/verdaccio-5.15.4.tgz#23b2b97b33b14ca30a6fc18b1226a1f082f7e476" + integrity sha512-yYMqpEQCv/BfYW5K/Nq57dbx68ICP1GfK7RJ0A3SlhKgl6idT8x4cJyLjH7C4k1Tln3LIQk1/X6ZtSl7xhzwOg== dependencies: "@verdaccio/commons-api" "10.2.0" "@verdaccio/local-storage" "10.3.1" "@verdaccio/readme" "10.4.1" "@verdaccio/streams" "10.2.0" - "@verdaccio/ui-theme" "6.0.0-6-next.28" + "@verdaccio/ui-theme" "6.0.0-6-next.48" JSONStream "1.3.5" async "3.2.4" body-parser "1.20.0" @@ -12921,9 +12741,9 @@ webidl-conversions@^6.1.0: integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== webpack-bundle-analyzer@^4.4.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.6.1.tgz#bee2ee05f4ba4ed430e4831a319126bb4ed9f5a6" - integrity sha512-oKz9Oz9j3rUciLNfpGFjOb49/jEpXNmWdVH8Ls//zNcnLlQdTGXQQMsBbb/gR7Zl8WNLxVCq+0Hqbx3zv6twBw== + version "4.7.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.7.0.tgz#33c1c485a7fcae8627c547b5c3328b46de733c66" + integrity sha512-j9b8ynpJS4K+zfO5GGwsAcQX4ZHpWV+yRiHDiL+bE0XHJ8NiPYLTNVQdlFYWxtpg9lfAQNlwJg16J9AJtFSXRg== dependencies: acorn "^8.0.4" acorn-walk "^8.0.0" @@ -13313,9 +13133,9 @@ yargs@^16.2.0: yargs-parser "^20.2.2" yjs@^13.5.17: - version "13.5.41" - resolved "https://registry.yarnpkg.com/yjs/-/yjs-13.5.41.tgz#105041cd56bdef154704441c381d80723e072bbe" - integrity sha512-4eSTrrs8OeI0heXKKioRY4ag7V5Bk85Z4MeniUyown3o3y0G7G4JpAZWrZWfTp7pzw2b53GkAQWKqHsHi9j9JA== + version "13.5.42" + resolved "https://registry.yarnpkg.com/yjs/-/yjs-13.5.42.tgz#949f7d091ded6e2621a5798982a9631b79e1b62c" + integrity sha512-3aYBPeUSBUCs/vCOYolbyzhsQ6IDm1DeJgfhHVbW+6kq8YhWjkk2SUhYtBxd3lZPNsqmJGzYH9shKINhSVbEzw== dependencies: lib0 "^0.2.49" From f2a2fc9b179e982191212d81f60d486722c3f761 Mon Sep 17 00:00:00 2001 From: Duc Trung LE Date: Tue, 8 Nov 2022 15:29:54 +0100 Subject: [PATCH 03/10] Use plugins from voila --- packages/voila/index.js | 189 ------------------------------- packages/voila/src/index.ts | 5 +- packages/voila/src/main.ts | 4 +- packages/voila/src/plugins.ts | 14 +-- packages/voilite/src/global.d.ts | 4 +- packages/voilite/src/index.ts | 3 +- packages/voilite/src/plugins.ts | 61 +--------- pyproject.toml | 3 - voila/voilite/exporter.py | 8 -- 9 files changed, 17 insertions(+), 274 deletions(-) delete mode 100644 packages/voila/index.js diff --git a/packages/voila/index.js b/packages/voila/index.js deleted file mode 100644 index 523103563..000000000 --- a/packages/voila/index.js +++ /dev/null @@ -1,189 +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. * - ****************************************************************************/ - -// 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') - ); - - 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/src/index.ts b/packages/voila/src/index.ts index c44c9300a..08dab445c 100644 --- a/packages/voila/src/index.ts +++ b/packages/voila/src/index.ts @@ -11,7 +11,4 @@ export * from './app'; export * from './manager'; export * from './shell'; export * from './output'; - -import * as plugins from './plugins'; - -export { plugins }; +export * from './plugins'; diff --git a/packages/voila/src/main.ts b/packages/voila/src/main.ts index 7c150594e..a3a2a9379 100644 --- a/packages/voila/src/main.ts +++ b/packages/voila/src/main.ts @@ -18,6 +18,7 @@ import { PageConfig, URLExt } from '@jupyterlab/coreutils'; import { VoilaApp } from './app'; import { VoilaShell } from './shell'; +import plugins from './plugins'; function loadScript(url: string): Promise { return new Promise((resolve, reject) => { @@ -68,9 +69,8 @@ async function main() { // This would also need the theme manager plugin and settings // require('@jupyterlab/theme-light-extension'), // require('@jupyterlab/theme-dark-extension'), - require('./plugins') + plugins ]; - const mimeExtensions = [require('@jupyterlab/json-extension')]; /** diff --git a/packages/voila/src/plugins.ts b/packages/voila/src/plugins.ts index 36dd016fc..8ab39cb07 100644 --- a/packages/voila/src/plugins.ts +++ b/packages/voila/src/plugins.ts @@ -34,7 +34,7 @@ import { WidgetManager as VoilaWidgetManager } from './manager'; /** * The default paths. */ -const paths: JupyterFrontEndPlugin = { +export const pathsPlugin: JupyterFrontEndPlugin = { id: '@voila-dashboards/voila:paths', activate: ( app: JupyterFrontEnd @@ -51,7 +51,7 @@ const paths: JupyterFrontEndPlugin = { * 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 = { +export const stopPollingPlugin: JupyterFrontEndPlugin = { id: '@voila-dashboards/voila:stop-polling', autoStart: true, activate: (app: JupyterFrontEnd): void => { @@ -69,7 +69,7 @@ const stopPolling: JupyterFrontEndPlugin = { /** * A simplified Translator */ -const translator: JupyterFrontEndPlugin = { +export const translatorPlugin: JupyterFrontEndPlugin = { id: '@voila-dashboards/voila:translator', activate: (app: JupyterFrontEnd): ITranslator => { const translationManager = new TranslationManager(); @@ -82,7 +82,7 @@ const translator: JupyterFrontEndPlugin = { /** * The Voila widgets manager plugin. */ -const widgetManager: JupyterFrontEndPlugin = { +export const widgetManager: JupyterFrontEndPlugin = { id: '@voila-dashboards/voila:widget-manager', autoStart: true, requires: [IRenderMimeRegistry], @@ -135,9 +135,9 @@ const widgetManager: JupyterFrontEndPlugin = { * Export the plugins as default. */ const plugins: JupyterFrontEndPlugin[] = [ - paths, - stopPolling, - translator, + pathsPlugin, + stopPollingPlugin, + translatorPlugin, widgetManager ]; diff --git a/packages/voilite/src/global.d.ts b/packages/voilite/src/global.d.ts index 8df0f7a33..114b86a94 100644 --- a/packages/voilite/src/global.d.ts +++ b/packages/voilite/src/global.d.ts @@ -9,9 +9,7 @@ interface ICellData { cell_type: string; cell_source: string; } -declare var cells: { - [key: number]: ICellData; -}; + declare function update_loading_text( cell_index: number, cell_count: number, diff --git a/packages/voilite/src/index.ts b/packages/voilite/src/index.ts index e38f85022..65e3200c2 100644 --- a/packages/voilite/src/index.ts +++ b/packages/voilite/src/index.ts @@ -203,7 +203,6 @@ async function main() { litePluginsToRegister.push(plugin); } }); - console.log('start server'); // create the in-browser JupyterLite Server const jupyterLiteServer = new JupyterLiteServer({ shell: null as never }); @@ -211,7 +210,7 @@ async function main() { jupyterLiteServer.registerPluginModules(litePluginsToRegister); // start the server await jupyterLiteServer.start(); - console.log('done server'); + const serviceManager = jupyterLiteServer.serviceManager; const app = new VoiliteApp({ serviceManager: serviceManager as any, diff --git a/packages/voilite/src/plugins.ts b/packages/voilite/src/plugins.ts index 73546021f..ef8f538e4 100644 --- a/packages/voilite/src/plugins.ts +++ b/packages/voilite/src/plugins.ts @@ -1,4 +1,3 @@ -import { PageConfig } from '@jupyterlab/coreutils'; /*************************************************************************** * Copyright (c) 2022, Voilà contributors * * Copyright (c) 2022, QuantStack * @@ -13,64 +12,15 @@ import { JupyterFrontEndPlugin } from '@jupyterlab/application'; import { IThemeManager } from '@jupyterlab/apputils'; -import { ITranslator, TranslationManager } from '@jupyterlab/translation'; import { PromiseDelegate } from '@lumino/coreutils'; -import { VoilaApp } from '@voila-dashboards/voila'; - +import { translatorPlugin, pathsPlugin } from '@voila-dashboards/voila'; +import { PageConfig } from '@jupyterlab/coreutils'; import { VoiliteWidgetManager } 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 -}; - export const managerPromise = new PromiseDelegate(); /** - * The Voila widgets manager plugin. + * The Voilite widgets manager plugin. */ const widgetManager = { id: '@voila-dashboards/voilite:widget-manager', @@ -113,9 +63,8 @@ const themePlugin: JupyterFrontEndPlugin = { * Export the plugins as default. */ const plugins: JupyterFrontEndPlugin[] = [ - paths, - stopPolling, - translator, + pathsPlugin, + translatorPlugin, widgetManager, themePlugin ]; diff --git a/pyproject.toml b/pyproject.toml index a0f7ebce8..de6ce0402 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -72,9 +72,6 @@ test = [ voila = "voila.app:main" voilite = "voila.voilite.app:main" -[project.entry-points."nbconvert.exporters"] -voilite_dashboard = "voilite.exporter:VoiliteExporter" - [project.urls] Homepage = "https://github.com/voila-dashboards/voila" diff --git a/voila/voilite/exporter.py b/voila/voilite/exporter.py index d339ea2e2..73dc9c015 100644 --- a/voila/voilite/exporter.py +++ b/voila/voilite/exporter.py @@ -49,14 +49,6 @@ def _template_paths(self, prune=True, root_dirs=None): ) return path - @property - def default_config(self): - config = super().default_config - config['NbConvertBase']['display_data_priority'] = [ - 'application/vnd.voilite.code+txt' - ] - return config - def from_notebook_node(self, nb, resources=None, **kwargs): # this replaces from_notebook_node, but calls template.generate instead of template.render # Mocking the highligh_code filter From 052202ce0ac828b11b73d5c0e6416f46c00db240 Mon Sep 17 00:00:00 2001 From: Duc Trung LE Date: Wed, 9 Nov 2022 13:29:56 +0100 Subject: [PATCH 04/10] Update build directory --- .gitignore | 2 +- packages/voilite/webpack.config.js | 3 +-- pyproject.toml | 2 +- voila/utils.py | 23 ++++++++--------- voila/voilite/app.py | 41 +++++++++++++++++++----------- voila/voilite/exporter.py | 8 ++---- 6 files changed, 42 insertions(+), 37 deletions(-) diff --git a/.gitignore b/.gitignore index 2f93d24e7..21db17f41 100644 --- a/.gitignore +++ b/.gitignore @@ -41,7 +41,7 @@ share/jupyter/voila/templates/reveal/static/materialcolors.css lib voila/labextension -voila/voilite/static/voila/**/* +voila/voilite/static/**/* tsconfig.tsbuildinfo diff --git a/packages/voilite/webpack.config.js b/packages/voilite/webpack.config.js index 9bba85406..ea92e1797 100644 --- a/packages/voilite/webpack.config.js +++ b/packages/voilite/webpack.config.js @@ -57,8 +57,7 @@ const distRoot = path.resolve( '..', 'voila', 'voilite', - 'static', - 'voila' + 'static' ); const topLevelBuild = path.resolve('build'); diff --git a/pyproject.toml b/pyproject.toml index de6ce0402..0d65845ce 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -107,7 +107,7 @@ dependencies = [ build-function = "hatch_jupyter_builder.npm_builder" ensured-targets = [ "voila/labextension/static/style.js", - "voila/voilite/static/voila/voilite.js", + "voila/voilite/static/voilite.js", "share/jupyter/voila/templates/classic/static/materialcolors.css", "share/jupyter/voila/templates/classic/static/labvariables.css", "share/jupyter/voila/templates/reveal/static/materialcolors.css", diff --git a/voila/utils.py b/voila/utils.py index 44ab59a1c..feed41daa 100644 --- a/voila/utils.py +++ b/voila/utils.py @@ -60,7 +60,7 @@ def get_server_root_dir(settings): home = os.path.expanduser('~') if root_dir.startswith(home + os.path.sep): # collapse $HOME to ~ - root_dir = '~' + root_dir[len(home) :] + root_dir = '~' + root_dir[len(home):] return root_dir @@ -77,21 +77,20 @@ async def _get_request_info(ws_url: str) -> Awaitable: 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"), + '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") + 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", + '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) + page_config.setdefault('mathjaxConfig', mathjax_config) + page_config.setdefault('fullMathjaxUrl', mathjax_url) labextensions_path = jupyter_path('labextensions') recursive_update( diff --git a/voila/voilite/app.py b/voila/voilite/app.py index 25dad9cb8..7738fb786 100644 --- a/voila/voilite/app.py +++ b/voila/voilite/app.py @@ -58,6 +58,12 @@ class Voilite(Application): 'base_url': 'Voilite.base_url', } + output_prefix = Unicode( + '_output', + config=True, + help=_('Path to the output directory'), + ) + @default('log_level') def _default_log_level(self): return logging.INFO @@ -94,16 +100,12 @@ def copy_static_files(self, page_config: Dict) -> None: lite_static_path = os.path.join( os.path.dirname(os.path.realpath(__file__)), 'static' ) - dest_static_path = os.path.join(os.getcwd(), 'voila') + dest_static_path = os.path.join(os.getcwd(), self.output_prefix) if os.path.isdir(dest_static_path): - shutil.rmtree(dest_static_path) + shutil.rmtree(dest_static_path, ignore_errors=False) copy_tree( - os.path.join(lite_static_path, 'voila'), - os.path.join(dest_static_path, 'static'), - ) - shutil.move( - os.path.join(dest_static_path, 'static', 'pypi'), - os.path.join(dest_static_path, 'build', 'pypi'), + os.path.join(lite_static_path), + os.path.join(dest_static_path, 'build'), ) shutil.copyfile( os.path.join(lite_static_path, 'services.js'), @@ -117,9 +119,7 @@ def copy_static_files(self, page_config: Dict) -> None: os.path.abspath(os.path.expanduser(p)) + os.sep for p in labextensions_path ) - dest_extension_path = os.path.join( - os.getcwd(), 'voila', 'labextensions' - ) + dest_extension_path = os.path.join(dest_static_path, 'labextensions') if os.path.isdir(dest_extension_path): shutil.rmtree(dest_extension_path) for extension in federated_extensions: @@ -135,7 +135,7 @@ def copy_static_files(self, page_config: Dict) -> None: all_themes = find_all_lab_theme() for theme in all_themes: theme_dst = os.path.join( - dest_static_path, 'static', 'themes', theme[0] + dest_static_path, 'build', 'themes', theme[0] ) copy_tree(theme[1], theme_dst) @@ -145,10 +145,16 @@ def start(self): page_config = get_page_config( base_url=self.base_url, settings={}, log=None ) + page_config['themesUrl'] = url_path_join('build', 'themes') + page_config['fullStaticUrl'] = url_path_join( + self.base_url, 'build' + ) + page_config['fullLabextensionsUrl'] = url_path_join( + self.base_url, 'labextensions' + ) page_config['settingsUrl'] = url_path_join( page_config['fullStaticUrl'], 'schemas' ) - page_config['themesUrl'] = url_path_join('static', 'themes') if self.voilite_configuration.theme == 'light': themeName = 'JupyterLab Light' @@ -161,7 +167,10 @@ def start(self): with open(self.notebook_path) as f: nb = nbformat.read(f, 4) src = [ - {'cell_source': cell['source'], 'cell_type': cell['cell_type']} + { + 'cell_source': cell['source'], + 'cell_type': cell['cell_type'], + } for cell in nb['cells'] ] page_config['notebookSrc'] = src @@ -173,7 +182,9 @@ def start(self): base_url=self.base_url, ) content, _ = voilite_converter.from_filename(self.notebook_path) - with open('index.html', 'w') as f: + with open( + os.path.join(self.output_prefix, 'index.html'), 'w' + ) as f: f.write(content) diff --git a/voila/voilite/exporter.py b/voila/voilite/exporter.py index 73dc9c015..facb2ef7a 100644 --- a/voila/voilite/exporter.py +++ b/voila/voilite/exporter.py @@ -66,7 +66,7 @@ def from_notebook_node(self, nb, resources=None, **kwargs): nb_copy, resources = super(TemplateExporter, self).from_notebook_node( nb, resources, **kwargs ) - + resources['base_url'] = self.base_url resources.setdefault('raw_mimetypes', self.raw_mimetypes) resources['global_content_filter'] = { 'include_code': not self.exclude_code_cell, @@ -107,10 +107,6 @@ def kernel_start(self, nb): return '' def cell_generator(self, nb, kernel_id): - # self.cwd = os.path.dirname(notebook_path) ?? - # nb, _ = ClearOutputPreprocessor().preprocess( - # nb, {'metadata': {'path': self.cwd}} - # ) nb, _ = ClearOutputPreprocessor().preprocess(nb, {}) for cell_idx, input_cell in enumerate(nb.cells): output = input_cell.copy() @@ -119,7 +115,7 @@ def cell_generator(self, nb, kernel_id): def _init_resources(self, resources): resources = super()._init_resources(resources) # We are using the theme manager of JupyterLab instead of including - # CSS file in the template. + # CSS file in the template. resources['include_css'] = lambda x: '' resources['include_lab_theme'] = lambda x: '' From 433a59e4c481997619ad99d1904c964ab0d3ab56 Mon Sep 17 00:00:00 2001 From: Duc Trung LE Date: Thu, 10 Nov 2022 18:03:01 +0100 Subject: [PATCH 05/10] Render tree page --- share/jupyter/voila/templates/lab/tree.html | 6 +- voila/treehandler.py | 1 + voila/voilite/app.py | 182 +++++++++++++++----- voila/voilite/voilite_tree_exporter.py | 129 ++++++++++++++ 4 files changed, 272 insertions(+), 46 deletions(-) create mode 100644 voila/voilite/voilite_tree_exporter.py diff --git a/share/jupyter/voila/templates/lab/tree.html b/share/jupyter/voila/templates/lab/tree.html index dc83bd500..9dcbb89e5 100644 --- a/share/jupyter/voila/templates/lab/tree.html +++ b/share/jupyter/voila/templates/lab/tree.html @@ -83,7 +83,11 @@ {% for content in contents.content %} {% if content.type in ['notebook', 'file'] %} -
  • {{content.name}}
  • + {% if frontend == 'voila' %} +
  • {{content.name}}
  • + {% elif frontend == 'voilite' %} +
  • {{content.name}}
  • + {% endif %} {% endif %} {% if content.type == 'directory' %}
  • {{content.name}}
  • diff --git a/voila/treehandler.py b/voila/treehandler.py index a8f99c1cd..2d84bbb02 100644 --- a/voila/treehandler.py +++ b/voila/treehandler.py @@ -70,6 +70,7 @@ def allowed_content(content): self.write(self.render_template( 'tree.html', + frontend='voila', page_title=page_title, notebook_path=path, breadcrumbs=breadcrumbs, diff --git a/voila/voilite/app.py b/voila/voilite/app.py index 7738fb786..d15e86113 100644 --- a/voila/voilite/app.py +++ b/voila/voilite/app.py @@ -1,18 +1,29 @@ +import gettext +import json import logging import os import shutil +from copy import deepcopy from distutils.dir_util import copy_tree +from pathlib import Path from typing import Dict +from typing import List as TypeList +import jinja2 import nbformat from jupyter_core.paths import jupyter_path +from jupyter_server.config_manager import recursive_update +from jupyter_server.services.contents.largefilemanager import LargeFileManager from jupyter_server.utils import url_path_join from traitlets import List, Unicode, default from traitlets.config.application import Application +from traitlets.config.loader import Config from ..configuration import VoilaConfiguration +from ..paths import ROOT, collect_static_paths, collect_template_paths from ..utils import find_all_lab_theme, get_page_config from .exporter import VoiliteExporter +from .voilite_tree_exporter import VoiliteTreeExporter def _(x): @@ -75,6 +86,45 @@ def _default_root_dir(self): else: return os.getcwd() + def setup_template_dirs(self): + if self.voilite_configuration.template: + template_name = self.voilite_configuration.template + self.template_paths = collect_template_paths( + ['voila', 'nbconvert'], template_name, prune=True + ) + self.static_paths = collect_static_paths( + ['voila', 'nbconvert'], template_name + ) + conf_paths = [ + os.path.join(d, 'conf.json') for d in self.template_paths + ] + for p in conf_paths: + # see if config file exists + if os.path.exists(p): + # load the template-related config + with open(p) as json_file: + conf = json.load(json_file) + # update the overall config with it, preserving CLI config priority + if 'traitlet_configuration' in conf: + recursive_update( + conf['traitlet_configuration'], + self.voilite_configuration.config.VoilaConfiguration, + ) + # pass merged config to overall Voilà config + self.voilite_configuration.config.VoilaConfiguration = Config( + conf['traitlet_configuration'] + ) + + self.jinja2_env = jinja2.Environment( + loader=jinja2.FileSystemLoader(self.template_paths), + extensions=['jinja2.ext.i18n'], + **{'autoescape': True}, + ) + nbui = gettext.translation( + 'nbui', localedir=os.path.join(ROOT, 'i18n'), fallback=True + ) + self.jinja2_env.install_gettext_translations(nbui, newstyle=False) + def initialize(self, argv=None): super().initialize(argv) if len(self.extra_args) == 1: @@ -94,8 +144,11 @@ def initialize(self, argv=None): 'provided more than 1 argument: %r' % self.extra_args ) self.voilite_configuration = VoilaConfiguration(parent=self) + self.setup_template_dirs() - def copy_static_files(self, page_config: Dict) -> None: + self.contents_manager = LargeFileManager(parent=self) + + def copy_static_files(self, federated_extensions: TypeList[str]) -> None: lite_static_path = os.path.join( os.path.dirname(os.path.realpath(__file__)), 'static' @@ -114,7 +167,6 @@ def copy_static_files(self, page_config: Dict) -> None: # Copy extension files labextensions_path = jupyter_path('labextensions') - federated_extensions = page_config.get('federated_extensions', []) roots = tuple( os.path.abspath(os.path.expanduser(p)) + os.sep for p in labextensions_path @@ -139,53 +191,93 @@ def copy_static_files(self, page_config: Dict) -> None: ) copy_tree(theme[1], theme_dst) - def start(self): + def convert_notebook( + self, + nb_path: str, + page_config: Dict, + output_prefix: str, + output_name: str = None, + ) -> None: + nb_name = output_name - if self.notebook_path: - page_config = get_page_config( - base_url=self.base_url, settings={}, log=None - ) - page_config['themesUrl'] = url_path_join('build', 'themes') - page_config['fullStaticUrl'] = url_path_join( - self.base_url, 'build' - ) - page_config['fullLabextensionsUrl'] = url_path_join( - self.base_url, 'labextensions' - ) - page_config['settingsUrl'] = url_path_join( - page_config['fullStaticUrl'], 'schemas' + nb_path = Path(nb_path) + if not nb_name: + nb_name = f'{nb_path.stem}.html' + + page_config_copy = deepcopy(page_config) + + with open(nb_path) as f: + nb = nbformat.read(f, 4) + src = [ + { + 'cell_source': cell['source'], + 'cell_type': cell['cell_type'], + } + for cell in nb['cells'] + ] + page_config_copy['notebookSrc'] = src + + voilite_exporter = VoiliteExporter( + voilite_config=self.voilite_configuration, + page_config=page_config_copy, + base_url=self.base_url, + ) + content, _ = voilite_exporter.from_filename(nb_path) + output_dir = os.path.join(output_prefix, nb_path.parent) + + if not os.path.exists(output_dir): + os.makedirs(output_dir, exist_ok=True) + with open(os.path.join(output_dir, nb_name), 'w') as f: + f.write(content) + + def convert_directory(self, page_config): + + tree_exporter = VoiliteTreeExporter( + jinja2_env=self.jinja2_env, + voilite_configuration=self.voilite_configuration, + contents_manager=self.contents_manager, + base_url=self.base_url, + ) + nb_paths = tree_exporter.from_contents() + for nb in nb_paths: + self.convert_notebook( + nb, + page_config, + os.path.join(self.output_prefix, 'voila', 'render'), ) - if self.voilite_configuration.theme == 'light': - themeName = 'JupyterLab Light' - elif self.voilite_configuration.theme == 'dark': - themeName = 'JupyterLab Dark' - else: - themeName = self.voilite_configuration.theme - page_config['labThemeName'] = themeName - - with open(self.notebook_path) as f: - nb = nbformat.read(f, 4) - src = [ - { - 'cell_source': cell['source'], - 'cell_type': cell['cell_type'], - } - for cell in nb['cells'] - ] - page_config['notebookSrc'] = src - - self.copy_static_files(page_config) - voilite_converter = VoiliteExporter( - voilite_config=self.voilite_configuration, - page_config=page_config, - base_url=self.base_url, + def start(self): + page_config = get_page_config( + base_url=self.base_url, settings={}, log=None + ) + page_config['themesUrl'] = url_path_join('build', 'themes') + page_config['fullStaticUrl'] = url_path_join(self.base_url, 'build') + page_config['fullLabextensionsUrl'] = url_path_join( + self.base_url, 'labextensions' + ) + page_config['settingsUrl'] = url_path_join( + page_config['fullStaticUrl'], 'schemas' + ) + + if self.voilite_configuration.theme == 'light': + themeName = 'JupyterLab Light' + elif self.voilite_configuration.theme == 'dark': + themeName = 'JupyterLab Dark' + else: + themeName = self.voilite_configuration.theme + page_config['labThemeName'] = themeName + federated_extensions = page_config.get('federated_extensions', []) + self.copy_static_files(federated_extensions) + + if self.notebook_path: + self.convert_notebook( + self.notebook_path, + page_config, + self.output_prefix, + 'index.html', ) - content, _ = voilite_converter.from_filename(self.notebook_path) - with open( - os.path.join(self.output_prefix, 'index.html'), 'w' - ) as f: - f.write(content) + else: + self.convert_directory(page_config) main = Voilite.launch_instance diff --git a/voila/voilite/voilite_tree_exporter.py b/voila/voilite/voilite_tree_exporter.py new file mode 100644 index 000000000..366e98703 --- /dev/null +++ b/voila/voilite/voilite_tree_exporter.py @@ -0,0 +1,129 @@ +import os +from typing import Dict, List, Tuple + +import jinja2 +from jupyter_server.services.contents.largefilemanager import LargeFileManager +from jupyter_server.utils import url_path_join, url_escape +from ..configuration import VoilaConfiguration + + +class VoiliteTreeExporter: + def __init__( + self, + jinja2_env: jinja2.Environment, + voilite_configuration: VoilaConfiguration, + contents_manager: LargeFileManager, + base_url: str, + output_prefix: str = '_output', + **kwargs, + ): + + self.jinja2_env = jinja2_env + self.base_url = base_url + self.contents_manager = contents_manager + self.theme = voilite_configuration.theme + self.template_name = voilite_configuration.template + self.allowed_extensions = list( + voilite_configuration.extension_language_mapping.keys() + ) + ['.ipynb'] + self.output_prefix = output_prefix + self.notebook_paths = [] + + def allowed_content(self, content: Dict) -> bool: + if content['type'] == 'notebook': + return True + if content['type'] == 'directory' and content['name'] != '_output': + return True + __, ext = os.path.splitext(content.get('path')) + return ext in self.allowed_extensions + + def from_contents(self, **kwargs) -> Tuple[str, List[str]]: + + self.resources = self.init_resources(**kwargs) + self.template = self.jinja2_env.get_template('tree.html') + + return self.write_contents() + + def generate_breadcrumbs(self, path: str) -> List: + breadcrumbs = [(url_path_join(self.base_url, 'voila/tree'), '')] + parts = path.split('/') + for i in range(len(parts)): + if parts[i]: + link = url_path_join( + self.base_url, + 'voila/tree', + url_escape(url_path_join(*parts[: i + 1])), + ) + breadcrumbs.append((link, parts[i])) + return breadcrumbs + + def generate_page_title(self, path: str) -> str: + parts = path.split('/') + if len(parts) > 3: # not too many parts + parts = parts[-2:] + page_title = url_path_join(*parts) + if page_title: + return page_title + '/' + else: + return 'Voilà Home' + + def write_contents(self, path='') -> Tuple[Dict, List[str]]: + cm = self.contents_manager + if cm.dir_exists(path=path): + if cm.is_hidden(path) and not cm.allow_hidden: + print('Refusing to serve hidden directory, via 404 Error') + return + + breadcrumbs = self.generate_breadcrumbs(path) + page_title = self.generate_page_title(path) + contents = cm.get(path) + + contents['content'] = sorted( + contents['content'], key=lambda i: i['name'] + ) + contents['content'] = list( + filter(self.allowed_content, contents['content']) + ) + + for file in contents['content']: + if file['type'] == 'notebook': + self.notebook_paths.append(file['path']) + file['path'] = file['path'].replace('.ipynb', '.html') + elif file['type'] == 'directory': + self.write_contents(file['path']) + + page_content = self.template.render( + contents=contents, + page_title=page_title, + breadcrumbs=breadcrumbs, + **self.resources + ) + + output_dir = os.path.join( + self.output_prefix, 'voila', 'tree', path + ) + if not os.path.exists(output_dir): + os.makedirs(output_dir, exist_ok=True) + with open(os.path.join(output_dir, 'index.html'), 'w') as f: + f.write(page_content) + + if path == '': + with open(os.path.join(self.output_prefix, 'index.html'), 'w') as f: + f.write(page_content) + + return self.notebook_paths + + def init_resources(self, **kwargs) -> Dict: + + resources = { + 'base_url': self.base_url, + 'frontend': 'voilite', + 'theme': self.theme, + 'include_css': lambda x: '', + 'include_js': lambda x: '', + 'include_url': lambda x: '', + 'include_lab_theme': lambda x: '', + **kwargs, + } + + return resources From 302a8584d30ab32d3a8829cc35e44fd6fe617521 Mon Sep 17 00:00:00 2001 From: Duc Trung LE Date: Thu, 10 Nov 2022 22:49:25 +0100 Subject: [PATCH 06/10] [WIP] Support lab theme in tree page --- packages/voilite/package.json | 1 + packages/voilite/src/index.ts | 75 +--------- packages/voilite/src/plugins.ts | 2 +- packages/voilite/src/tree.ts | 157 ++++++++++++++++++++ packages/voilite/src/treebootstrap.ts | 1 + packages/voilite/src/utils.ts | 69 +++++++++ packages/voilite/webpack.config.js | 11 +- share/jupyter/voila/templates/lab/tree.html | 53 ++++--- voila/voilite/app.py | 1 + voila/voilite/voilite_tree_exporter.py | 95 +++++++----- 10 files changed, 330 insertions(+), 135 deletions(-) create mode 100644 packages/voilite/src/tree.ts create mode 100644 packages/voilite/src/treebootstrap.ts create mode 100644 packages/voilite/src/utils.ts diff --git a/packages/voilite/package.json b/packages/voilite/package.json index eb44ee102..c4bcb9248 100644 --- a/packages/voilite/package.json +++ b/packages/voilite/package.json @@ -48,6 +48,7 @@ "@lumino/signaling": "^1.7.2", "@lumino/virtualdom": "^1.11.2", "@lumino/widgets": "^1.26.2", + "@voila-dashboards/voila":"^0.5.0-alpha.0", "react": "^17.0.1" }, "devDependencies": { diff --git a/packages/voilite/src/index.ts b/packages/voilite/src/index.ts index 65e3200c2..5a3e5bcc7 100644 --- a/packages/voilite/src/index.ts +++ b/packages/voilite/src/index.ts @@ -14,45 +14,7 @@ import { VoilaShell } from '@voila-dashboards/voila'; import { VoiliteApp } from './app'; import plugins from './plugins'; - -// 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 - -function loadScript(url: string) { - 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: string, scope: string) { - 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: string, module: any) { - 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; - } -} +import { loadComponent, createModule, activePlugins } from './utils'; const serverExtensions = [ // import('@jupyterlite/javascript-kernel-extension'), @@ -89,35 +51,6 @@ async function main() { require('@jupyterlab/json-extension') ]; - /** - * Iterate over active plugins in an extension. - * - * #### Notes - * This also populates the disabled - */ - function* activePlugins(extension: any) { - // Handle commonjs or es2015 modules - let exports; - if (Object.prototype.hasOwnProperty.call(extension, '__esModule')) { - exports = extension.default; - } else { - // CommonJS exports. - exports = extension; - } - - const plugins = Array.isArray(exports) ? exports : [exports]; - for (const 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') ); @@ -167,7 +100,7 @@ async function main() { ); federatedExtensions.forEach(p => { if (p.status === 'fulfilled') { - for (const plugin of activePlugins(p.value)) { + for (const plugin of activePlugins(p.value, disabled)) { mods.push(plugin); } } else { @@ -181,7 +114,7 @@ async function main() { ); federatedMimeExtensions.forEach(p => { if (p.status === 'fulfilled') { - for (const plugin of activePlugins(p.value)) { + for (const plugin of activePlugins(p.value, disabled)) { mimeExtensions.push(plugin); } } else { @@ -199,7 +132,7 @@ async function main() { const litePluginsToRegister: any[] = []; const baseServerExtensions = await Promise.all(serverExtensions); baseServerExtensions.forEach(p => { - for (const plugin of activePlugins(p)) { + for (const plugin of activePlugins(p, disabled)) { litePluginsToRegister.push(plugin); } }); diff --git a/packages/voilite/src/plugins.ts b/packages/voilite/src/plugins.ts index ef8f538e4..90355a6e6 100644 --- a/packages/voilite/src/plugins.ts +++ b/packages/voilite/src/plugins.ts @@ -39,7 +39,7 @@ const widgetManager = { /** * A plugin to handler the theme */ -const themePlugin: JupyterFrontEndPlugin = { +export const themePlugin: JupyterFrontEndPlugin = { id: '@voila-dashboards/voilite:theme-manager', autoStart: true, optional: [IThemeManager], diff --git a/packages/voilite/src/tree.ts b/packages/voilite/src/tree.ts new file mode 100644 index 000000000..b79be2cbb --- /dev/null +++ b/packages/voilite/src/tree.ts @@ -0,0 +1,157 @@ +/*************************************************************************** + * Copyright (c) 2022, Voilà contributors * + * Copyright (c) 2022, QuantStack * + * * + * Distributed under the terms of the BSD 3-Clause License. * + * * + * The full license is in the file LICENSE, distributed with this software. * + ****************************************************************************/ +import '@jupyterlab/nbconvert-css/style/index.css'; + +import { PageConfig, URLExt } from '@jupyterlab/coreutils'; +import { JupyterLiteServer } from '@jupyterlite/server'; +import { + pathsPlugin, + translatorPlugin, + VoilaShell +} from '@voila-dashboards/voila'; + +import { VoiliteApp } from './app'; +import { themePlugin } from './plugins'; +import { activePlugins, createModule, loadComponent } from './utils'; + +const serverExtensions = [import('@jupyterlite/server-extension')]; + +const disabled = ['@jupyter-widgets/jupyterlab-manager']; + +/** + * The main function + */ +async function main() { + const mods = [ + // @jupyterlab plugins + require('@jupyterlab/apputils-extension').default.filter((m: any) => + [ + '@jupyterlab/apputils-extension:settings', + '@jupyterlab/apputils-extension:themes' + ].includes(m.id) + ), + require('@jupyterlab/theme-light-extension'), + require('@jupyterlab/theme-dark-extension'), + translatorPlugin, + pathsPlugin, + themePlugin + ]; + + const mimeExtensions: any[] = []; + + const extensionData = JSON.parse( + PageConfig.getOption('federated_extensions') + ); + + const federatedExtensionPromises: any[] = []; + const federatedMimeExtensionPromises: any[] = []; + const federatedStylePromises: any[] = []; + + const extensions = await Promise.allSettled( + extensionData.map(async (data: any) => { + await loadComponent( + `${URLExt.join( + PageConfig.getOption('fullLabextensionsUrl'), + data.name, + data.load + )}`, + data.name + ); + return data; + }) + ); + + Object.entries(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 (const plugin of activePlugins(p.value, disabled)) { + 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 (const plugin of activePlugins(p.value, disabled)) { + 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(p => { + console.error((p as PromiseRejectedResult).reason); + }); + + const litePluginsToRegister: any[] = []; + const baseServerExtensions = await Promise.all(serverExtensions); + baseServerExtensions.forEach(p => { + for (const plugin of activePlugins(p, disabled)) { + litePluginsToRegister.push(plugin); + } + }); + + // create the in-browser JupyterLite Server + const jupyterLiteServer = new JupyterLiteServer({ shell: null as never }); + + jupyterLiteServer.registerPluginModules(litePluginsToRegister); + // start the server + await jupyterLiteServer.start(); + + const serviceManager = jupyterLiteServer.serviceManager; + const app = new VoiliteApp({ + serviceManager: serviceManager as any, + shell: new VoilaShell() + }); + + app.registerPluginModules(mods); + app.started.then(() => { + const el = document.getElementById('voila-tree-main'); + if (el) { + el.style.display = 'unset'; + } + }); + app.start(); +} + +window.addEventListener('load', main); diff --git a/packages/voilite/src/treebootstrap.ts b/packages/voilite/src/treebootstrap.ts new file mode 100644 index 000000000..ba5dd3118 --- /dev/null +++ b/packages/voilite/src/treebootstrap.ts @@ -0,0 +1 @@ +import('./tree.js'); diff --git a/packages/voilite/src/utils.ts b/packages/voilite/src/utils.ts new file mode 100644 index 000000000..6b431b203 --- /dev/null +++ b/packages/voilite/src/utils.ts @@ -0,0 +1,69 @@ +import { PageConfig } from '@jupyterlab/coreutils'; + +// 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 + +export function loadScript(url: string) { + 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; + }); +} +export async function loadComponent(url: string, scope: string) { + 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); +} + +export async function createModule(scope: string, module: any) { + 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; + } +} + +/** + * Iterate over active plugins in an extension. + * + * #### Notes + * This also populates the disabled + */ +export function* activePlugins(extension: any, disabledExtensions: string[]) { + // Handle commonjs or es2015 modules + let exports; + if (Object.prototype.hasOwnProperty.call(extension, '__esModule')) { + exports = extension.default; + } else { + // CommonJS exports. + exports = extension; + } + + const plugins = Array.isArray(exports) ? exports : [exports]; + for (const plugin of plugins) { + if ( + PageConfig.Extension.isDisabled(plugin.id) || + disabledExtensions.includes(plugin.id) || + disabledExtensions.includes(plugin.id.split(':')[0]) + ) { + continue; + } + yield plugin; + } +} diff --git a/packages/voilite/webpack.config.js b/packages/voilite/webpack.config.js index ea92e1797..abc41e2e7 100644 --- a/packages/voilite/webpack.config.js +++ b/packages/voilite/webpack.config.js @@ -70,6 +70,7 @@ const extras = Build.ensureAssets({ // Make a bootstrap entrypoint const entryPoint = path.join(buildDir, 'bootstrap.js'); +const treeEntryPoint = path.join(buildDir, 'treebootstrap.js'); if (process.env.NODE_ENV === 'production') { baseConfig.mode = 'production'; @@ -120,14 +121,20 @@ class CompileSchemasPlugin { module.exports = [ merge(baseConfig, { mode: 'development', - entry: ['./publicpath.js', './' + path.relative(__dirname, entryPoint)], + entry: { + voilite: ['./publicpath.js', './' + path.relative(__dirname, entryPoint)], + treepage: [ + './publicpath.js', + './' + path.relative(__dirname, treeEntryPoint) + ] + }, output: { path: distRoot, library: { type: 'var', name: ['_JUPYTERLAB', 'CORE_OUTPUT'] }, - filename: 'voilite.js' + filename: '[name].js' }, module: { rules: [ diff --git a/share/jupyter/voila/templates/lab/tree.html b/share/jupyter/voila/templates/lab/tree.html index 9dcbb89e5..d108ffebc 100644 --- a/share/jupyter/voila/templates/lab/tree.html +++ b/share/jupyter/voila/templates/lab/tree.html @@ -70,28 +70,37 @@ {% endblock %} {% block body %} -
    -
    - Select items to open with Voilà. -
    -
    - -
      - {% if breadcrumbs|length > 1: %} -
    • ..
    • - {% endif %} + {% if frontend == 'voilite' %} + {% set openInNewTab = 'target=_blank' %} + + +
    + {% endblock %} diff --git a/voila/voilite/app.py b/voila/voilite/app.py index d15e86113..9350373d5 100644 --- a/voila/voilite/app.py +++ b/voila/voilite/app.py @@ -237,6 +237,7 @@ def convert_directory(self, page_config): voilite_configuration=self.voilite_configuration, contents_manager=self.contents_manager, base_url=self.base_url, + page_config=page_config ) nb_paths = tree_exporter.from_contents() for nb in nb_paths: diff --git a/voila/voilite/voilite_tree_exporter.py b/voila/voilite/voilite_tree_exporter.py index 366e98703..a20d63de6 100644 --- a/voila/voilite/voilite_tree_exporter.py +++ b/voila/voilite/voilite_tree_exporter.py @@ -5,6 +5,8 @@ from jupyter_server.services.contents.largefilemanager import LargeFileManager from jupyter_server.utils import url_path_join, url_escape from ..configuration import VoilaConfiguration +from ..utils import find_all_lab_theme +from copy import deepcopy class VoiliteTreeExporter: @@ -14,7 +16,8 @@ def __init__( voilite_configuration: VoilaConfiguration, contents_manager: LargeFileManager, base_url: str, - output_prefix: str = '_output', + page_config: Dict, + output_prefix: str = "_output", **kwargs, ): @@ -23,92 +26,105 @@ def __init__( self.contents_manager = contents_manager self.theme = voilite_configuration.theme self.template_name = voilite_configuration.template + self.allowed_extensions = list( voilite_configuration.extension_language_mapping.keys() - ) + ['.ipynb'] + ) + [".ipynb"] self.output_prefix = output_prefix self.notebook_paths = [] + self.page_config = self.filter_extensions(page_config) + + def filter_extensions(self, page_config: Dict) -> Dict: + + page_config_copy = deepcopy(page_config) + all_themes = find_all_lab_theme() + all_theme_name = [x[0] for x in all_themes] + filtered_extension = list( + filter( + lambda x: x["name"] in all_theme_name, + page_config_copy["federated_extensions"], + ) + ) + page_config_copy["federated_extensions"] = filtered_extension + return page_config_copy + def allowed_content(self, content: Dict) -> bool: - if content['type'] == 'notebook': + if content["type"] == "notebook": return True - if content['type'] == 'directory' and content['name'] != '_output': + if content["type"] == "directory" and content["name"] != "_output": return True - __, ext = os.path.splitext(content.get('path')) + __, ext = os.path.splitext(content.get("path")) return ext in self.allowed_extensions def from_contents(self, **kwargs) -> Tuple[str, List[str]]: self.resources = self.init_resources(**kwargs) - self.template = self.jinja2_env.get_template('tree.html') + self.template = self.jinja2_env.get_template("tree.html") return self.write_contents() def generate_breadcrumbs(self, path: str) -> List: - breadcrumbs = [(url_path_join(self.base_url, 'voila/tree'), '')] - parts = path.split('/') + breadcrumbs = [(url_path_join(self.base_url, "voila/tree"), "")] + parts = path.split("/") for i in range(len(parts)): if parts[i]: link = url_path_join( self.base_url, - 'voila/tree', + "voila/tree", url_escape(url_path_join(*parts[: i + 1])), ) breadcrumbs.append((link, parts[i])) return breadcrumbs def generate_page_title(self, path: str) -> str: - parts = path.split('/') + parts = path.split("/") if len(parts) > 3: # not too many parts parts = parts[-2:] page_title = url_path_join(*parts) if page_title: - return page_title + '/' + return page_title + "/" else: - return 'Voilà Home' + return "Voilà Home" - def write_contents(self, path='') -> Tuple[Dict, List[str]]: + def write_contents(self, path="") -> Tuple[Dict, List[str]]: cm = self.contents_manager if cm.dir_exists(path=path): if cm.is_hidden(path) and not cm.allow_hidden: - print('Refusing to serve hidden directory, via 404 Error') + print("Refusing to serve hidden directory, via 404 Error") return breadcrumbs = self.generate_breadcrumbs(path) page_title = self.generate_page_title(path) contents = cm.get(path) - contents['content'] = sorted( - contents['content'], key=lambda i: i['name'] - ) - contents['content'] = list( - filter(self.allowed_content, contents['content']) + contents["content"] = sorted(contents["content"], key=lambda i: i["name"]) + contents["content"] = list( + filter(self.allowed_content, contents["content"]) ) - for file in contents['content']: - if file['type'] == 'notebook': - self.notebook_paths.append(file['path']) - file['path'] = file['path'].replace('.ipynb', '.html') - elif file['type'] == 'directory': - self.write_contents(file['path']) + for file in contents["content"]: + if file["type"] == "notebook": + self.notebook_paths.append(file["path"]) + file["path"] = file["path"].replace(".ipynb", ".html") + elif file["type"] == "directory": + self.write_contents(file["path"]) page_content = self.template.render( contents=contents, page_title=page_title, breadcrumbs=breadcrumbs, - **self.resources + **self.resources, ) - output_dir = os.path.join( - self.output_prefix, 'voila', 'tree', path - ) + output_dir = os.path.join(self.output_prefix, "voila", "tree", path) if not os.path.exists(output_dir): os.makedirs(output_dir, exist_ok=True) - with open(os.path.join(output_dir, 'index.html'), 'w') as f: + with open(os.path.join(output_dir, "index.html"), "w") as f: f.write(page_content) - if path == '': - with open(os.path.join(self.output_prefix, 'index.html'), 'w') as f: + if path == "": + with open(os.path.join(self.output_prefix, "index.html"), "w") as f: f.write(page_content) return self.notebook_paths @@ -116,13 +132,14 @@ def write_contents(self, path='') -> Tuple[Dict, List[str]]: def init_resources(self, **kwargs) -> Dict: resources = { - 'base_url': self.base_url, - 'frontend': 'voilite', - 'theme': self.theme, - 'include_css': lambda x: '', - 'include_js': lambda x: '', - 'include_url': lambda x: '', - 'include_lab_theme': lambda x: '', + "base_url": self.base_url, + "page_config": self.page_config, + "frontend": "voilite", + "theme": self.theme, + "include_css": lambda x: "", + "include_js": lambda x: "", + "include_url": lambda x: "", + "include_lab_theme": lambda x: "", **kwargs, } From 6f73e67ec5f57d1937c076629afac5f2c916976c Mon Sep 17 00:00:00 2001 From: Duc Trung Le Date: Wed, 16 Nov 2022 16:45:03 +0100 Subject: [PATCH 07/10] Switch to CSS-based style for light and dark theme --- share/jupyter/voila/templates/lab/tree.html | 16 ++-- voila/voilite/app.py | 36 ++++++-- voila/voilite/voilite_tree_exporter.py | 92 ++++++++++++--------- 3 files changed, 94 insertions(+), 50 deletions(-) diff --git a/share/jupyter/voila/templates/lab/tree.html b/share/jupyter/voila/templates/lab/tree.html index d108ffebc..fb2cc9479 100644 --- a/share/jupyter/voila/templates/lab/tree.html +++ b/share/jupyter/voila/templates/lab/tree.html @@ -75,13 +75,19 @@ - -