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

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

@ -10,9 +10,9 @@
#### @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
@ -20,6 +20,9 @@
#### @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
## Releases

1
demo/.gitignore vendored
Wyświetl plik

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

Wyświetl plik

@ -1,6 +1,5 @@
{
"LiteBuildConfig": {
"contents": ["."],
"federated_extensions": [
"../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",
@ -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_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,
"lite_dir": ".",
"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:
### ipydrawio-docs-deps ###
- jupyter-server-mathjax
- myst-nb
- pkginfo
- pydata-sphinx-theme
- pytest-check-links
- sphinx
- sphinx-jsonschema
- sphinxext-rediraffe
- pip:
- jupyterlite ==0.1.0a16
- jupyterlite ==0.1.0a17
### ipydrawio-docs-deps ###
@ -44,7 +46,7 @@ dependencies:
- python # this gets patched in ci
# run
- ipywidgets >=7.6
- jupyterlab >=3.1.9,<4.0.0a0
- jupyterlab >=3.2.4,<4.0.0a0
- jupyterlab_widgets >=1
- lxml
- pillow
@ -65,6 +67,7 @@ dependencies:
- pytest
- pytest-console-scripts
- pytest-cov
- pytest-html
- pytest-tornasync
# acceptance testing
- firefox =91

80
dodo.py
Wyświetl plik

@ -131,6 +131,19 @@ def task_setup():
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():
# TODO: refactor
ext_deps = [
@ -495,6 +508,10 @@ def task_build():
]
)
)
if py_setup.parent == P.IPDE:
file_dep += [P.IPDE_DIE2_YARN_LOCK]
yield dict(
name=f"sdist:{py_pkg}",
file_dep=file_dep,
@ -683,6 +700,27 @@ def task_demo():
print("jupyterlite not found, this might be okay", flush=True)
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(
name="extensions",
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:
name = f"stage:{path.name}"
dest = P.DEMO / path.name.replace(" ", "_")
dest = P.DEMO_FILES / path.name.replace(" ", "_")
demo_dest += [dest]
demo_tasks += [f"demo:{name}"]
final_dest += [P.DEMO_BUILD / f"files/{path.name}"]
@ -721,19 +756,10 @@ def task_demo():
assert final_dest
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(
name="archive",
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],
actions=[P._build_lite],
)
@ -861,13 +887,12 @@ def task_provision():
)
def _pytest(setup_py):
def _test():
subprocess.check_call(
[*P.PYM, "pytest", *P.PYTEST_ARGS], shell=False, cwd=str(setup_py.parent)
)
return _test
def _pytest(setup_py, *pytest_args):
return CmdAction(
[*P.PYM, "pytest", *P.PYTEST_ARGS, *pytest_args],
shell=False,
cwd=str(setup_py.parent),
)
def task_test():
@ -892,6 +917,13 @@ def task_test():
)
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(
dict(
name=f"pytest:{pkg}",
@ -903,7 +935,11 @@ def task_test():
P.OK_PROVISION,
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],
)

Wyświetl plik

@ -1,10 +1,8 @@
*.tgz
**/.ipynb_checkpoints
dio/.git*
dio/*.json
dio/*.md
dio/*/.npmignore
dio/*/*.json
dio/*/*.orig
dio/connect/*
dio/dropbox*
@ -17,6 +15,7 @@ dio/math/jax/output/HTML-CSS/*
dio/META-INF/*
dio/onedrive*
dio/onedrive*.html
dio/package.json
dio/WEB-INF/*
dio/yarn.lock
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/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-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/hs.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-white.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/mstile-150x150.png';
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"
},
"types": "lib/index.d.ts",
"version": "15.7.300"
"version": "15.8.600"
}

Wyświetl plik

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

Wyświetl plik

@ -8,7 +8,7 @@
"@jupyterlab/application": "^3.1.0",
"@jupyterlab/launcher": "^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.",
"devDependencies": {

Wyświetl plik

@ -76,6 +76,7 @@ export class Diagram extends IFrame {
private _app: IMXApp;
private _appChanged = new Signal<Diagram, void>(this);
private _escaped = new Signal<Diagram, void>(this);
private _loaded = new Signal<Diagram, void>(this);
constructor(options: Diagram.IOptions) {
super({ sandbox: SANDBOX_EXCEPTIONS, ...options });
@ -135,6 +136,13 @@ export class Diagram extends IFrame {
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
*/
@ -165,25 +173,19 @@ export class Diagram extends IFrame {
break;
case 'load':
this.app = (this._frame?.contentWindow as any).IPYDRAWIO_APP;
this._ready.resolve(void 0);
this._initialLoad = true;
this.addClass(READY_CLASS);
if (!this._initialLoad) {
this.onSaveMsg(msg);
}
this._initialLoad = true;
this._loaded.emit(void 0);
this._ready.resolve(void 0);
break;
case 'save':
if (this.format?.isTransformed) {
this.saveWithExport(true);
break;
}
this._lastEmitted = msg.xml;
this.save(msg.xml, true);
this.onSaveMsg(msg, true);
break;
case 'autosave':
if (this.adapter.saveNeedsExport()) {
this.saveWithExport();
break;
}
this._lastEmitted = msg.xml;
this.save(msg.xml);
this.onSaveMsg(msg);
break;
case 'export':
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
*/

Wyświetl plik

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

Wyświetl plik

@ -1,6 +1,7 @@
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/ext *.*
recursive-include src/ipydrawio_export/tests/fixtures *.*
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-branch
--cov-report term-missing:skip-covered
--cov-report html
--no-cov-on-fail
[isort]
combine_as_imports = True

Wyświetl plik

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

Wyświetl plik

@ -269,6 +269,8 @@ class IPyDrawioExportManager(LoggingConfigurable):
for diagram in self.extract_diagrams(pdf_request):
tree.append(diagram)
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"]))
if wrote:
merger.append(PdfFileReader(str(next_pdf)))
@ -362,7 +364,8 @@ class IPyDrawioExportManager(LoggingConfigurable):
self.drawio_export_app,
)
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

