[wip] Upgrade to drawio 15.8.6 (#74)

pull/79/head
Nicholas Bollweg 2021-11-27 13:55:31 -06:00 zatwierdzone przez GitHub
rodzic 33097b5c56
commit 1921c34da9
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
26 zmienionych plików z 351 dodań i 164 usunięć

Wyświetl plik

@ -49,14 +49,16 @@ dependencies:
############################################################################ ############################################################################
### ipydrawio-docs-deps ### ### ipydrawio-docs-deps ###
- jupyter-server-mathjax
- myst-nb - myst-nb
- pkginfo
- pydata-sphinx-theme - pydata-sphinx-theme
- pytest-check-links - pytest-check-links
- sphinx - sphinx
- sphinx-jsonschema - sphinx-jsonschema
- sphinxext-rediraffe - sphinxext-rediraffe
- pip: - pip:
- jupyterlite ==0.1.0a16 - jupyterlite ==0.1.0a17
### ipydrawio-docs-deps ### ### ipydrawio-docs-deps ###
@ -71,7 +73,7 @@ dependencies:
- python # this gets patched in ci - python # this gets patched in ci
# run # run
- ipywidgets >=7.6 - ipywidgets >=7.6
- jupyterlab >=3.1.9,<4.0.0a0 - jupyterlab >=3.2.4,<4.0.0a0
- jupyterlab_widgets >=1 - jupyterlab_widgets >=1
- lxml - lxml
- pillow - pillow
@ -92,6 +94,7 @@ dependencies:
- pytest - pytest
- pytest-console-scripts - pytest-console-scripts
- pytest-cov - pytest-cov
- pytest-html
- pytest-tornasync - pytest-tornasync
# acceptance testing # acceptance testing
- firefox =91 - firefox =91

Wyświetl plik

@ -29,7 +29,7 @@ dependencies:
- python # this gets patched in ci - python # this gets patched in ci
# run # run
- ipywidgets >=7.6 - ipywidgets >=7.6
- jupyterlab >=3.1.9,<4.0.0a0 - jupyterlab >=3.2.4,<4.0.0a0
- jupyterlab_widgets >=1 - jupyterlab_widgets >=1
- lxml - lxml
- pillow - pillow
@ -50,6 +50,7 @@ dependencies:
- pytest - pytest
- pytest-console-scripts - pytest-console-scripts
- pytest-cov - pytest-cov
- pytest-html
- pytest-tornasync - pytest-tornasync
# acceptance testing # acceptance testing
- firefox =91 - firefox =91

Wyświetl plik

@ -302,6 +302,15 @@ jobs:
cd ../ipydrawio-export cd ../ipydrawio-export
codecov --root ../.. codecov --root ../..
- name: upload (utest)
if: always()
uses: actions/upload-artifact@v2
with:
name:
ipydrawio ${{ github.run_number }} utest ${{ matrix.os }}${{
matrix.python-version }}
path: ./build/pytest
- name: upload (atest) - name: upload (atest)
if: always() if: always()
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2
@ -354,10 +363,16 @@ jobs:
use-only-tar-bz2: true use-only-tar-bz2: true
use-mamba: true use-mamba: true
- name: download (dist)
uses: actions/download-artifact@v2
with:
name: ipydrawio ${{ github.run_number }} dist
path: ./dist
- name: build docs - name: build docs
shell: bash -l {0} shell: bash -l {0}
run: | run: |
doit $DOIT_N_TEST docs || doit docs doit $DOIT_N_TEST docs || doit docs || doit docs
- name: check docs - name: check docs
shell: bash -l {0} shell: bash -l {0}
@ -367,7 +382,7 @@ jobs:
- name: lite tests - name: lite tests
shell: bash -l {0} shell: bash -l {0}
run: | run: |
doit $DOIT_N_TEST test doit $DOIT_N_TEST test:robot
- name: upload (atest lite) - name: upload (atest lite)
if: always() if: always()

Wyświetl plik

@ -10,9 +10,9 @@
#### @deathbeds/ipydrawio-notebook 1.1.2 #### @deathbeds/ipydrawio-notebook 1.1.2
#### @deathbeds/ipydrawio-webpack 15.7.300 #### @deathbeds/ipydrawio-webpack 15.8.600
- upgrade to drawio v15.7.3 for enhancements and bug fixes - upgrade to drawio v15.8.6 for enhancements and bug fixes
#### @deathbeds/ipydrawio-jupyter-templates 1.1.2 #### @deathbeds/ipydrawio-jupyter-templates 1.1.2
@ -20,6 +20,9 @@
#### @deathbeds/ipydrawio-pdf 1.1.2 #### @deathbeds/ipydrawio-pdf 1.1.2
- a `yarn.lock` is shipped to reduce provisioning time and increase
reproducibility
[#72]: https://github.com/deathbeds/ipydrawio/issues/72 [#72]: https://github.com/deathbeds/ipydrawio/issues/72
## Releases ## Releases

1
demo/.gitignore vendored
Wyświetl plik

@ -4,3 +4,4 @@ _output
*.ipynb *.ipynb
*doit.db *doit.db
files/ files/
pypi/

Wyświetl plik

@ -1,6 +1,5 @@
{ {
"LiteBuildConfig": { "LiteBuildConfig": {
"contents": ["."],
"federated_extensions": [ "federated_extensions": [
"../py_packages/ipydrawio/dist/ipydrawio-1.1.2-py3-none-any.whl", "../py_packages/ipydrawio/dist/ipydrawio-1.1.2-py3-none-any.whl",
"https://github.com/conda-forge/releases/releases/download/noarch/bqplot-0.12.31-pyhd8ed1ab_0.tar.bz2/bqplot-0.12.31-pyhd8ed1ab_0.tar.bz2", "https://github.com/conda-forge/releases/releases/download/noarch/bqplot-0.12.31-pyhd8ed1ab_0.tar.bz2/bqplot-0.12.31-pyhd8ed1ab_0.tar.bz2",
@ -11,9 +10,6 @@
"https://github.com/conda-forge/releases/releases/download/noarch/wxyz_lab-0.5.1-pyhd8ed1ab_0.tar.bz2/wxyz_lab-0.5.1-pyhd8ed1ab_0.tar.bz2", "https://github.com/conda-forge/releases/releases/download/noarch/wxyz_lab-0.5.1-pyhd8ed1ab_0.tar.bz2/wxyz_lab-0.5.1-pyhd8ed1ab_0.tar.bz2",
"https://github.com/conda-forge/releases/releases/download/noarch/wxyz_svg-0.5.1-pyhd8ed1ab_0.tar.bz2/wxyz_svg-0.5.1-pyhd8ed1ab_0.tar.bz2" "https://github.com/conda-forge/releases/releases/download/noarch/wxyz_svg-0.5.1-pyhd8ed1ab_0.tar.bz2/wxyz_svg-0.5.1-pyhd8ed1ab_0.tar.bz2"
], ],
"ignore_contents": [
"(lab/|_output|.gitignore|doit.db|\\.json$|jupyter_config|log$|\\.cache|\\.ipynb_checkpoints)"
],
"ignore_sys_prefix": true, "ignore_sys_prefix": true,
"lite_dir": ".", "lite_dir": ".",
"output_archive": "../build/demo/ipydrawio-lite-1.1.2.tgz", "output_archive": "../build/demo/ipydrawio-lite-1.1.2.tgz",

Wyświetl plik

@ -0,0 +1,2 @@
# a set of packages we capture offline for the demo site
ipywidgets >=7.6,<8

Wyświetl plik

@ -23,14 +23,16 @@ channels:
dependencies: dependencies:
### ipydrawio-docs-deps ### ### ipydrawio-docs-deps ###
- jupyter-server-mathjax
- myst-nb - myst-nb
- pkginfo
- pydata-sphinx-theme - pydata-sphinx-theme
- pytest-check-links - pytest-check-links
- sphinx - sphinx
- sphinx-jsonschema - sphinx-jsonschema
- sphinxext-rediraffe - sphinxext-rediraffe
- pip: - pip:
- jupyterlite ==0.1.0a16 - jupyterlite ==0.1.0a17
### ipydrawio-docs-deps ### ### ipydrawio-docs-deps ###
@ -44,7 +46,7 @@ dependencies:
- python # this gets patched in ci - python # this gets patched in ci
# run # run
- ipywidgets >=7.6 - ipywidgets >=7.6
- jupyterlab >=3.1.9,<4.0.0a0 - jupyterlab >=3.2.4,<4.0.0a0
- jupyterlab_widgets >=1 - jupyterlab_widgets >=1
- lxml - lxml
- pillow - pillow
@ -65,6 +67,7 @@ dependencies:
- pytest - pytest
- pytest-console-scripts - pytest-console-scripts
- pytest-cov - pytest-cov
- pytest-html
- pytest-tornasync - pytest-tornasync
# acceptance testing # acceptance testing
- firefox =91 - firefox =91

80
dodo.py
Wyświetl plik

@ -131,6 +131,19 @@ def task_setup():
targets=[P.YARN_INTEGRITY], targets=[P.YARN_INTEGRITY],
) )
yield dict(
name="js:ipde",
file_dep=[P.IPDE_DIE2_PACKAGE_JSON],
targets=[P.IPDE_DIE2_YARN_LOCK],
actions=[
CmdAction(
[*P.JLPM, "--ignore-optional", "--prefer-offline"],
shell=False,
cwd=P.IPDE_DIE2,
),
],
)
for pkg, pkg_setup in P.PY_SETUP.items(): for pkg, pkg_setup in P.PY_SETUP.items():
# TODO: refactor # TODO: refactor
ext_deps = [ ext_deps = [
@ -495,6 +508,10 @@ def task_build():
] ]
) )
) )
if py_setup.parent == P.IPDE:
file_dep += [P.IPDE_DIE2_YARN_LOCK]
yield dict( yield dict(
name=f"sdist:{py_pkg}", name=f"sdist:{py_pkg}",
file_dep=file_dep, file_dep=file_dep,
@ -683,6 +700,27 @@ def task_demo():
print("jupyterlite not found, this might be okay", flush=True) print("jupyterlite not found, this might be okay", flush=True)
return return
demo_dest = [*P.DEMO.glob("*.json")]
demo_tasks = []
final_dest = []
yield dict(
name="pyodide:packages",
doc="fetch the pyodide packages.json",
uptodate=[doit.tools.config_changed(P.PYODIDE_URL)],
targets=[P.PYODIDE_PACKAGES],
actions=[P.fetch_pyodide_packages],
)
demo_tasks += ["demo:wheels"]
yield dict(
name="wheels",
doc="fetch wheels",
file_dep=[P.PYODIDE_PACKAGES, P.DEMO_REQS],
actions=[P.fetch_wheels],
)
yield dict( yield dict(
name="extensions", name="extensions",
doc="update jupyter-lite.json from the conda env", doc="update jupyter-lite.json from the conda env",
@ -701,12 +739,9 @@ def task_demo():
], ],
) )
demo_dest = []
demo_tasks = []
final_dest = []
for path in P.ALL_DEMO_CONTENTS: for path in P.ALL_DEMO_CONTENTS:
name = f"stage:{path.name}" name = f"stage:{path.name}"
dest = P.DEMO / path.name.replace(" ", "_") dest = P.DEMO_FILES / path.name.replace(" ", "_")
demo_dest += [dest] demo_dest += [dest]
demo_tasks += [f"demo:{name}"] demo_tasks += [f"demo:{name}"]
final_dest += [P.DEMO_BUILD / f"files/{path.name}"] final_dest += [P.DEMO_BUILD / f"files/{path.name}"]
@ -721,19 +756,10 @@ def task_demo():
assert final_dest assert final_dest
assert demo_tasks assert demo_tasks
lite_src_files = [
p
for p in P.DEMO.rglob("*")
if not p.is_dir()
and "/_output/" not in str(p)
and not p.name.endswith(".tgz")
and ".doit" not in p.name
]
yield dict( yield dict(
name="archive", name="archive",
task_dep=demo_tasks, task_dep=demo_tasks,
file_dep=[*demo_dest, *lite_src_files], file_dep=[*demo_dest, *P.DEMO_WHEELS.glob(f"*{P.NOARCH_WHL}")],
targets=[P.DEMO_ARCHIVE, P.DEMO_HASHES, *final_dest, P.DEMO_CONTENTS_API], targets=[P.DEMO_ARCHIVE, P.DEMO_HASHES, *final_dest, P.DEMO_CONTENTS_API],
actions=[P._build_lite], actions=[P._build_lite],
) )
@ -861,13 +887,12 @@ def task_provision():
) )
def _pytest(setup_py): def _pytest(setup_py, *pytest_args):
def _test(): return CmdAction(
subprocess.check_call( [*P.PYM, "pytest", *P.PYTEST_ARGS, *pytest_args],
[*P.PYM, "pytest", *P.PYTEST_ARGS], shell=False, cwd=str(setup_py.parent) shell=False,
) cwd=str(setup_py.parent),
)
return _test
def task_test(): def task_test():
@ -892,6 +917,13 @@ def task_test():
) )
for pkg, setup in P.PY_SETUP.items(): for pkg, setup in P.PY_SETUP.items():
html = P.BUILD / f"pytest/{pkg}/test.html"
htmlcov = P.BUILD / f"pytest/{pkg}/htmlcov"
pytest_args = [
f"--cov-report=html:{htmlcov}",
f"--html={html}",
"--self-contained-html",
]
yield P._ok( yield P._ok(
dict( dict(
name=f"pytest:{pkg}", name=f"pytest:{pkg}",
@ -903,7 +935,11 @@ def task_test():
P.OK_PROVISION, P.OK_PROVISION,
P.OK_PIP_CHECK, P.OK_PIP_CHECK,
], ],
actions=[PythonInteractiveAction(_pytest(setup))], actions=[
(P.delete_some, [htmlcov, html]),
_pytest(setup, *pytest_args),
],
targets=[htmlcov / "status.json", html],
), ),
P.OK_PYTEST[pkg], P.OK_PYTEST[pkg],
) )

Wyświetl plik

@ -1,10 +1,8 @@
*.tgz *.tgz
**/.ipynb_checkpoints **/.ipynb_checkpoints
dio/.git* dio/.git*
dio/*.json
dio/*.md dio/*.md
dio/*/.npmignore dio/*/.npmignore
dio/*/*.json
dio/*/*.orig dio/*/*.orig
dio/connect/* dio/connect/*
dio/dropbox* dio/dropbox*
@ -17,6 +15,7 @@ dio/math/jax/output/HTML-CSS/*
dio/META-INF/* dio/META-INF/*
dio/onedrive* dio/onedrive*
dio/onedrive*.html dio/onedrive*.html
dio/package.json
dio/WEB-INF/* dio/WEB-INF/*
dio/yarn.lock dio/yarn.lock
drawio/ drawio/

@ -1 +1 @@
Subproject commit 866012510a3dc291356cca6f0667911e680e7a99 Subproject commit 8bd26f358da648fd00b002815d39a37cbf160b57

Wyświetl plik

@ -89,11 +89,6 @@ import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/google-dri
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/google-share.png'; import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/google-share.png';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/grid.gif'; import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/grid.gif';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/handle-connect.png'; import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/handle-connect.png';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/handle-fixed.png';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/handle-main.png';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/handle-rotate.png';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/handle-secondary.png';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/handle-terminal.png';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/help.png'; import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/help.png';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/hs.png'; import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/hs.png';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/hv.png'; import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/hv.png';
@ -112,6 +107,7 @@ import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/logo-quip.
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/logo-small.gif'; import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/logo-small.gif';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/logo-white.png'; import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/logo-white.png';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/logo.png'; import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/logo.png';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/manifest.json';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/move.png'; import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/move.png';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/mstile-150x150.png'; import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/mstile-150x150.png';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/my-diagrams-sel.svg'; import '!!file-loader?name=[path][name].[ext]&context=.!../dio/images/my-diagrams-sel.svg';

Wyświetl plik

@ -43,5 +43,5 @@
"build:pre": "python scripts/patch.py && python scripts/static.py" "build:pre": "python scripts/patch.py && python scripts/static.py"
}, },
"types": "lib/index.d.ts", "types": "lib/index.d.ts",
"version": "15.7.300" "version": "15.8.600"
} }

Wyświetl plik

@ -16,4 +16,12 @@ module.exports = {
optimization: { optimization: {
minimize: false, minimize: false,
}, },
module: {
rules: [
{
test: /dio\/.*/,
type: 'asset/resource',
},
],
},
}; };