Wyświetl plik

@ -43,8 +43,10 @@ def test_export_merged(tmp_path, export_app, empty_dio, svg, png, ipynb, attach_
export_app.start()
out = tmp_path / f"{empty_dio.stem}.pdf"
assert out.exists(), f"{out} was not created"
reader = PdfFileReader(str(out), "rb")
assert reader.getNumPages() == 4
assert reader.getNumPages() == 4, "unexpected number of pages"
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-branch
--cov-report term-missing:skip-covered
--cov-report html
--no-cov-on-fail
[isort]
combine_as_imports = True

Wyświetl plik

@ -76,6 +76,16 @@ def _clean(*paths_or_globs):
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
@ -86,6 +96,7 @@ OSX = PLATFORM == "Darwin"
UNIX = not WIN
PREFIX = Path(sys.prefix)
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")))
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
JS_PKG_JSON = {p.parent.name: p for p in PACKAGES.glob("*/package.json")}
JS_PKG_DATA = {
k: json.loads(v.read_text(encoding="utf-8")) for k, v in JS_PKG_JSON.items()
}
JS_PKG_DATA = {k: json.loads(v.read_text(**ENC)) for k, v in JS_PKG_JSON.items()}
JS_PKG_JSON_LABEXT = {
k: v
@ -310,6 +319,10 @@ PY_VERSION = {
IPD = PY_SETUP["ipydrawio"].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"]
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"
FED_EXT_MARKER = "### FEDERATED EXTENSIONS ###"
DEMO = ROOT / "demo"
DEMO_FILES = DEMO / "files"
DEMO_CONFIG = DEMO / "jupyter_lite_config.json"
DEMO_REQS = DEMO / "requirements.txt"
DEMO_APPS = ["lab"]
DEMO_BUILD = BUILD / "demo"
DEMO_HASHES = DEMO_BUILD / "SHA256SUMS"
@ -347,6 +362,12 @@ DEMO_CONTENTS_API = DEMO_BUILD / "api/contents/all.json"
DEMO_ARCHIVE = (
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
SPHINX_ARGS = json.loads(os.environ.get("SPHINX_ARGS", "[]"))
@ -421,7 +442,11 @@ ALL_JSON = [
*PACKAGES.glob("*/schema/*.json"),
*ATEST.glob("fixtures/*.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_MD = [*ROOT.glob("*.md"), *PACKAGES.glob("*/*.md"), *DOCS_MD]
@ -596,10 +621,10 @@ def fetch_one(url, path):
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]
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)
target.write_text(
"\n".join(
@ -635,7 +660,7 @@ def typedoc_conf():
if json.dumps(original_entry_points) != json.dumps(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))
original_references = tsconfig["references"]
@ -653,9 +678,7 @@ def typedoc_conf():
if json.dumps(original_references) != json.dumps(new_references):
tsconfig["references"] = new_references
TSCONFIG_TYPEDOC.write_text(
json.dumps(tsconfig, indent=2, sort_keys=True), **ENC
)
TSCONFIG_TYPEDOC.write_text(json.dumps(tsconfig, **JSON_FMT), **ENC)
def mystify():
@ -807,11 +830,19 @@ def _build_lite():
lite = ["jupyter", "lite"]
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]))
if subprocess.call(act_args, cwd=DEMO) == 0:
continue
return False
if subprocess.call(act_args, cwd=DEMO) != 0:
print("FAILED", *act_args)
return False
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"])
ext_packages = [
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()
]
@ -838,12 +869,37 @@ def _sync_lite_config(from_env, to_json, marker, extras):
if pkg.startswith(ext):
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)
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])
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
os.environ.update(
CONDARC=str(CONDARC),

187
yarn.lock
Wyświetl plik

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