Wyświetl plik

@ -8,7 +8,7 @@
"@jupyterlab/application": "^3.1.0", "@jupyterlab/application": "^3.1.0",
"@jupyterlab/launcher": "^3.1.0", "@jupyterlab/launcher": "^3.1.0",
"@jupyterlab/mainmenu": "^3.1.0", "@jupyterlab/mainmenu": "^3.1.0",
"@deathbeds/ipydrawio-webpack": "^15.7.300" "@deathbeds/ipydrawio-webpack": "^15.8.600"
}, },
"description": "A JupyterLab extension for embedding interactive drawio / mxgraph diagrams.", "description": "A JupyterLab extension for embedding interactive drawio / mxgraph diagrams.",
"devDependencies": { "devDependencies": {

Wyświetl plik

@ -76,6 +76,7 @@ export class Diagram extends IFrame {
private _app: IMXApp; private _app: IMXApp;
private _appChanged = new Signal<Diagram, void>(this); private _appChanged = new Signal<Diagram, void>(this);
private _escaped = new Signal<Diagram, void>(this); private _escaped = new Signal<Diagram, void>(this);
private _loaded = new Signal<Diagram, void>(this);
constructor(options: Diagram.IOptions) { constructor(options: Diagram.IOptions) {
super({ sandbox: SANDBOX_EXCEPTIONS, ...options }); super({ sandbox: SANDBOX_EXCEPTIONS, ...options });
@ -135,6 +136,13 @@ export class Diagram extends IFrame {
return this._escaped; return this._escaped;
} }
/**
* A signal emitted when a load action completes
*/
get loaded(): ISignal<Diagram, void> {
return this._loaded;
}
/** /**
* Handle messages from the iframe over the drawio embed protocol * Handle messages from the iframe over the drawio embed protocol
*/ */
@ -165,25 +173,19 @@ export class Diagram extends IFrame {
break; break;
case 'load': case 'load':
this.app = (this._frame?.contentWindow as any).IPYDRAWIO_APP; this.app = (this._frame?.contentWindow as any).IPYDRAWIO_APP;
this._ready.resolve(void 0);
this._initialLoad = true;
this.addClass(READY_CLASS); this.addClass(READY_CLASS);
if (!this._initialLoad) {
this.onSaveMsg(msg);
}
this._initialLoad = true;
this._loaded.emit(void 0);
this._ready.resolve(void 0);
break; break;
case 'save': case 'save':
if (this.format?.isTransformed) { this.onSaveMsg(msg, true);
this.saveWithExport(true);
break;
}
this._lastEmitted = msg.xml;
this.save(msg.xml, true);
break; break;
case 'autosave': case 'autosave':
if (this.adapter.saveNeedsExport()) { this.onSaveMsg(msg);
this.saveWithExport();
break;
}
this._lastEmitted = msg.xml;
this.save(msg.xml);
break; break;
case 'export': case 'export':
if (this._exportPromise != null) { if (this._exportPromise != null) {
@ -202,6 +204,15 @@ export class Diagram extends IFrame {
} }
} }
onSaveMsg(msg: any, hardSave: boolean = false) {
if (this.adapter.saveNeedsExport()) {
this.saveWithExport(hardSave);
} else {
this._lastEmitted = msg.xml;
this.save(msg.xml, hardSave);
}
}
/** /**
* Install the message listener, the first time, and potentially reload the frame * Install the message listener, the first time, and potentially reload the frame
*/ */

Wyświetl plik

@ -16,6 +16,7 @@
*/ */
import { Widget } from '@lumino/widgets'; import { Widget } from '@lumino/widgets';
import { ISignal, Signal } from '@lumino/signaling'; import { ISignal, Signal } from '@lumino/signaling';
import { PromiseDelegate } from '@lumino/coreutils';
import { import {
IWidgetTracker, IWidgetTracker,
WidgetTracker, WidgetTracker,
@ -96,7 +97,7 @@ export class DiagramManager implements IDiagramManager {
caption: `Create a blank ${IO.XML_NATIVE.ext} file`, caption: `Create a blank ${IO.XML_NATIVE.ext} file`,
execute: async (args) => { execute: async (args) => {
let cwd = this._browserFactory.defaultBrowser.model.path; let cwd = this._browserFactory.defaultBrowser.model.path;
return this.createNew({ ...(args as any), cwd }); return await this.createNew({ ...(args as any), cwd });
}, },
}); });
@ -110,14 +111,27 @@ export class DiagramManager implements IDiagramManager {
this._templatesChanged.connect(onChange); this._templatesChanged.connect(onChange);
const content = new CreateCustom(model); const content = new CreateCustom(model);
const main = new MainAreaWidget({ content }); const main = new MainAreaWidget({ content });
model.documentRequested.connect(async () => { const promiseDelegate = new PromiseDelegate<DiagramDocument>();
await commands.execute(CommandIds.createNew, model.args as any);
const onDisposed = async () => promiseDelegate.reject(void 0);
const onRequested = async () => {
const diagramDocument: DiagramDocument = await commands.execute(
CommandIds.createNew,
model.args as any
);
this._settings.changed.disconnect(onChange); this._settings.changed.disconnect(onChange);
this._templatesChanged.disconnect(onChange); this._templatesChanged.disconnect(onChange);
main.disposed.disconnect(onDisposed);
promiseDelegate.resolve(diagramDocument);
main.dispose(); main.dispose();
model.dispose(); model.dispose();
}); };
model.documentRequested.connect(onRequested);
main.disposed.connect(onDisposed);
this._app.shell.add(main); this._app.shell.add(main);
return promiseDelegate.promise;
}, },
icon: IO.drawioIcon, icon: IO.drawioIcon,
}); });
@ -210,7 +224,7 @@ export class DiagramManager implements IDiagramManager {
/** /**
* Create a new untitled diagram file, given the current working directory. * Create a new untitled diagram file, given the current working directory.
*/ */
async createNew(args: ICreateNewArgs) { async createNew(args: ICreateNewArgs): Promise<DiagramDocument> {
let { cwd } = args; let { cwd } = args;
const format = const format =

Wyświetl plik

@ -1,6 +1,7 @@
include README.md LICENSE.txt include README.md LICENSE.txt
recursive-exclude src/ipydrawio_export/vendor/draw-image-export2 node_modules
recursive-include src/ipydrawio_export/etc *.json recursive-include src/ipydrawio_export/etc *.json
recursive-include src/ipydrawio_export/ext *.* recursive-include src/ipydrawio_export/ext *.*
recursive-include src/ipydrawio_export/tests/fixtures *.* recursive-include src/ipydrawio_export/tests/fixtures *.*
recursive-include src/ipydrawio_export/vendor/draw-image-export2 *.json *.js README.md LICENSE yarn.lock recursive-include src/ipydrawio_export/vendor/draw-image-export2 *.json *.js README.md LICENSE yarn.lock
recursive-exclude src/ipydrawio_export/vendor/draw-image-export2/node_modules *.* LICENSE *.md *.json
recursive-exclude src/ipydrawio_export/vendor/draw-image-export2/iisnode *.* LICENSE *.md *.json

Wyświetl plik

@ -89,7 +89,7 @@ addopts =
--cov ipydrawio_export --cov ipydrawio_export
--cov-branch --cov-branch
--cov-report term-missing:skip-covered --cov-report term-missing:skip-covered
--cov-report html --no-cov-on-fail
[isort] [isort]
combine_as_imports = True combine_as_imports = True

Wyświetl plik

@ -37,7 +37,7 @@ class BaseApp(Application):
class ManagedApp(BaseApp): class ManagedApp(BaseApp):
drawio_manager = T.Instance(IPyDrawioExportManager) drawio_manager: IPyDrawioExportManager = T.Instance(IPyDrawioExportManager)
io_loop = T.Instance(ioloop.IOLoop) io_loop = T.Instance(ioloop.IOLoop)
@T.default("io_loop") @T.default("io_loop")

Wyświetl plik

@ -269,6 +269,8 @@ class IPyDrawioExportManager(LoggingConfigurable):
for diagram in self.extract_diagrams(pdf_request): for diagram in self.extract_diagrams(pdf_request):
tree.append(diagram) tree.append(diagram)
next_pdf = tdp / f"doc-{i}.pdf" next_pdf = tdp / f"doc-{i}.pdf"
if pdf_request.get("pdf") is None: # pragma: no cover
raise ValueError("PDF request is empty")
wrote = next_pdf.write_bytes(b64decode(pdf_request["pdf"])) wrote = next_pdf.write_bytes(b64decode(pdf_request["pdf"]))
if wrote: if wrote:
merger.append(PdfFileReader(str(next_pdf))) merger.append(PdfFileReader(str(next_pdf)))
@ -362,7 +364,8 @@ class IPyDrawioExportManager(LoggingConfigurable):
self.drawio_export_app, self.drawio_export_app,
) )
subprocess.check_call( subprocess.check_call(
[str(JLPM), "--silent"], cwd=str(self.drawio_export_app) [str(JLPM), "--silent", "--ignore-optional"],
cwd=str(self.drawio_export_app),
) )
self.is_provisioning = False self.is_provisioning = False

Wyświetl plik

@ -43,8 +43,10 @@ def test_export_merged(tmp_path, export_app, empty_dio, svg, png, ipynb, attach_
export_app.start() export_app.start()
out = tmp_path / f"{empty_dio.stem}.pdf" out = tmp_path / f"{empty_dio.stem}.pdf"
assert out.exists(), f"{out} was not created"
reader = PdfFileReader(str(out), "rb") reader = PdfFileReader(str(out), "rb")
assert reader.getNumPages() == 4 assert reader.getNumPages() == 4, "unexpected number of pages"
attachments = sorted(manager.attachments(out)) attachments = sorted(manager.attachments(out))
assert len(attachments) == attach_xml assert len(attachments) == attach_xml, "unexpected attachment status"

@ -1 +1 @@
Subproject commit f559902a8ade5f2e29ce0609781dec031426ff24 Subproject commit 754f2c784d13535e38b14a11434d573a856a0fba

Wyświetl plik

@ -98,7 +98,7 @@ addopts =
--cov ipydrawio --cov ipydrawio
--cov-branch --cov-branch
--cov-report term-missing:skip-covered --cov-report term-missing:skip-covered
--cov-report html --no-cov-on-fail
[isort] [isort]
combine_as_imports = True combine_as_imports = True

Wyświetl plik

@ -76,6 +76,16 @@ def _clean(*paths_or_globs):
return cleaned return cleaned
def delete_some(*paths_or_globs):
for p_or_g in paths_or_globs:
paths = [p_or_g] if isinstance(p_or_g, Path) else [*p_or_g]
for p in paths:
if p.is_dir():
shutil.rmtree(p)
elif p.exists():
p.unlink()
_SESSION = None _SESSION = None
@ -86,6 +96,7 @@ OSX = PLATFORM == "Darwin"
UNIX = not WIN UNIX = not WIN
PREFIX = Path(sys.prefix) PREFIX = Path(sys.prefix)
ENC = dict(encoding="utf-8") ENC = dict(encoding="utf-8")
JSON_FMT = dict(indent=2, sort_keys=True)
BUILDING_IN_CI = bool(json.loads(os.environ.get("BUILDING_IN_CI", "0"))) BUILDING_IN_CI = bool(json.loads(os.environ.get("BUILDING_IN_CI", "0")))
TESTING_IN_CI = bool(json.loads(os.environ.get("TESTING_IN_CI", "0"))) TESTING_IN_CI = bool(json.loads(os.environ.get("TESTING_IN_CI", "0")))
@ -199,9 +210,7 @@ NO_TYPEDOC = ["_meta", "ipydrawio-webpack"]
# so many js packages # so many js packages
JS_PKG_JSON = {p.parent.name: p for p in PACKAGES.glob("*/package.json")} JS_PKG_JSON = {p.parent.name: p for p in PACKAGES.glob("*/package.json")}
JS_PKG_DATA = { JS_PKG_DATA = {k: json.loads(v.read_text(**ENC)) for k, v in JS_PKG_JSON.items()}
k: json.loads(v.read_text(encoding="utf-8")) for k, v in JS_PKG_JSON.items()
}
JS_PKG_JSON_LABEXT = { JS_PKG_JSON_LABEXT = {
k: v k: v
@ -310,6 +319,10 @@ PY_VERSION = {
IPD = PY_SETUP["ipydrawio"].parent IPD = PY_SETUP["ipydrawio"].parent
IPDE = PY_SETUP["ipydrawio-export"].parent IPDE = PY_SETUP["ipydrawio-export"].parent
IPDE_VENDOR = IPDE / "src/ipydrawio_export/vendor"
IPDE_DIE2 = IPDE_VENDOR / "draw-image-export2"
IPDE_DIE2_PACKAGE_JSON = IPDE_DIE2 / "package.json"
IPDE_DIE2_YARN_LOCK = IPDE_DIE2 / "yarn.lock"
IPD_VERSION = PY_VERSION["ipydrawio"] IPD_VERSION = PY_VERSION["ipydrawio"]
IPDE_VERSION = PY_VERSION["ipydrawio-export"] IPDE_VERSION = PY_VERSION["ipydrawio-export"]
@ -339,7 +352,9 @@ RE_CONDA_FORGE_URL = r"/conda-forge/(.*/)?(noarch|linux-64|win-64|osx-64)/([^/]+
CONDA_FORGE_RELEASE = "https://github.com/conda-forge/releases/releases/download" CONDA_FORGE_RELEASE = "https://github.com/conda-forge/releases/releases/download"
FED_EXT_MARKER = "### FEDERATED EXTENSIONS ###" FED_EXT_MARKER = "### FEDERATED EXTENSIONS ###"
DEMO = ROOT / "demo" DEMO = ROOT / "demo"
DEMO_FILES = DEMO / "files"
DEMO_CONFIG = DEMO / "jupyter_lite_config.json" DEMO_CONFIG = DEMO / "jupyter_lite_config.json"
DEMO_REQS = DEMO / "requirements.txt"
DEMO_APPS = ["lab"] DEMO_APPS = ["lab"]
DEMO_BUILD = BUILD / "demo" DEMO_BUILD = BUILD / "demo"
DEMO_HASHES = DEMO_BUILD / "SHA256SUMS" DEMO_HASHES = DEMO_BUILD / "SHA256SUMS"
@ -347,6 +362,12 @@ DEMO_CONTENTS_API = DEMO_BUILD / "api/contents/all.json"
DEMO_ARCHIVE = ( DEMO_ARCHIVE = (
DEMO_BUILD / f"""ipydrawio-lite-{JS_PKG_DATA["ipydrawio"]["version"]}.tgz""" DEMO_BUILD / f"""ipydrawio-lite-{JS_PKG_DATA["ipydrawio"]["version"]}.tgz"""
) )
DEMO_WHEELS = DEMO / "pypi"
NOARCH_WHL = "py3-none-any.whl"
IGNORED_WHEELS = ["widgetsnbextension", "nbformat", "ipykernel", "pyolite"]
PYODIDE_URL = "https://cdn.jsdelivr.net/pyodide/v0.18.1/full"
PYODIDE_PACKAGES = BUILD / "pyodide-packages.json"
# docs # docs
SPHINX_ARGS = json.loads(os.environ.get("SPHINX_ARGS", "[]")) SPHINX_ARGS = json.loads(os.environ.get("SPHINX_ARGS", "[]"))
@ -421,7 +442,11 @@ ALL_JSON = [
*PACKAGES.glob("*/schema/*.json"), *PACKAGES.glob("*/schema/*.json"),
*ATEST.glob("fixtures/*.json"), *ATEST.glob("fixtures/*.json"),
*BINDER.glob("*.json"), *BINDER.glob("*.json"),
*[p for p in DEMO.rglob("*.json") if "/_output/" not in str(p)], *[
p
for p in DEMO.rglob("*.json")
if "/_output/" not in str(p) and "/.cache/" not in str(p)
],
] ]
ALL_DIO = [*DOCS_DIO, *IPJT_TMPL_DIO, *ATEST_DIO] ALL_DIO = [*DOCS_DIO, *IPJT_TMPL_DIO, *ATEST_DIO]
ALL_MD = [*ROOT.glob("*.md"), *PACKAGES.glob("*/*.md"), *DOCS_MD] ALL_MD = [*ROOT.glob("*.md"), *PACKAGES.glob("*/*.md"), *DOCS_MD]
@ -596,10 +621,10 @@ def fetch_one(url, path):
def patch_one_env(source, target): def patch_one_env(source, target):
source_text = source.read_text(encoding="utf-8") source_text = source.read_text(**ENC)
name = re.findall(r"name: (.*)", source_text)[0] name = re.findall(r"name: (.*)", source_text)[0]
comment = f" ### {name}-deps ###" comment = f" ### {name}-deps ###"
old_target = target.read_text(encoding="utf-8").split(comment) old_target = target.read_text(**ENC).split(comment)
new_source = source_text.split(comment) new_source = source_text.split(comment)
target.write_text( target.write_text(
"\n".join( "\n".join(
@ -635,7 +660,7 @@ def typedoc_conf():
if json.dumps(original_entry_points) != json.dumps(new_entry_points): if json.dumps(original_entry_points) != json.dumps(new_entry_points):
typedoc["entryPoints"] = new_entry_points typedoc["entryPoints"] = new_entry_points
TYPEDOC_JSON.write_text(json.dumps(typedoc, indent=2, sort_keys=True), **ENC) TYPEDOC_JSON.write_text(json.dumps(typedoc, **JSON_FMT), **ENC)
tsconfig = json.loads(TSCONFIG_TYPEDOC.read_text(**ENC)) tsconfig = json.loads(TSCONFIG_TYPEDOC.read_text(**ENC))
original_references = tsconfig["references"] original_references = tsconfig["references"]
@ -653,9 +678,7 @@ def typedoc_conf():
if json.dumps(original_references) != json.dumps(new_references): if json.dumps(original_references) != json.dumps(new_references):
tsconfig["references"] = new_references tsconfig["references"] = new_references
TSCONFIG_TYPEDOC.write_text( TSCONFIG_TYPEDOC.write_text(json.dumps(tsconfig, **JSON_FMT), **ENC)
json.dumps(tsconfig, indent=2, sort_keys=True), **ENC
)
def mystify(): def mystify():
@ -807,11 +830,19 @@ def _build_lite():
lite = ["jupyter", "lite"] lite = ["jupyter", "lite"]
args = ["--source-date-epoch", SOURCE_DATE_EPOCH] args = ["--source-date-epoch", SOURCE_DATE_EPOCH]
for act in ["build", "check", "archive"]: try:
from jupyter_server_mathjax.app import STATIC_ASSETS_PATH as MATHJAX_DIR
except Exception:
MATHJAX_DIR = None
if MATHJAX_DIR:
args += ["--mathjax-dir", str(MATHJAX_DIR)]
for act in ["build", "archive"]:
act_args = list(map(str, [*lite, act, *args])) act_args = list(map(str, [*lite, act, *args]))
if subprocess.call(act_args, cwd=DEMO) == 0: if subprocess.call(act_args, cwd=DEMO) != 0:
continue print("FAILED", *act_args)
return False return False
def _sync_lite_config(from_env, to_json, marker, extras): def _sync_lite_config(from_env, to_json, marker, extras):
@ -819,7 +850,7 @@ def _sync_lite_config(from_env, to_json, marker, extras):
raw_lock = subprocess.check_output(["conda", "list", "--explicit"]) raw_lock = subprocess.check_output(["conda", "list", "--explicit"])
ext_packages = [ ext_packages = [
p.strip().split(" ")[0] p.strip().split(" ")[0]
for p in from_env.read_text(encoding="utf-8").split(marker)[1].split(" - ") for p in from_env.read_text(**ENC).split(marker)[1].split(" - ")
if p.strip() if p.strip()
] ]
@ -838,12 +869,37 @@ def _sync_lite_config(from_env, to_json, marker, extras):
if pkg.startswith(ext): if pkg.startswith(ext):
tarball_urls += ["/".join([CONDA_FORGE_RELEASE, subdir, pkg, pkg])] tarball_urls += ["/".join([CONDA_FORGE_RELEASE, subdir, pkg, pkg])]
config = json.loads(to_json.read_text(encoding="utf-8")) config = json.loads(to_json.read_text(**ENC))
config["LiteBuildConfig"]["federated_extensions"] = sorted(tarball_urls) config["LiteBuildConfig"]["federated_extensions"] = sorted(tarball_urls)
to_json.write_text(json.dumps(config, indent=2, sort_keys=True)) to_json.write_text(json.dumps(config, **JSON_FMT))
subprocess.call([*PRETTIER, "--write", to_json]) subprocess.call([*PRETTIER, "--write", to_json])
def fetch_pyodide_packages():
import urllib.request
url = f"{PYODIDE_URL}/packages.json"
print("fetching pyodide packages from", url)
with urllib.request.urlopen(url) as response:
packages = json.loads(response.read().decode("utf-8"))
PYODIDE_PACKAGES.parent.mkdir(exist_ok=True, parents=True)
PYODIDE_PACKAGES.write_text(json.dumps(packages, **JSON_FMT))
def fetch_wheels():
DEMO_WHEELS.mkdir(exist_ok=True, parents=True)
subprocess.check_call(
["pip", "download", "-r", str(DEMO_REQS), "--prefer-binary"],
cwd=str(DEMO_WHEELS),
)
for pkg in sorted(DEMO_WHEELS.glob("*")):
if not pkg.name.endswith(NOARCH_WHL):
pkg.unlink
continue
if any(re.findall(f"{p}-\\d", pkg.name) for p in IGNORED_WHEELS):
pkg.unlink()
# Late environment hacks # Late environment hacks
os.environ.update( os.environ.update(
CONDARC=str(CONDARC), CONDARC=str(CONDARC),

187
yarn.lock
Wyświetl plik

@ -106,14 +106,14 @@
"@jupyterlab/application" "^3.1.0" "@jupyterlab/application" "^3.1.0"
"@deathbeds/ipydrawio-webpack@file:packages/ipydrawio-webpack": "@deathbeds/ipydrawio-webpack@file:packages/ipydrawio-webpack":
version "15.7.300" version "15.8.600"
dependencies: dependencies:
"@jupyterlab/application" "^3.1.0" "@jupyterlab/application" "^3.1.0"
"@deathbeds/ipydrawio@file:packages/ipydrawio": "@deathbeds/ipydrawio@file:packages/ipydrawio":
version "1.1.2" version "1.1.2"
dependencies: dependencies:
"@deathbeds/ipydrawio-webpack" "^15.7.300" "@deathbeds/ipydrawio-webpack" "^15.8.600"
"@jupyterlab/application" "^3.1.0" "@jupyterlab/application" "^3.1.0"
"@jupyterlab/launcher" "^3.1.0" "@jupyterlab/launcher" "^3.1.0"
"@jupyterlab/mainmenu" "^3.1.0" "@jupyterlab/mainmenu" "^3.1.0"
@ -520,10 +520,10 @@
react "^17.0.1" react "^17.0.1"
y-codemirror "^2.1.1" y-codemirror "^2.1.1"
"@jupyterlab/coreutils@^5.2.0": "@jupyterlab/coreutils@^5.2.0", "@jupyterlab/coreutils@^5.2.4":
version "5.2.0" version "5.2.4"
resolved "https://registry.yarnpkg.com/@jupyterlab/coreutils/-/coreutils-5.2.0.tgz#f645c4c401118fcff4c0e46b3a7b5b379045d958" resolved "https://registry.yarnpkg.com/@jupyterlab/coreutils/-/coreutils-5.2.4.tgz#7cf858a35dc3076b77a7194c0abf1340564b1c39"
integrity sha512-bAL3Gb9bhQWlAP6kF2ElgH5tlFrzPGO9w5hRcLkVYkeOuwR6SlwcMzyv5o9XenaW4u97R3gVJ2LdXLlGz6t3aQ== integrity sha512-0QXhg8R0bkb5LILhfphE/K5k4zJI8N+fNsmy/Nr4mDo8l8mB7km6OUcbSSNuJg1mYikOhEA+UxhqE0954UgxkQ==
dependencies: dependencies:
"@lumino/coreutils" "^1.5.3" "@lumino/coreutils" "^1.5.3"
"@lumino/disposable" "^1.4.3" "@lumino/disposable" "^1.4.3"
@ -663,10 +663,10 @@
"@lumino/coreutils" "^1.5.3" "@lumino/coreutils" "^1.5.3"
"@lumino/widgets" "^1.19.0" "@lumino/widgets" "^1.19.0"
"@jupyterlab/nbformat@^3.0.0", "@jupyterlab/nbformat@^3.2.0": "@jupyterlab/nbformat@^3.0.0", "@jupyterlab/nbformat@^3.2.0", "@jupyterlab/nbformat@^3.2.4":
version "3.2.0" version "3.2.4"
resolved "https://registry.yarnpkg.com/@jupyterlab/nbformat/-/nbformat-3.2.0.tgz#162e3e7013eda4c6fe9d44966bc2203ad7f37d3e" resolved "https://registry.yarnpkg.com/@jupyterlab/nbformat/-/nbformat-3.2.4.tgz#dca9720804c949371d30227a8254de3b9feffc59"
integrity sha512-9AwwCx4tuI550YHFQQeuuOoU2F0uZX15jIkH4IK70sDDdAnG+lijB9mtDpc2cAZuxYiBT/e8Ylgwdy+ZvSxxaw== integrity sha512-tEwt+vKAQEqj2smC8B5Myg693/5md3T9Nm3BM3Ix2NYqioCLlnGJ+aYQaOx1bsjyYWGLH/liW26O0NAUB3oEWg==
dependencies: dependencies:
"@lumino/coreutils" "^1.5.3" "@lumino/coreutils" "^1.5.3"
@ -699,10 +699,10 @@
"@lumino/widgets" "^1.19.0" "@lumino/widgets" "^1.19.0"
react "^17.0.1" react "^17.0.1"
"@jupyterlab/observables@^4.2.0": "@jupyterlab/observables@^4.2.0", "@jupyterlab/observables@^4.2.4":
version "4.2.0" version "4.2.4"
resolved "https://registry.yarnpkg.com/@jupyterlab/observables/-/observables-4.2.0.tgz#062b3bedab6ccb9eda42d40851e324c173ceaaa5" resolved "https://registry.yarnpkg.com/@jupyterlab/observables/-/observables-4.2.4.tgz#77be638b9a8b660576087151e275b9e08239dd4a"
integrity sha512-4Tirqme6KguTxV7odl0wFO5jbSZv1J/c9zlwFD6d111B0Xa+btZJWtpfu90jtYMUW0yYgMkHuNbXEFY7yjBu6Q== integrity sha512-9b1a2+Tmda/Jr8oLMpMhQJAEpMRgILo8unjTnpMCb9RZgOZAwMRs+vItNqrjrapa4OO1vhIFVRWWqmxa5vz/6Q==
dependencies: dependencies:
"@lumino/algorithm" "^1.3.3" "@lumino/algorithm" "^1.3.3"
"@lumino/coreutils" "^1.5.3" "@lumino/coreutils" "^1.5.3"
@ -731,11 +731,11 @@
resize-observer-polyfill "^1.5.1" resize-observer-polyfill "^1.5.1"
"@jupyterlab/rendermime-interfaces@^3.0.0", "@jupyterlab/rendermime-interfaces@^3.2.0": "@jupyterlab/rendermime-interfaces@^3.0.0", "@jupyterlab/rendermime-interfaces@^3.2.0":
version "3.2.0" version "3.2.4"
resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime-interfaces/-/rendermime-interfaces-3.2.0.tgz#ef7161b4a743c7ad1b33e53979b264860d150d36" resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime-interfaces/-/rendermime-interfaces-3.2.4.tgz#671e52465fa4e8fba54faafb21642b9dffea45f5"
integrity sha512-TFapppF4XqbL7G6LS4jrY1m9iXFNAJR8uS+bR0YcBet4a5n54P4bfD7N9LCiCtCw/aFCEK5Hq15YwepAJCLG3w== integrity sha512-/zVDeW2ZaRMzQW0EFj5v/hjpJNSDfhJfbx96rprYZC8d0qEvm3Bxyyda4CvsRhmaJKMTAQLW+oOEBn1kNbFTmg==
dependencies: dependencies:
"@jupyterlab/translation" "^3.2.0" "@jupyterlab/translation" "^3.2.4"
"@lumino/coreutils" "^1.5.3" "@lumino/coreutils" "^1.5.3"
"@lumino/widgets" "^1.19.0" "@lumino/widgets" "^1.19.0"
@ -760,16 +760,16 @@
lodash.escape "^4.0.1" lodash.escape "^4.0.1"
marked "^2.0.0" marked "^2.0.0"
"@jupyterlab/services@^6.0.0", "@jupyterlab/services@^6.2.0": "@jupyterlab/services@^6.0.0", "@jupyterlab/services@^6.2.0", "@jupyterlab/services@^6.2.4":
version "6.2.0" version "6.2.4"
resolved "https://registry.yarnpkg.com/@jupyterlab/services/-/services-6.2.0.tgz#789d79d1742e58a2a0fb7be5be99a5c841290fe7" resolved "https://registry.yarnpkg.com/@jupyterlab/services/-/services-6.2.4.tgz#bf6262f9807bbf341d02532736607c9fa085fd58"
integrity sha512-/Pf/qjYzSOsfUIVy1om5OYISodXIdwo7CmgB61ShQMLimmK1cCZjeFPz6pVk+k9bMQf2YzFohPJsxWyp/VmaIg== integrity sha512-WpcKLDkwpq9jUQXUWJJn1cybxwwe8YMC8fdkVnI7RmCg5n0tGSV8+urfUv5Q8DdMdkAJnzSHEC6kIRbGoFpceQ==
dependencies: dependencies:
"@jupyterlab/coreutils" "^5.2.0" "@jupyterlab/coreutils" "^5.2.4"
"@jupyterlab/nbformat" "^3.2.0" "@jupyterlab/nbformat" "^3.2.4"
"@jupyterlab/observables" "^4.2.0" "@jupyterlab/observables" "^4.2.4"
"@jupyterlab/settingregistry" "^3.2.0" "@jupyterlab/settingregistry" "^3.2.4"
"@jupyterlab/statedb" "^3.2.0" "@jupyterlab/statedb" "^3.2.4"
"@lumino/algorithm" "^1.3.3" "@lumino/algorithm" "^1.3.3"
"@lumino/coreutils" "^1.5.3" "@lumino/coreutils" "^1.5.3"
"@lumino/disposable" "^1.4.3" "@lumino/disposable" "^1.4.3"
@ -778,12 +778,12 @@
node-fetch "^2.6.0" node-fetch "^2.6.0"
ws "^7.4.6" ws "^7.4.6"
"@jupyterlab/settingregistry@^3.0.0", "@jupyterlab/settingregistry@^3.2.0": "@jupyterlab/settingregistry@^3.0.0", "@jupyterlab/settingregistry@^3.2.0", "@jupyterlab/settingregistry@^3.2.4":
version "3.2.0" version "3.2.4"
resolved "https://registry.yarnpkg.com/@jupyterlab/settingregistry/-/settingregistry-3.2.0.tgz#318aa082a8c6567c14b6b7a8e82f304e561876e3" resolved "https://registry.yarnpkg.com/@jupyterlab/settingregistry/-/settingregistry-3.2.4.tgz#6d863891702769769c4840435602206be06e84a6"
integrity sha512-2EO7guw4K2uWOj/mNk9u/meGaSSoplMqgwZgSqqHdwYCbacmhDKOXIzPimwrLwpj8HsNiwb51GXAuntFIPzcoQ== integrity sha512-kyr6y32YTD4S2XGthy17yRa6BdEQyuXqIl2hIKrn9oPdfM0OF3TDkAByB8W79KLQojsKcmGka19LvQov/N4+6A==
dependencies: dependencies:
"@jupyterlab/statedb" "^3.2.0" "@jupyterlab/statedb" "^3.2.4"
"@lumino/commands" "^1.12.0" "@lumino/commands" "^1.12.0"
"@lumino/coreutils" "^1.5.3" "@lumino/coreutils" "^1.5.3"
"@lumino/disposable" "^1.4.3" "@lumino/disposable" "^1.4.3"
@ -803,10 +803,10 @@
y-protocols "^1.0.5" y-protocols "^1.0.5"
yjs "^13.5.6" yjs "^13.5.6"
"@jupyterlab/statedb@^3.2.0": "@jupyterlab/statedb@^3.2.0", "@jupyterlab/statedb@^3.2.4":
version "3.2.0" version "3.2.4"
resolved "https://registry.yarnpkg.com/@jupyterlab/statedb/-/statedb-3.2.0.tgz#a243850bd20085979ec2e1111959d97106d0ba79" resolved "https://registry.yarnpkg.com/@jupyterlab/statedb/-/statedb-3.2.4.tgz#6581223bf4aac29f2aa8c2fe99e6307c7b88a8a8"
integrity sha512-fVyOcW2O9ERUyA0G9nLIW1+GSS7NKP6G/i5lOdJ24GwxcPnhQMXACCkD+41P5L/ILok2adHwPKbKt3V+VheY+w== integrity sha512-md9AlnrW1pzZTQiVUIJrZgijB3CsSs2J05V5cywo4/sgjwBTO1YGKQDEi6qtMAeO03gxfomGK7xLpoP+2Uaa2A==
dependencies: dependencies:
"@lumino/commands" "^1.12.0" "@lumino/commands" "^1.12.0"
"@lumino/coreutils" "^1.5.3" "@lumino/coreutils" "^1.5.3"
@ -834,14 +834,14 @@
react "^17.0.1" react "^17.0.1"
typestyle "^2.0.4" typestyle "^2.0.4"
"@jupyterlab/translation@^3.2.0": "@jupyterlab/translation@^3.2.0", "@jupyterlab/translation@^3.2.4":
version "3.2.0" version "3.2.4"
resolved "https://registry.yarnpkg.com/@jupyterlab/translation/-/translation-3.2.0.tgz#063221ca7f6772eae407148fa01a421273171c18" resolved "https://registry.yarnpkg.com/@jupyterlab/translation/-/translation-3.2.4.tgz#948c548f304c5d2d18878f2a578c8cee5ea43ef4"
integrity sha512-ZdWKA3QsJlvWVzKdEqbSkXwJzAkHZGv2pZobLksWNDDdcIcZ3PZg/vpPZ40pZdNE5b3Xz14/cDw2bfOCILoSzg== integrity sha512-FTXhNw/KRmGGR/stWWyaeyyha3Y7k1jh/dVJIXMO5xlT+zzFHvquGCiMeMZR20P+xBDstrgX8Ei/LhG+gkx0yw==
dependencies: dependencies:
"@jupyterlab/coreutils" "^5.2.0" "@jupyterlab/coreutils" "^5.2.4"
"@jupyterlab/services" "^6.2.0" "@jupyterlab/services" "^6.2.4"
"@jupyterlab/statedb" "^3.2.0" "@jupyterlab/statedb" "^3.2.4"
"@lumino/coreutils" "^1.5.3" "@lumino/coreutils" "^1.5.3"
"@jupyterlab/ui-components@^3.2.0": "@jupyterlab/ui-components@^3.2.0":
@ -2418,10 +2418,10 @@ ansi-regex@^4.1.0:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
ansi-regex@^5.0.0: ansi-regex@^5.0.1:
version "5.0.0" version "5.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
ansi-styles@^3.2.0, ansi-styles@^3.2.1: ansi-styles@^3.2.0, ansi-styles@^3.2.1:
version "3.2.1" version "3.2.1"
@ -3399,11 +3399,16 @@ copy-descriptor@^0.1.0:
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
core-util-is@1.0.2, core-util-is@~1.0.0: core-util-is@1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
core-util-is@~1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
cors@2.8.5: cors@2.8.5:
version "2.8.5" version "2.8.5"
resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29"
@ -4949,7 +4954,19 @@ glob@^6.0.1:
once "^1.3.0" once "^1.3.0"
path-is-absolute "^1.0.0" path-is-absolute "^1.0.0"
glob@^7.0.0, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.1.6: glob@^7.0.0, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
version "7.2.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.0.4"
once "^1.3.0"
path-is-absolute "^1.0.0"
glob@~7.1.6:
version "7.1.7" version "7.1.7"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==
@ -5625,9 +5642,9 @@ is-glob@^3.1.0:
is-extglob "^2.1.0" is-extglob "^2.1.0"
is-glob@^4.0.0, is-glob@^4.0.1: is-glob@^4.0.0, is-glob@^4.0.1:
version "4.0.1" version "4.0.3"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
dependencies: dependencies:
is-extglob "^2.1.1" is-extglob "^2.1.1"
@ -6678,17 +6695,17 @@ micromatch@^4.0.4:
braces "^3.0.1" braces "^3.0.1"
picomatch "^2.2.3" picomatch "^2.2.3"
mime-db@1.49.0, "mime-db@>= 1.43.0 < 2": mime-db@1.51.0, "mime-db@>= 1.43.0 < 2":
version "1.49.0" version "1.51.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c"
integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==
mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19, mime-types@~2.1.24: mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19, mime-types@~2.1.24:
version "2.1.32" version "2.1.34"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24"
integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==
dependencies: dependencies:
mime-db "1.49.0" mime-db "1.51.0"
mime@1.6.0: mime@1.6.0:
version "1.6.0" version "1.6.0"
@ -7004,9 +7021,11 @@ node-fetch-npm@^2.0.2:
safe-buffer "^5.1.1" safe-buffer "^5.1.1"
node-fetch@^2.5.0, node-fetch@^2.6.0, node-fetch@^2.6.1: node-fetch@^2.5.0, node-fetch@^2.6.0, node-fetch@^2.6.1:
version "2.6.1" version "2.6.6"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.6.tgz#1751a7c01834e8e1697758732e9efb6eeadfaf89"
integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== integrity sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==
dependencies:
whatwg-url "^5.0.0"
node-gyp-build@~4.1.0: node-gyp-build@~4.1.0:
version "4.1.1" version "4.1.1"
@ -8756,9 +8775,9 @@ side-channel@^1.0.4:
object-inspect "^1.9.0" object-inspect "^1.9.0"
signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3:
version "3.0.3" version "3.0.5"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.5.tgz#9e3e8cc0c75a99472b44321033a7702e7738252f"
integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== integrity sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==
slash@^2.0.0: slash@^2.0.0:
version "2.0.0" version "2.0.0"
@ -9079,13 +9098,13 @@ string-width@^3.0.0, string-width@^3.1.0:
strip-ansi "^5.1.0" strip-ansi "^5.1.0"
string-width@^4.1.0, string-width@^4.2.0: string-width@^4.1.0, string-width@^4.2.0:
version "4.2.2" version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
dependencies: dependencies:
emoji-regex "^8.0.0" emoji-regex "^8.0.0"
is-fullwidth-code-point "^3.0.0" is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.0" strip-ansi "^6.0.1"
string.prototype.matchall@^4.0.5: string.prototype.matchall@^4.0.5:
version "4.0.5" version "4.0.5"
@ -9152,12 +9171,12 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
dependencies: dependencies:
ansi-regex "^4.1.0" ansi-regex "^4.1.0"
strip-ansi@^6.0.0: strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.0" version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
dependencies: dependencies:
ansi-regex "^5.0.0" ansi-regex "^5.0.1"
strip-bom@^2.0.0: strip-bom@^2.0.0:
version "2.0.0" version "2.0.0"
@ -9504,6 +9523,11 @@ tr46@^1.0.1:
dependencies: dependencies:
punycode "^2.1.0" punycode "^2.1.0"
tr46@~0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
trim-newlines@^1.0.0: trim-newlines@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
@ -10000,6 +10024,11 @@ wcwidth@^1.0.0:
dependencies: dependencies:
defaults "^1.0.3" defaults "^1.0.3"
webidl-conversions@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
webidl-conversions@^4.0.2: webidl-conversions@^4.0.2:
version "4.0.2" version "4.0.2"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
@ -10087,6 +10116,14 @@ whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0:
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
whatwg-url@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0=
dependencies:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"
whatwg-url@^7.0.0: whatwg-url@^7.0.0:
version "7.1.0" version "7.1.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06"