From 2f320bb5d3ad315af2a0610d63136b11a32fce49 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Fri, 3 Jan 2025 15:02:43 -0800 Subject: [PATCH 01/30] New repo structure --- .github/FUNDING.yml | 2 +- .gitignore | 4 + .vscode/extensions.json | 12 - LICENSE | 21 - LICENSE.md | 9 + pyproject.toml | 213 ++++++-- src/build_scripts/copy_js_output.py | 8 + src/py/reactpy/.gitignore | 5 - src/py/reactpy/MANIFEST.in | 3 - src/py/reactpy/README.md | 23 - src/py/reactpy/pyproject.toml | 158 ------ src/py/reactpy/scripts/copy_js_output.py | 8 - src/{py/reactpy => }/reactpy/__init__.py | 0 src/{py/reactpy => }/reactpy/__main__.py | 0 .../reactpy => }/reactpy/_console/__init__.py | 0 .../reactpy/_console/ast_utils.py | 0 .../_console/rewrite_camel_case_props.py | 0 .../reactpy/_console/rewrite_keys.py | 0 src/{py/reactpy => }/reactpy/_option.py | 0 src/{py/reactpy => }/reactpy/_warnings.py | 0 .../reactpy => }/reactpy/backend/__init__.py | 0 .../reactpy => }/reactpy/backend/_common.py | 2 +- .../reactpy => }/reactpy/backend/default.py | 0 .../reactpy => }/reactpy/backend/fastapi.py | 0 src/{py/reactpy => }/reactpy/backend/flask.py | 0 src/{py/reactpy => }/reactpy/backend/hooks.py | 0 src/{py/reactpy => }/reactpy/backend/sanic.py | 0 .../reactpy => }/reactpy/backend/starlette.py | 0 .../reactpy => }/reactpy/backend/tornado.py | 0 src/{py/reactpy => }/reactpy/backend/types.py | 0 src/{py/reactpy => }/reactpy/backend/utils.py | 0 src/{py/reactpy => }/reactpy/config.py | 0 src/{py/reactpy => }/reactpy/core/__init__.py | 0 src/{py/reactpy => }/reactpy/core/_f_back.py | 0 .../reactpy/core/_life_cycle_hook.py | 0 .../reactpy/core/_thread_local.py | 0 .../reactpy => }/reactpy/core/component.py | 0 src/{py/reactpy => }/reactpy/core/events.py | 0 src/{py/reactpy => }/reactpy/core/hooks.py | 0 src/{py/reactpy => }/reactpy/core/layout.py | 0 src/{py/reactpy => }/reactpy/core/serve.py | 0 src/{py/reactpy => }/reactpy/core/types.py | 0 src/{py/reactpy => }/reactpy/core/vdom.py | 0 src/{py/reactpy => }/reactpy/future.py | 0 src/{py/reactpy => }/reactpy/html.py | 0 src/{py/reactpy => }/reactpy/logging.py | 0 src/{py/reactpy => }/reactpy/py.typed | 0 src/{py/reactpy => }/reactpy/sample.py | 0 src/{py/reactpy => }/reactpy/svg.py | 0 .../reactpy => }/reactpy/testing/__init__.py | 0 .../reactpy => }/reactpy/testing/backend.py | 0 .../reactpy => }/reactpy/testing/common.py | 0 .../reactpy => }/reactpy/testing/display.py | 0 src/{py/reactpy => }/reactpy/testing/logs.py | 0 src/{py/reactpy => }/reactpy/types.py | 0 src/{py/reactpy => }/reactpy/utils.py | 0 src/{py/reactpy => }/reactpy/web/__init__.py | 0 src/{py/reactpy => }/reactpy/web/module.py | 0 .../reactpy/web/templates/react.js | 0 src/{py/reactpy => }/reactpy/web/utils.py | 0 src/{py/reactpy => }/reactpy/widgets.py | 0 tasks.py | 458 ------------------ {src/py/reactpy/tests => tests}/__init__.py | 0 {src/py/reactpy/tests => tests}/conftest.py | 9 +- .../tests => tests}/test__console/__init__.py | 0 .../test_rewrite_camel_case_props.py | 0 .../test__console/test_rewrite_keys.py | 0 .../reactpy/tests => tests}/test__option.py | 0 .../asserts.py => tests/test_asserts.py | 2 +- .../tests => tests}/test_backend/__init__.py | 0 .../test_backend/test__common.py | 0 .../tests => tests}/test_backend/test_all.py | 0 .../test_backend/test_utils.py | 0 .../py/reactpy/tests => tests}/test_client.py | 0 .../py/reactpy/tests => tests}/test_config.py | 0 .../tests => tests}/test_core/__init__.py | 0 .../test_core/test_component.py | 0 .../tests => tests}/test_core/test_events.py | 0 .../tests => tests}/test_core/test_hooks.py | 0 .../tests => tests}/test_core/test_layout.py | 0 .../tests => tests}/test_core/test_serve.py | 0 .../tests => tests}/test_core/test_vdom.py | 0 {src/py/reactpy/tests => tests}/test_html.py | 0 .../py/reactpy/tests => tests}/test_sample.py | 0 .../reactpy/tests => tests}/test_testing.py | 0 {src/py/reactpy/tests => tests}/test_utils.py | 0 .../tests => tests}/test_web/__init__.py | 0 .../js_fixtures/component-can-have-child.js | 0 .../js_fixtures/export-resolution/index.js | 0 .../js_fixtures/export-resolution/one.js | 0 .../js_fixtures/export-resolution/two.js | 0 .../test_web/js_fixtures/exports-syntax.js | 0 .../js_fixtures/exports-two-components.js | 0 .../set-flag-when-unmount-is-called.js | 0 .../test_web/js_fixtures/simple-button.js | 0 .../tests => tests}/test_web/test_module.py | 0 .../tests => tests}/test_web/test_utils.py | 0 .../reactpy/tests => tests}/test_widgets.py | 0 .../tests => tests}/tooling/__init__.py | 0 .../py/reactpy/tests => tests}/tooling/aio.py | 0 .../reactpy/tests => tests}/tooling/common.py | 0 .../reactpy/tests => tests}/tooling/hooks.py | 0 .../reactpy/tests => tests}/tooling/layout.py | 0 .../reactpy/tests => tests}/tooling/select.py | 0 104 files changed, 203 insertions(+), 734 deletions(-) delete mode 100644 .vscode/extensions.json delete mode 100644 LICENSE create mode 100644 LICENSE.md create mode 100644 src/build_scripts/copy_js_output.py delete mode 100644 src/py/reactpy/.gitignore delete mode 100644 src/py/reactpy/MANIFEST.in delete mode 100644 src/py/reactpy/README.md delete mode 100644 src/py/reactpy/pyproject.toml delete mode 100644 src/py/reactpy/scripts/copy_js_output.py rename src/{py/reactpy => }/reactpy/__init__.py (100%) rename src/{py/reactpy => }/reactpy/__main__.py (100%) rename src/{py/reactpy => }/reactpy/_console/__init__.py (100%) rename src/{py/reactpy => }/reactpy/_console/ast_utils.py (100%) rename src/{py/reactpy => }/reactpy/_console/rewrite_camel_case_props.py (100%) rename src/{py/reactpy => }/reactpy/_console/rewrite_keys.py (100%) rename src/{py/reactpy => }/reactpy/_option.py (100%) rename src/{py/reactpy => }/reactpy/_warnings.py (100%) rename src/{py/reactpy => }/reactpy/backend/__init__.py (100%) rename src/{py/reactpy => }/reactpy/backend/_common.py (98%) rename src/{py/reactpy => }/reactpy/backend/default.py (100%) rename src/{py/reactpy => }/reactpy/backend/fastapi.py (100%) rename src/{py/reactpy => }/reactpy/backend/flask.py (100%) rename src/{py/reactpy => }/reactpy/backend/hooks.py (100%) rename src/{py/reactpy => }/reactpy/backend/sanic.py (100%) rename src/{py/reactpy => }/reactpy/backend/starlette.py (100%) rename src/{py/reactpy => }/reactpy/backend/tornado.py (100%) rename src/{py/reactpy => }/reactpy/backend/types.py (100%) rename src/{py/reactpy => }/reactpy/backend/utils.py (100%) rename src/{py/reactpy => }/reactpy/config.py (100%) rename src/{py/reactpy => }/reactpy/core/__init__.py (100%) rename src/{py/reactpy => }/reactpy/core/_f_back.py (100%) rename src/{py/reactpy => }/reactpy/core/_life_cycle_hook.py (100%) rename src/{py/reactpy => }/reactpy/core/_thread_local.py (100%) rename src/{py/reactpy => }/reactpy/core/component.py (100%) rename src/{py/reactpy => }/reactpy/core/events.py (100%) rename src/{py/reactpy => }/reactpy/core/hooks.py (100%) rename src/{py/reactpy => }/reactpy/core/layout.py (100%) rename src/{py/reactpy => }/reactpy/core/serve.py (100%) rename src/{py/reactpy => }/reactpy/core/types.py (100%) rename src/{py/reactpy => }/reactpy/core/vdom.py (100%) rename src/{py/reactpy => }/reactpy/future.py (100%) rename src/{py/reactpy => }/reactpy/html.py (100%) rename src/{py/reactpy => }/reactpy/logging.py (100%) rename src/{py/reactpy => }/reactpy/py.typed (100%) rename src/{py/reactpy => }/reactpy/sample.py (100%) rename src/{py/reactpy => }/reactpy/svg.py (100%) rename src/{py/reactpy => }/reactpy/testing/__init__.py (100%) rename src/{py/reactpy => }/reactpy/testing/backend.py (100%) rename src/{py/reactpy => }/reactpy/testing/common.py (100%) rename src/{py/reactpy => }/reactpy/testing/display.py (100%) rename src/{py/reactpy => }/reactpy/testing/logs.py (100%) rename src/{py/reactpy => }/reactpy/types.py (100%) rename src/{py/reactpy => }/reactpy/utils.py (100%) rename src/{py/reactpy => }/reactpy/web/__init__.py (100%) rename src/{py/reactpy => }/reactpy/web/module.py (100%) rename src/{py/reactpy => }/reactpy/web/templates/react.js (100%) rename src/{py/reactpy => }/reactpy/web/utils.py (100%) rename src/{py/reactpy => }/reactpy/widgets.py (100%) delete mode 100644 tasks.py rename {src/py/reactpy/tests => tests}/__init__.py (100%) rename {src/py/reactpy/tests => tests}/conftest.py (89%) rename {src/py/reactpy/tests => tests}/test__console/__init__.py (100%) rename {src/py/reactpy/tests => tests}/test__console/test_rewrite_camel_case_props.py (100%) rename {src/py/reactpy/tests => tests}/test__console/test_rewrite_keys.py (100%) rename {src/py/reactpy/tests => tests}/test__option.py (100%) rename src/py/reactpy/tests/tooling/asserts.py => tests/test_asserts.py (83%) rename {src/py/reactpy/tests => tests}/test_backend/__init__.py (100%) rename {src/py/reactpy/tests => tests}/test_backend/test__common.py (100%) rename {src/py/reactpy/tests => tests}/test_backend/test_all.py (100%) rename {src/py/reactpy/tests => tests}/test_backend/test_utils.py (100%) rename {src/py/reactpy/tests => tests}/test_client.py (100%) rename {src/py/reactpy/tests => tests}/test_config.py (100%) rename {src/py/reactpy/tests => tests}/test_core/__init__.py (100%) rename {src/py/reactpy/tests => tests}/test_core/test_component.py (100%) rename {src/py/reactpy/tests => tests}/test_core/test_events.py (100%) rename {src/py/reactpy/tests => tests}/test_core/test_hooks.py (100%) rename {src/py/reactpy/tests => tests}/test_core/test_layout.py (100%) rename {src/py/reactpy/tests => tests}/test_core/test_serve.py (100%) rename {src/py/reactpy/tests => tests}/test_core/test_vdom.py (100%) rename {src/py/reactpy/tests => tests}/test_html.py (100%) rename {src/py/reactpy/tests => tests}/test_sample.py (100%) rename {src/py/reactpy/tests => tests}/test_testing.py (100%) rename {src/py/reactpy/tests => tests}/test_utils.py (100%) rename {src/py/reactpy/tests => tests}/test_web/__init__.py (100%) rename {src/py/reactpy/tests => tests}/test_web/js_fixtures/component-can-have-child.js (100%) rename {src/py/reactpy/tests => tests}/test_web/js_fixtures/export-resolution/index.js (100%) rename {src/py/reactpy/tests => tests}/test_web/js_fixtures/export-resolution/one.js (100%) rename {src/py/reactpy/tests => tests}/test_web/js_fixtures/export-resolution/two.js (100%) rename {src/py/reactpy/tests => tests}/test_web/js_fixtures/exports-syntax.js (100%) rename {src/py/reactpy/tests => tests}/test_web/js_fixtures/exports-two-components.js (100%) rename {src/py/reactpy/tests => tests}/test_web/js_fixtures/set-flag-when-unmount-is-called.js (100%) rename {src/py/reactpy/tests => tests}/test_web/js_fixtures/simple-button.js (100%) rename {src/py/reactpy/tests => tests}/test_web/test_module.py (100%) rename {src/py/reactpy/tests => tests}/test_web/test_utils.py (100%) rename {src/py/reactpy/tests => tests}/test_widgets.py (100%) rename {src/py/reactpy/tests => tests}/tooling/__init__.py (100%) rename {src/py/reactpy/tests => tests}/tooling/aio.py (100%) rename {src/py/reactpy/tests => tests}/tooling/common.py (100%) rename {src/py/reactpy/tests => tests}/tooling/hooks.py (100%) rename {src/py/reactpy/tests => tests}/tooling/layout.py (100%) rename {src/py/reactpy/tests => tests}/tooling/select.py (100%) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index e01b3e624..74094ade3 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,6 +1,6 @@ # These are supported funding model platforms -github: [rmorshea] +github: [archmonger, rmorshea] patreon: # Replace with a single Patreon username open_collective: # Replace with a single Open Collective username ko_fi: # Replace with a single Ko-fi username diff --git a/.gitignore b/.gitignore index 946bff43f..aee96f2f6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# --- Build Artifacts --- +src/reactpy/static + # --- Jupyter --- *.ipynb_checkpoints *Untitled*.ipynb @@ -29,6 +32,7 @@ pip-wheel-metadata .python-version # -- Python Tests --- +.coverage.* *.coverage *.pytest_cache *.mypy_cache diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index 7471953dc..000000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "recommendations": [ - "wholroyd.jinja", - "esbenp.prettier-vscode", - "ms-python.vscode-pylance", - "ms-python.python", - "charliermarsh.ruff", - "dbaeumer.vscode-eslint", - "ms-python.black-formatter", - "ms-python.mypy-type-checker" - ] -} diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 060079c01..000000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2019 Ryan S. Morshead - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 000000000..f5423c3d3 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,9 @@ +## The MIT License (MIT) + +#### Copyright (c) Reactive Python and affiliates. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/pyproject.toml b/pyproject.toml index 1745a3dfe..9f90c969d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,66 +1,187 @@ -# --- Project ---------------------------------------------------------------------------- +[build-system] +build-backend = "hatchling.build" +requires = ["hatchling", "hatch-build-scripts"] + +############################## +# >>> Hatch Build Config <<< # +############################## [project] -name = "scripts" -version = "0.0.0" -description = "Scripts for managing the ReactPy repository" +name = "reactpy" +description = "It's React, but in Python." +readme = "README.md" +keywords = ["react", "javascript", "reactpy", "component"] +license = "MIT" +authors = [{ name = "Ryan Morshead", email = "ryan.morshead@gmail.com" }] +requires-python = ">=3.9" +classifiers = [ + "Development Status :: 4 - Beta", + "Programming Language :: Python", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", +] +dependencies = [ + "exceptiongroup >=1.0", + "typing-extensions >=3.10", + "mypy-extensions >=0.4.3", + "anyio >=3", + "jsonpatch >=1.32", + "fastjsonschema >=2.14.5", + "requests >=2", + "colorlog >=6", + "asgiref >=3", + "lxml >=4", +] +dynamic = ["version"] +urls.Changelog = "https://reactpy.dev/docs/about/changelog.html" +urls.Documentation = "https://reactpy.dev/" +urls.Source = "https://github.com/reactive-python/reactpy" + +[tool.hatch.version] +path = "src/reactpy/__init__.py" + +[tool.hatch.build.targets.sdist] +include = ["/src"] +artifacts = ["/src/reactpy/static/"] -# --- Hatch ---------------------------------------------------------------------------- +[tool.hatch.build.targets.wheel] +artifacts = ["/src/reactpy/static/"] + +[tool.hatch.metadata] +license-files = { paths = ["LICENSE.md"] } [tool.hatch.envs.default] -detached = true -dependencies = [ - "invoke", - # lint - "black==24.1.1", # Pin lint tools we don't control to avoid breaking changes - "ruff==0.0.278", # Pin lint tools we don't control to avoid breaking changes - "toml", - "flake8==7.0.0", # Pin lint tools we don't control to avoid breaking changes - "flake8-pyproject", - # types - "mypy", - "types-toml", - # publish - "semver >=2, <3", - "twine", - "pre-commit", +installer = "uv" + +[[tool.hatch.build.hooks.build-scripts.scripts]] +# TODO: Nuke NPM from the repo +commands = [ + # TODO: Need to build JS here. Try switching to bun. + "cd src && cd js && npm install && npm run build", + "cd scripts && python copy_js_output.py", +] +artifacts = [] + +[project.optional-dependencies] +# TODO: Nuke backends from the optional deps +all = ["reactpy[starlette,sanic,fastapi,flask,tornado,testing]"] +starlette = ["starlette >=0.13.6", "uvicorn[standard] >=0.19.0"] +sanic = [ + "sanic>=21", + "sanic-cors", + "tracerite>=1.1.1", + "setuptools", + "uvicorn[standard]>=0.19.0", ] +fastapi = ["fastapi >=0.63.0", "uvicorn[standard] >=0.19.0"] +flask = ["flask", "markupsafe>=1.1.1,<2.1", "flask-cors", "flask-sock"] +tornado = ["tornado"] +testing = ["playwright"] + + +############################# +# >>> Hatch Test Runner <<< # +############################# + +[tool.hatch.envs.hatch-test] +extra-dependencies = [ + "pytest-sugar", + "pytest-asyncio>=0.23", + "pytest-timeout", + "coverage[toml]>=6.5", + "responses", + "playwright", + # TODO: Nuke this after removing backends from deps + "sanic-testing", + # TODO: This dependency needs to be pulled out. ReactPy no longer uses this in the core logic. + "jsonpointer", +] + +[[tool.hatch.envs.hatch-test.matrix]] +python = ["3.9", "3.10", "3.11", "3.12"] + +[tool.pytest.ini_options] +addopts = """\ + --strict-config + --strict-markers + """ +testpaths = "tests" +xfail_strict = true +asyncio_mode = "auto" +log_cli_level = "INFO" +features = ["all"] [tool.hatch.envs.default.scripts] -publish = "invoke publish {args}" -docs = "invoke docs {args}" -check = ["lint-py", "lint-js", "test-py", "test-js", "test-docs"] +test-cov = "playwright install && coverage run -m pytest {args:tests}" +cov-report = [ + # "- coverage combine", + "coverage report", +] +cov = ["test-cov {args}", "cov-report"] -lint = ["lint-py", "lint-js"] -lint-py = "invoke lint-py {args}" -lint-js = "invoke lint-js {args}" +[tool.hatch.envs.default.env-vars] +REACTPY_DEBUG_MODE = "1" -test = ["test-py", "test-js", "test-docs"] -test-py = "invoke test-py {args}" -test-js = "invoke test-js" -test-docs = "invoke test-docs" +################################ +# >>> Hatch Lint Scripts <<< # +################################ -# --- Black ---------------------------------------------------------------------------- +[tool.hatch.envs.lint] +features = ["all"] +extra-dependencies = [ + "black==24.1.1", + "ruff==0.0.278", + "flake8==7.0.0", + "toml", + "flake8-pyproject", + "mypy", + "types-toml", + "mypy==1.8", + "types-click", + "types-tornado", + "types-flask", + "types-requests", +] -[tool.black] -target-version = ["py39"] -line-length = 88 +[tool.hatch.envs.lint.scripts] +types = "mypy --strict reactpy" +all = ["types"] + +[tool.hatch.envs.publish] +extra-dependencies = ["semver >=2, <3", "twine", "pre-commit"] -# --- MyPy ----------------------------------------------------------------------------- +######################### +# >>> Generic Tools <<< # +######################### [tool.mypy] +incremental = false ignore_missing_imports = true warn_unused_configs = true warn_redundant_casts = true warn_unused_ignores = true -# --- Flake8 --------------------------------------------------------------------------- - -[tool.flake8] -select = ["RPY"] # only need to check with reactpy-flake8 -exclude = ["**/node_modules/*", ".eggs/*", ".tox/*", "**/venv/*"] +[tool.coverage.run] +source_pkgs = ["reactpy"] +branch = false +parallel = false +omit = ["reactpy/__init__.py"] -# --- Ruff ----------------------------------------------------------------------------- +[tool.coverage.report] +fail_under = 100 +show_missing = true +skip_covered = true +sort = "Name" +exclude_lines = [ + "no ?cov", + '\.\.\.', + "if __name__ == .__main__.:", + "if TYPE_CHECKING:", +] +omit = ["reactpy/__main__.py"] [tool.ruff] target-version = "py39" @@ -139,6 +260,10 @@ known-first-party = ["reactpy"] [tool.ruff.flake8-tidy-imports] ban-relative-imports = "all" +[tool.flake8] +select = ["RPY"] # only need to check with reactpy-flake8 +exclude = ["**/node_modules/*", ".eggs/*", ".tox/*", "**/venv/*"] + [tool.ruff.per-file-ignores] # Tests can use magic values, assertions, and relative imports "**/tests/**/*" = ["PLR2004", "S101", "TID252"] @@ -154,3 +279,7 @@ ban-relative-imports = "all" # Allow print "T201", ] + +[tool.black] +target-version = ["py39"] +line-length = 88 diff --git a/src/build_scripts/copy_js_output.py b/src/build_scripts/copy_js_output.py new file mode 100644 index 000000000..23bcc29b7 --- /dev/null +++ b/src/build_scripts/copy_js_output.py @@ -0,0 +1,8 @@ +from pathlib import Path +from shutil import copytree, rmtree + +output_dir = Path(__file__).parent.parent / "reactpy" / "static" +source_dir = Path(__file__).parent.parent / "js" / "app" / "dist" +rmtree(output_dir, ignore_errors=True) +copytree(source_dir, output_dir) +print("JavaScript output copied to reactpy/static") # noqa: T201 diff --git a/src/py/reactpy/.gitignore b/src/py/reactpy/.gitignore deleted file mode 100644 index b4362ae8c..000000000 --- a/src/py/reactpy/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -.coverage.* - -# --- Build Artifacts --- -reactpy/_static -js diff --git a/src/py/reactpy/MANIFEST.in b/src/py/reactpy/MANIFEST.in deleted file mode 100644 index b989938fa..000000000 --- a/src/py/reactpy/MANIFEST.in +++ /dev/null @@ -1,3 +0,0 @@ -recursive-include src/reactpy/_client * -recursive-include src/reactpy/web/templates * -include src/reactpy/py.typed diff --git a/src/py/reactpy/README.md b/src/py/reactpy/README.md deleted file mode 100644 index 910a573a5..000000000 --- a/src/py/reactpy/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# ReactPy - -

- - - - - - - - - - - - - - - -

- ---- - -[ReactPy](https://reactpy.dev/) is a library for building user interfaces in Python without Javascript. ReactPy interfaces are made from components that look and behave similar to those found in [ReactJS](https://reactjs.org/). Designed with simplicity in mind, ReactPy can be used by those without web development experience while also being powerful enough to grow with your ambitions. diff --git a/src/py/reactpy/pyproject.toml b/src/py/reactpy/pyproject.toml deleted file mode 100644 index 56ad6a7c5..000000000 --- a/src/py/reactpy/pyproject.toml +++ /dev/null @@ -1,158 +0,0 @@ -[build-system] -requires = ["hatchling", "hatch-build-scripts>=0.0.4"] -build-backend = "hatchling.build" - -# --- Project -------------------------------------------------------------------------- - -[project] -name = "reactpy" -dynamic = ["version"] -description = 'Reactive user interfaces with pure Python' -readme = "README.md" -requires-python = ">=3.9" -license = "MIT" -keywords = ["react", "javascript", "reactpy", "component"] -authors = [{ name = "Ryan Morshead", email = "ryan.morshead@gmail.com" }] -classifiers = [ - "Development Status :: 4 - Beta", - "Programming Language :: Python", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: Implementation :: CPython", - "Programming Language :: Python :: Implementation :: PyPy", -] -dependencies = [ - "exceptiongroup >=1.0", - "typing-extensions >=3.10", - "mypy-extensions >=0.4.3", - "anyio >=3", - "jsonpatch >=1.32", - "fastjsonschema >=2.14.5", - "requests >=2", - "colorlog >=6", - "asgiref >=3", - "lxml >=4", -] -[project.optional-dependencies] -all = ["reactpy[starlette,sanic,fastapi,flask,tornado,testing]"] - -starlette = ["starlette >=0.13.6", "uvicorn[standard] >=0.19.0"] -sanic = [ - "sanic >=21", - "sanic-cors", - "tracerite>=1.1.1", - "setuptools", - "uvicorn[standard] >=0.19.0", -] -fastapi = ["fastapi >=0.63.0", "uvicorn[standard] >=0.19.0"] -flask = ["flask", "markupsafe>=1.1.1,<2.1", "flask-cors", "flask-sock"] -tornado = ["tornado"] -testing = ["playwright"] - -[project.urls] -Source = "https://github.com/reactive-python/reactpy" -Documentation = "https://github.com/reactive-python/reactpy#readme" -Issues = "https://github.com/reactive-python/reactpy/discussions" - -# --- Hatch ---------------------------------------------------------------------------- - -[tool.hatch.version] -path = "reactpy/__init__.py" - -[tool.hatch.envs.default] -features = ["all"] -pre-install-command = "hatch build --hooks-only" -dependencies = [ - "coverage[toml]>=6.5", - "pytest", - "pytest-asyncio>=0.23", - "pytest-mock", - "pytest-rerunfailures", - "pytest-timeout", - "responses", - "playwright", - # I'm not quite sure why this needs to be installed for tests with Sanic to pass - "sanic-testing", - # Used to generate model changes from layout update messages - "jsonpointer", -] -[tool.hatch.envs.default.scripts] -test = "playwright install && pytest {args:tests}" -test-cov = "playwright install && coverage run -m pytest {args:tests}" -cov-report = [ - # "- coverage combine", - "coverage report", -] -cov = ["test-cov {args}", "cov-report"] - -[tool.hatch.envs.default.env-vars] -REACTPY_DEBUG_MODE = "1" - -[tool.hatch.envs.lint] -features = ["all"] -dependencies = [ - "mypy==1.8", - "types-click", - "types-tornado", - "types-flask", - "types-requests", -] - -[tool.hatch.envs.lint.scripts] -types = "mypy --strict reactpy" -all = ["types"] - -[tool.hatch.build.targets.sdist] -artifacts = ["_static"] -exclude = ["scripts/", "tests/"] - -[tool.hatch.build.targets.wheel] -artifacts = ["_static"] -exclude = ["scripts/", "tests/"] - -[[tool.hatch.build.hooks.build-scripts.scripts]] -commands = [ - "cd .. && cd .. && cd js && npm install && npm run build", - "cd scripts && python copy_js_output.py", -] -artifacts = [] - -# --- Pytest --------------------------------------------------------------------------- - -[tool.pytest.ini_options] -testpaths = "tests" -xfail_strict = true -python_files = "*asserts.py test_*.py" -asyncio_mode = "auto" -log_cli_level = "INFO" - -# --- MyPy ----------------------------------------------------------------------------- - -[tool.mypy] -incremental = false -ignore_missing_imports = true -warn_unused_configs = true -warn_redundant_casts = true -warn_unused_ignores = true - -# --- Coverage ------------------------------------------------------------------------- - -[tool.coverage.run] -source_pkgs = ["reactpy"] -branch = false -parallel = false -omit = ["reactpy/__init__.py"] - -[tool.coverage.report] -fail_under = 100 -show_missing = true -skip_covered = true -sort = "Name" -exclude_lines = [ - "no ?cov", - '\.\.\.', - "if __name__ == .__main__.:", - "if TYPE_CHECKING:", -] -omit = ["reactpy/__main__.py"] diff --git a/src/py/reactpy/scripts/copy_js_output.py b/src/py/reactpy/scripts/copy_js_output.py deleted file mode 100644 index 5844bbad9..000000000 --- a/src/py/reactpy/scripts/copy_js_output.py +++ /dev/null @@ -1,8 +0,0 @@ -from pathlib import Path -from shutil import copytree, rmtree - -output_dir = Path(__file__).parent.parent / "reactpy" / "_static" -source_dir = Path(__file__).parent.parent.parent.parent / "js" / "app" / "dist" -rmtree(output_dir, ignore_errors=True) -copytree(source_dir, output_dir) -print("JavaScript output copied to reactpy/_static") # noqa: T201 diff --git a/src/py/reactpy/reactpy/__init__.py b/src/reactpy/__init__.py similarity index 100% rename from src/py/reactpy/reactpy/__init__.py rename to src/reactpy/__init__.py diff --git a/src/py/reactpy/reactpy/__main__.py b/src/reactpy/__main__.py similarity index 100% rename from src/py/reactpy/reactpy/__main__.py rename to src/reactpy/__main__.py diff --git a/src/py/reactpy/reactpy/_console/__init__.py b/src/reactpy/_console/__init__.py similarity index 100% rename from src/py/reactpy/reactpy/_console/__init__.py rename to src/reactpy/_console/__init__.py diff --git a/src/py/reactpy/reactpy/_console/ast_utils.py b/src/reactpy/_console/ast_utils.py similarity index 100% rename from src/py/reactpy/reactpy/_console/ast_utils.py rename to src/reactpy/_console/ast_utils.py diff --git a/src/py/reactpy/reactpy/_console/rewrite_camel_case_props.py b/src/reactpy/_console/rewrite_camel_case_props.py similarity index 100% rename from src/py/reactpy/reactpy/_console/rewrite_camel_case_props.py rename to src/reactpy/_console/rewrite_camel_case_props.py diff --git a/src/py/reactpy/reactpy/_console/rewrite_keys.py b/src/reactpy/_console/rewrite_keys.py similarity index 100% rename from src/py/reactpy/reactpy/_console/rewrite_keys.py rename to src/reactpy/_console/rewrite_keys.py diff --git a/src/py/reactpy/reactpy/_option.py b/src/reactpy/_option.py similarity index 100% rename from src/py/reactpy/reactpy/_option.py rename to src/reactpy/_option.py diff --git a/src/py/reactpy/reactpy/_warnings.py b/src/reactpy/_warnings.py similarity index 100% rename from src/py/reactpy/reactpy/_warnings.py rename to src/reactpy/_warnings.py diff --git a/src/py/reactpy/reactpy/backend/__init__.py b/src/reactpy/backend/__init__.py similarity index 100% rename from src/py/reactpy/reactpy/backend/__init__.py rename to src/reactpy/backend/__init__.py diff --git a/src/py/reactpy/reactpy/backend/_common.py b/src/reactpy/backend/_common.py similarity index 98% rename from src/py/reactpy/reactpy/backend/_common.py rename to src/reactpy/backend/_common.py index 0b7179092..5672e03e0 100644 --- a/src/py/reactpy/reactpy/backend/_common.py +++ b/src/reactpy/backend/_common.py @@ -21,7 +21,7 @@ MODULES_PATH = PATH_PREFIX / "modules" ASSETS_PATH = PATH_PREFIX / "assets" STREAM_PATH = PATH_PREFIX / "stream" -CLIENT_BUILD_DIR = Path(_reactpy_file_path).parent / "_static" +CLIENT_BUILD_DIR = Path(_reactpy_file_path).parent / "static" async def serve_with_uvicorn( diff --git a/src/py/reactpy/reactpy/backend/default.py b/src/reactpy/backend/default.py similarity index 100% rename from src/py/reactpy/reactpy/backend/default.py rename to src/reactpy/backend/default.py diff --git a/src/py/reactpy/reactpy/backend/fastapi.py b/src/reactpy/backend/fastapi.py similarity index 100% rename from src/py/reactpy/reactpy/backend/fastapi.py rename to src/reactpy/backend/fastapi.py diff --git a/src/py/reactpy/reactpy/backend/flask.py b/src/reactpy/backend/flask.py similarity index 100% rename from src/py/reactpy/reactpy/backend/flask.py rename to src/reactpy/backend/flask.py diff --git a/src/py/reactpy/reactpy/backend/hooks.py b/src/reactpy/backend/hooks.py similarity index 100% rename from src/py/reactpy/reactpy/backend/hooks.py rename to src/reactpy/backend/hooks.py diff --git a/src/py/reactpy/reactpy/backend/sanic.py b/src/reactpy/backend/sanic.py similarity index 100% rename from src/py/reactpy/reactpy/backend/sanic.py rename to src/reactpy/backend/sanic.py diff --git a/src/py/reactpy/reactpy/backend/starlette.py b/src/reactpy/backend/starlette.py similarity index 100% rename from src/py/reactpy/reactpy/backend/starlette.py rename to src/reactpy/backend/starlette.py diff --git a/src/py/reactpy/reactpy/backend/tornado.py b/src/reactpy/backend/tornado.py similarity index 100% rename from src/py/reactpy/reactpy/backend/tornado.py rename to src/reactpy/backend/tornado.py diff --git a/src/py/reactpy/reactpy/backend/types.py b/src/reactpy/backend/types.py similarity index 100% rename from src/py/reactpy/reactpy/backend/types.py rename to src/reactpy/backend/types.py diff --git a/src/py/reactpy/reactpy/backend/utils.py b/src/reactpy/backend/utils.py similarity index 100% rename from src/py/reactpy/reactpy/backend/utils.py rename to src/reactpy/backend/utils.py diff --git a/src/py/reactpy/reactpy/config.py b/src/reactpy/config.py similarity index 100% rename from src/py/reactpy/reactpy/config.py rename to src/reactpy/config.py diff --git a/src/py/reactpy/reactpy/core/__init__.py b/src/reactpy/core/__init__.py similarity index 100% rename from src/py/reactpy/reactpy/core/__init__.py rename to src/reactpy/core/__init__.py diff --git a/src/py/reactpy/reactpy/core/_f_back.py b/src/reactpy/core/_f_back.py similarity index 100% rename from src/py/reactpy/reactpy/core/_f_back.py rename to src/reactpy/core/_f_back.py diff --git a/src/py/reactpy/reactpy/core/_life_cycle_hook.py b/src/reactpy/core/_life_cycle_hook.py similarity index 100% rename from src/py/reactpy/reactpy/core/_life_cycle_hook.py rename to src/reactpy/core/_life_cycle_hook.py diff --git a/src/py/reactpy/reactpy/core/_thread_local.py b/src/reactpy/core/_thread_local.py similarity index 100% rename from src/py/reactpy/reactpy/core/_thread_local.py rename to src/reactpy/core/_thread_local.py diff --git a/src/py/reactpy/reactpy/core/component.py b/src/reactpy/core/component.py similarity index 100% rename from src/py/reactpy/reactpy/core/component.py rename to src/reactpy/core/component.py diff --git a/src/py/reactpy/reactpy/core/events.py b/src/reactpy/core/events.py similarity index 100% rename from src/py/reactpy/reactpy/core/events.py rename to src/reactpy/core/events.py diff --git a/src/py/reactpy/reactpy/core/hooks.py b/src/reactpy/core/hooks.py similarity index 100% rename from src/py/reactpy/reactpy/core/hooks.py rename to src/reactpy/core/hooks.py diff --git a/src/py/reactpy/reactpy/core/layout.py b/src/reactpy/core/layout.py similarity index 100% rename from src/py/reactpy/reactpy/core/layout.py rename to src/reactpy/core/layout.py diff --git a/src/py/reactpy/reactpy/core/serve.py b/src/reactpy/core/serve.py similarity index 100% rename from src/py/reactpy/reactpy/core/serve.py rename to src/reactpy/core/serve.py diff --git a/src/py/reactpy/reactpy/core/types.py b/src/reactpy/core/types.py similarity index 100% rename from src/py/reactpy/reactpy/core/types.py rename to src/reactpy/core/types.py diff --git a/src/py/reactpy/reactpy/core/vdom.py b/src/reactpy/core/vdom.py similarity index 100% rename from src/py/reactpy/reactpy/core/vdom.py rename to src/reactpy/core/vdom.py diff --git a/src/py/reactpy/reactpy/future.py b/src/reactpy/future.py similarity index 100% rename from src/py/reactpy/reactpy/future.py rename to src/reactpy/future.py diff --git a/src/py/reactpy/reactpy/html.py b/src/reactpy/html.py similarity index 100% rename from src/py/reactpy/reactpy/html.py rename to src/reactpy/html.py diff --git a/src/py/reactpy/reactpy/logging.py b/src/reactpy/logging.py similarity index 100% rename from src/py/reactpy/reactpy/logging.py rename to src/reactpy/logging.py diff --git a/src/py/reactpy/reactpy/py.typed b/src/reactpy/py.typed similarity index 100% rename from src/py/reactpy/reactpy/py.typed rename to src/reactpy/py.typed diff --git a/src/py/reactpy/reactpy/sample.py b/src/reactpy/sample.py similarity index 100% rename from src/py/reactpy/reactpy/sample.py rename to src/reactpy/sample.py diff --git a/src/py/reactpy/reactpy/svg.py b/src/reactpy/svg.py similarity index 100% rename from src/py/reactpy/reactpy/svg.py rename to src/reactpy/svg.py diff --git a/src/py/reactpy/reactpy/testing/__init__.py b/src/reactpy/testing/__init__.py similarity index 100% rename from src/py/reactpy/reactpy/testing/__init__.py rename to src/reactpy/testing/__init__.py diff --git a/src/py/reactpy/reactpy/testing/backend.py b/src/reactpy/testing/backend.py similarity index 100% rename from src/py/reactpy/reactpy/testing/backend.py rename to src/reactpy/testing/backend.py diff --git a/src/py/reactpy/reactpy/testing/common.py b/src/reactpy/testing/common.py similarity index 100% rename from src/py/reactpy/reactpy/testing/common.py rename to src/reactpy/testing/common.py diff --git a/src/py/reactpy/reactpy/testing/display.py b/src/reactpy/testing/display.py similarity index 100% rename from src/py/reactpy/reactpy/testing/display.py rename to src/reactpy/testing/display.py diff --git a/src/py/reactpy/reactpy/testing/logs.py b/src/reactpy/testing/logs.py similarity index 100% rename from src/py/reactpy/reactpy/testing/logs.py rename to src/reactpy/testing/logs.py diff --git a/src/py/reactpy/reactpy/types.py b/src/reactpy/types.py similarity index 100% rename from src/py/reactpy/reactpy/types.py rename to src/reactpy/types.py diff --git a/src/py/reactpy/reactpy/utils.py b/src/reactpy/utils.py similarity index 100% rename from src/py/reactpy/reactpy/utils.py rename to src/reactpy/utils.py diff --git a/src/py/reactpy/reactpy/web/__init__.py b/src/reactpy/web/__init__.py similarity index 100% rename from src/py/reactpy/reactpy/web/__init__.py rename to src/reactpy/web/__init__.py diff --git a/src/py/reactpy/reactpy/web/module.py b/src/reactpy/web/module.py similarity index 100% rename from src/py/reactpy/reactpy/web/module.py rename to src/reactpy/web/module.py diff --git a/src/py/reactpy/reactpy/web/templates/react.js b/src/reactpy/web/templates/react.js similarity index 100% rename from src/py/reactpy/reactpy/web/templates/react.js rename to src/reactpy/web/templates/react.js diff --git a/src/py/reactpy/reactpy/web/utils.py b/src/reactpy/web/utils.py similarity index 100% rename from src/py/reactpy/reactpy/web/utils.py rename to src/reactpy/web/utils.py diff --git a/src/py/reactpy/reactpy/widgets.py b/src/reactpy/widgets.py similarity index 100% rename from src/py/reactpy/reactpy/widgets.py rename to src/reactpy/widgets.py diff --git a/tasks.py b/tasks.py deleted file mode 100644 index 5669025a4..000000000 --- a/tasks.py +++ /dev/null @@ -1,458 +0,0 @@ -from __future__ import annotations - -import json -import logging -import os -import re -import sys -from dataclasses import dataclass -from pathlib import Path -from shutil import rmtree -from typing import TYPE_CHECKING, Any, Callable - -import semver -import toml -from invoke import task -from invoke.context import Context -from invoke.exceptions import Exit -from invoke.runners import Result - -# --- Typing Preamble ------------------------------------------------------------------ - - -if TYPE_CHECKING: - # not available in typing module until Python 3.8 - # not available in typing module until Python 3.10 - from typing import Literal, Protocol, TypeAlias - - class ReleasePrepFunc(Protocol): - def __call__( - self, context: Context, package: PackageInfo - ) -> Callable[[bool], None]: ... - - LanguageName: TypeAlias = "Literal['py', 'js']" - - -# --- Constants ------------------------------------------------------------------------ - - -log = logging.getLogger(__name__) -log.setLevel("INFO") -log_handler = logging.StreamHandler(sys.stdout) -log_handler.setFormatter(logging.Formatter("%(message)s")) -log.addHandler(log_handler) - - -# --- Constants ------------------------------------------------------------------------ - - -ROOT = Path(__file__).parent -DOCS_DIR = ROOT / "docs" -SRC_DIR = ROOT / "src" -JS_DIR = SRC_DIR / "js" -PY_DIR = SRC_DIR / "py" -PY_PROJECTS = [p for p in PY_DIR.iterdir() if (p / "pyproject.toml").exists()] -TAG_PATTERN = re.compile( - # start - r"^" - # package name - r"(?P[0-9a-zA-Z-@/]+)-" - # package version - r"v(?P[0-9][0-9a-zA-Z-\.\+]*)" - # end - r"$" -) - - -# --- Tasks ---------------------------------------------------------------------------- - - -@task -def env(context: Context): - """Install development environment""" - env_py(context) - env_js(context) - - -@task -def env_py(context: Context): - """Install Python development environment""" - for py_proj in [ - DOCS_DIR, - # Docs installs non-editable versions of packages - ensure - # we overwrite that by installing projects afterwards. - *PY_PROJECTS, - ]: - py_proj_toml_tools = toml.load(py_proj / "pyproject.toml")["tool"] - if "hatch" in py_proj_toml_tools: - install_func = install_hatch_project - elif "poetry" in py_proj_toml_tools: - install_func = install_poetry_project - else: - raise Exit(f"Unknown project type: {py_proj}") - with context.cd(py_proj): - install_func(context, py_proj) - - -@task -def env_js(context: Context): - """Install JS development environment""" - in_js( - context, - "npm ci", - "npm run build", - hide="out", - ) - - -@task -def lint_py(context: Context, fix: bool = False): - """Run linters and type checkers""" - if fix: - context.run("ruff --fix .") - context.run("black .") - else: - context.run("ruff .") - context.run("black --check --diff .") - in_py( - context, - f"flake8 --toml-config '{ROOT / 'pyproject.toml'}' .", - "hatch run lint:all", - ) - - -@task(pre=[env_js]) -def lint_js(context: Context, fix: bool = False): - """Run linters and type checkers""" - if fix: - in_js(context, "npm run fix:format") - else: - in_js(context, "npm run check:format") - in_js(context, "npm run check:types") - - -@task -def test_py(context: Context, no_cov: bool = False): - """Run test suites""" - in_py( - context, - f"hatch run {'test' if no_cov else 'cov'} --maxfail=3 --reruns=3", - ) - - -@task(pre=[env_js]) -def test_js(context: Context): - """Run test suites""" - in_js(context, "npm run check:tests") - - -@task(pre=[env_py]) -def test_docs(context: Context): - with context.cd(DOCS_DIR): - context.run("poetry install") - context.run( - "poetry run sphinx-build " - "-a " # re-write all output files - "-T " # show full tracebacks - "-W " # turn warnings into errors - "--keep-going " # complete the build, but still report warnings as errors - "-b doctest " - "source " - "build", - ) - context.run("poetry run sphinx-build -b doctest source build") - - context.run("docker build . --file ./docs/Dockerfile") - - -@task -def docs(context: Context, docker: bool = False): - """Build documentation""" - if docker: - _docker_docs(context) - else: - _live_docs(context) - - -def _docker_docs(context: Context) -> None: - context.run("docker build . --file ./docs/Dockerfile --tag reactpy-docs:latest") - context.run( - "docker run -it -p 5000:5000 -e DEBUG=1 --rm reactpy-docs:latest", pty=True - ) - - -def _live_docs(context: Context) -> None: - with context.cd(DOCS_DIR): - context.run("poetry install") - context.run( - "poetry run python main.py " - "--open-browser " - # watch python source too - "--watch=../src/py " - # for some reason this matches absolute paths - "--ignore=**/_auto/* " - "--ignore=**/_static/custom.js " - "--ignore=**/node_modules/* " - "--ignore=**/package-lock.json " - "-a " - "-E " - "-b " - "html " - "source " - "build" - ) - - -@task -def publish(context: Context, dry_run: str = ""): - """Publish packages that have been tagged for release in the current commit - - To perform a test run use `--dry-run=-v` to specify a comma-separated - list of tags to simulate a release of. For example, to simulate a release of - `@foo/bar-v1.2.3` and `baz-v4.5.6` use `--dry-run=@foo/bar-v1.2.3,baz-v4.5.6`. - """ - packages = get_packages(context) - - release_prep: dict[LanguageName, ReleasePrepFunc] = { - "js": prepare_js_release, - "py": prepare_py_release, - } - current_tags = dry_run.split(",") if dry_run else get_current_tags(context) - parsed_tags = [parse_tag(tag) for tag in current_tags] - - publishers: list[Callable[[bool], None]] = [] - for tag_info in parsed_tags: - if tag_info.name not in packages: - msg = f"Tag {tag_info.tag} references package {tag_info.name} that does not exist" - raise Exit(msg) - - pkg_info = packages[tag_info.name] - if pkg_info.version != tag_info.version: - msg = f"Tag {tag_info.tag} references version {tag_info.version} of package {tag_info.name}, but the current version is {pkg_info.version}" - raise Exit(msg) - - log.info(f"Preparing {tag_info.name} for release...") - publishers.append(release_prep[pkg_info.language](context, pkg_info)) - - for publish in publishers: - publish(bool(dry_run)) - - -# --- Utilities ------------------------------------------------------------------------ - - -def in_py(context: Context, *commands: str, **kwargs: Any) -> None: - for p in PY_PROJECTS: - with context.cd(p): - log.info(f"Running commands in {p}...") - for c in commands: - context.run(c, **kwargs) - - -def in_js(context: Context, *commands: str, **kwargs: Any) -> None: - with context.cd(JS_DIR): - for c in commands: - context.run(c, **kwargs) - - -def get_packages(context: Context) -> dict[str, PackageInfo]: - packages: list[PackageInfo] = [] - - for maybe_pkg in PY_DIR.glob("*"): - if (maybe_pkg / "pyproject.toml").exists(): - packages.append(make_py_pkg_info(context, maybe_pkg)) - else: - msg = f"unexpected dir or file: {maybe_pkg}" - raise Exit(msg) - - packages_dir = JS_DIR / "packages" - for maybe_pkg in packages_dir.glob("*"): - if (maybe_pkg / "package.json").exists(): - packages.append(make_js_pkg_info(maybe_pkg)) - elif maybe_pkg.is_dir(): - for maybe_ns_pkg in maybe_pkg.glob("*"): - if (maybe_ns_pkg / "package.json").exists(): - packages.append(make_js_pkg_info(maybe_ns_pkg)) - else: - msg = f"unexpected dir or file: {maybe_pkg}" - raise Exit(msg) - - packages_by_name = {p.name: p for p in packages} - if len(packages_by_name) != len(packages): - raise Exit("duplicate package names detected") - - return packages_by_name - - -def make_py_pkg_info(context: Context, pkg_dir: Path) -> PackageInfo: - with context.cd(pkg_dir): - proj_metadata = json.loads( - ensure_result(context, "hatch project metadata").stdout - ) - return PackageInfo( - name=proj_metadata["name"], - path=pkg_dir, - language="py", - version=proj_metadata["version"], - ) - - -def make_js_pkg_info(pkg_dir: Path) -> PackageInfo: - with (pkg_dir / "package.json").open() as f: - pkg_json = json.load(f) - return PackageInfo( - name=pkg_json["name"], - path=pkg_dir, - language="js", - version=pkg_json["version"], - ) - - -@dataclass -class PackageInfo: - name: str - path: Path - language: LanguageName - version: str - - -def get_current_tags(context: Context) -> set[str]: - """Get tags for the current commit""" - # check if unstaged changes - try: - context.run("git diff --cached --exit-code", hide=True) - context.run("git diff --exit-code", hide=True) - except Exception: - log.error("Cannot get current tags - there are uncommitted changes") - return set() - - # get tags for current commit - tags = { - line - for line in map( - str.strip, - ensure_result( - context, "git tag --points-at HEAD", hide=True - ).stdout.splitlines(), - ) - if line - } - - if not tags: - log.error("No tags found for current commit") - - for t in tags: - if not TAG_PATTERN.match(t): - msg = f"Invalid tag: {t}" - raise Exit(msg) - - log.info(f"Found tags: {tags}") - - return tags - - -def parse_tag(tag: str) -> TagInfo: - match = TAG_PATTERN.match(tag) - if not match: - msg = f"Invalid tag: {tag}" - raise Exit(msg) - - version = match.group("version") - if not semver.VersionInfo.isvalid(version): - raise Exit(f"Invalid version: {version} in tag {tag}") - - return TagInfo(tag=tag, name=match.group("name"), version=match.group("version")) - - -@dataclass -class TagInfo: - tag: str - name: str - version: str - - -def prepare_js_release( - context: Context, package: PackageInfo -) -> Callable[[bool], None]: - node_auth_token = os.getenv("NODE_AUTH_TOKEN") - if node_auth_token is None: - msg = "NODE_AUTH_TOKEN environment variable must be set" - raise Exit(msg) - - with context.cd(JS_DIR): - context.run("npm ci") - context.run("npm run build") - - def publish(dry_run: bool) -> None: - with context.cd(JS_DIR): - if dry_run: - context.run(f"npm --workspace {package.name} pack --dry-run") - return - context.run( - f"npm --workspace {package.name} publish --access public", - env={"NODE_AUTH_TOKEN": node_auth_token}, - ) - - return publish - - -def prepare_py_release( - context: Context, package: PackageInfo -) -> Callable[[bool], None]: - twine_username = os.getenv("PYPI_USERNAME") - twine_password = os.getenv("PYPI_PASSWORD") - - if not (twine_password and twine_username): - msg = "PYPI_USERNAME and PYPI_PASSWORD environment variables must be set" - raise Exit(msg) - - for build_dir_name in ["build", "dist"]: - build_dir_path = Path.cwd() / build_dir_name - if build_dir_path.exists(): - rmtree(str(build_dir_path)) - - with context.cd(package.path): - context.run("hatch build") - - def publish(dry_run: bool): - with context.cd(package.path): - context.run("twine check dist/*") - - if dry_run: - return - - context.run( - "twine upload dist/*", - env={ - "TWINE_USERNAME": twine_username, - "TWINE_PASSWORD": twine_password, - }, - ) - - return publish - - -def install_hatch_project(context: Context, path: Path) -> None: - py_proj_toml = toml.load(path / "pyproject.toml") - hatch_default_env = py_proj_toml["tool"]["hatch"]["envs"].get("default", {}) - hatch_default_features = hatch_default_env.get("features", []) - hatch_default_deps = hatch_default_env.get("dependencies", []) - context.run(f"pip install -e '.[{','.join(hatch_default_features)}]'") - context.run(f"pip install {' '.join(map(repr, hatch_default_deps))}") - - -def install_poetry_project(context: Context, path: Path) -> None: - # install dependencies from poetry into the current environment - not in Poetry's venv - poetry_lock = toml.load(path / "poetry.lock") - packages_to_install = [ - f"{package['name']}=={package['version']}" for package in poetry_lock["package"] - ] - context.run("pip install -e .") - context.run(f"pip install {' '.join(packages_to_install)}") - - -def ensure_result(context: Context, *args: Any, **kwargs: Any) -> Result: - result = context.run(*args, **kwargs) - if result is None: - raise Exit("Command failed") - return result diff --git a/src/py/reactpy/tests/__init__.py b/tests/__init__.py similarity index 100% rename from src/py/reactpy/tests/__init__.py rename to tests/__init__.py diff --git a/src/py/reactpy/tests/conftest.py b/tests/conftest.py similarity index 89% rename from src/py/reactpy/tests/conftest.py rename to tests/conftest.py index 743d67f02..9fa415013 100644 --- a/src/py/reactpy/tests/conftest.py +++ b/tests/conftest.py @@ -2,11 +2,11 @@ import asyncio import os +import subprocess import pytest from _pytest.config import Config from _pytest.config.argparsing import Parser -from playwright.async_api import async_playwright from reactpy.config import ( REACTPY_ASYNC_RENDERING, @@ -31,6 +31,11 @@ def pytest_addoption(parser: Parser) -> None: ) +@pytest.fixture(autouse=True, scope="session") +def install_playwright(): + subprocess.run(["playwright", "install", "chromium"], check=True) + + @pytest.fixture async def display(server, page): async with DisplayFixture(server, page) as display: @@ -55,6 +60,8 @@ async def page(browser): @pytest.fixture async def browser(pytestconfig: Config): + from playwright.async_api import async_playwright + async with async_playwright() as pw: yield await pw.chromium.launch(headless=not bool(pytestconfig.option.headed)) diff --git a/src/py/reactpy/tests/test__console/__init__.py b/tests/test__console/__init__.py similarity index 100% rename from src/py/reactpy/tests/test__console/__init__.py rename to tests/test__console/__init__.py diff --git a/src/py/reactpy/tests/test__console/test_rewrite_camel_case_props.py b/tests/test__console/test_rewrite_camel_case_props.py similarity index 100% rename from src/py/reactpy/tests/test__console/test_rewrite_camel_case_props.py rename to tests/test__console/test_rewrite_camel_case_props.py diff --git a/src/py/reactpy/tests/test__console/test_rewrite_keys.py b/tests/test__console/test_rewrite_keys.py similarity index 100% rename from src/py/reactpy/tests/test__console/test_rewrite_keys.py rename to tests/test__console/test_rewrite_keys.py diff --git a/src/py/reactpy/tests/test__option.py b/tests/test__option.py similarity index 100% rename from src/py/reactpy/tests/test__option.py rename to tests/test__option.py diff --git a/src/py/reactpy/tests/tooling/asserts.py b/tests/test_asserts.py similarity index 83% rename from src/py/reactpy/tests/tooling/asserts.py rename to tests/test_asserts.py index ac84aa0ba..e23e2185e 100644 --- a/src/py/reactpy/tests/tooling/asserts.py +++ b/tests/test_asserts.py @@ -1,4 +1,4 @@ -def assert_same_items(left, right): +def test_assert_same_items(left, right): """Check that two unordered sequences are equal (only works if reprs are equal)""" sorted_left = sorted(left, key=repr) sorted_right = sorted(right, key=repr) diff --git a/src/py/reactpy/tests/test_backend/__init__.py b/tests/test_backend/__init__.py similarity index 100% rename from src/py/reactpy/tests/test_backend/__init__.py rename to tests/test_backend/__init__.py diff --git a/src/py/reactpy/tests/test_backend/test__common.py b/tests/test_backend/test__common.py similarity index 100% rename from src/py/reactpy/tests/test_backend/test__common.py rename to tests/test_backend/test__common.py diff --git a/src/py/reactpy/tests/test_backend/test_all.py b/tests/test_backend/test_all.py similarity index 100% rename from src/py/reactpy/tests/test_backend/test_all.py rename to tests/test_backend/test_all.py diff --git a/src/py/reactpy/tests/test_backend/test_utils.py b/tests/test_backend/test_utils.py similarity index 100% rename from src/py/reactpy/tests/test_backend/test_utils.py rename to tests/test_backend/test_utils.py diff --git a/src/py/reactpy/tests/test_client.py b/tests/test_client.py similarity index 100% rename from src/py/reactpy/tests/test_client.py rename to tests/test_client.py diff --git a/src/py/reactpy/tests/test_config.py b/tests/test_config.py similarity index 100% rename from src/py/reactpy/tests/test_config.py rename to tests/test_config.py diff --git a/src/py/reactpy/tests/test_core/__init__.py b/tests/test_core/__init__.py similarity index 100% rename from src/py/reactpy/tests/test_core/__init__.py rename to tests/test_core/__init__.py diff --git a/src/py/reactpy/tests/test_core/test_component.py b/tests/test_core/test_component.py similarity index 100% rename from src/py/reactpy/tests/test_core/test_component.py rename to tests/test_core/test_component.py diff --git a/src/py/reactpy/tests/test_core/test_events.py b/tests/test_core/test_events.py similarity index 100% rename from src/py/reactpy/tests/test_core/test_events.py rename to tests/test_core/test_events.py diff --git a/src/py/reactpy/tests/test_core/test_hooks.py b/tests/test_core/test_hooks.py similarity index 100% rename from src/py/reactpy/tests/test_core/test_hooks.py rename to tests/test_core/test_hooks.py diff --git a/src/py/reactpy/tests/test_core/test_layout.py b/tests/test_core/test_layout.py similarity index 100% rename from src/py/reactpy/tests/test_core/test_layout.py rename to tests/test_core/test_layout.py diff --git a/src/py/reactpy/tests/test_core/test_serve.py b/tests/test_core/test_serve.py similarity index 100% rename from src/py/reactpy/tests/test_core/test_serve.py rename to tests/test_core/test_serve.py diff --git a/src/py/reactpy/tests/test_core/test_vdom.py b/tests/test_core/test_vdom.py similarity index 100% rename from src/py/reactpy/tests/test_core/test_vdom.py rename to tests/test_core/test_vdom.py diff --git a/src/py/reactpy/tests/test_html.py b/tests/test_html.py similarity index 100% rename from src/py/reactpy/tests/test_html.py rename to tests/test_html.py diff --git a/src/py/reactpy/tests/test_sample.py b/tests/test_sample.py similarity index 100% rename from src/py/reactpy/tests/test_sample.py rename to tests/test_sample.py diff --git a/src/py/reactpy/tests/test_testing.py b/tests/test_testing.py similarity index 100% rename from src/py/reactpy/tests/test_testing.py rename to tests/test_testing.py diff --git a/src/py/reactpy/tests/test_utils.py b/tests/test_utils.py similarity index 100% rename from src/py/reactpy/tests/test_utils.py rename to tests/test_utils.py diff --git a/src/py/reactpy/tests/test_web/__init__.py b/tests/test_web/__init__.py similarity index 100% rename from src/py/reactpy/tests/test_web/__init__.py rename to tests/test_web/__init__.py diff --git a/src/py/reactpy/tests/test_web/js_fixtures/component-can-have-child.js b/tests/test_web/js_fixtures/component-can-have-child.js similarity index 100% rename from src/py/reactpy/tests/test_web/js_fixtures/component-can-have-child.js rename to tests/test_web/js_fixtures/component-can-have-child.js diff --git a/src/py/reactpy/tests/test_web/js_fixtures/export-resolution/index.js b/tests/test_web/js_fixtures/export-resolution/index.js similarity index 100% rename from src/py/reactpy/tests/test_web/js_fixtures/export-resolution/index.js rename to tests/test_web/js_fixtures/export-resolution/index.js diff --git a/src/py/reactpy/tests/test_web/js_fixtures/export-resolution/one.js b/tests/test_web/js_fixtures/export-resolution/one.js similarity index 100% rename from src/py/reactpy/tests/test_web/js_fixtures/export-resolution/one.js rename to tests/test_web/js_fixtures/export-resolution/one.js diff --git a/src/py/reactpy/tests/test_web/js_fixtures/export-resolution/two.js b/tests/test_web/js_fixtures/export-resolution/two.js similarity index 100% rename from src/py/reactpy/tests/test_web/js_fixtures/export-resolution/two.js rename to tests/test_web/js_fixtures/export-resolution/two.js diff --git a/src/py/reactpy/tests/test_web/js_fixtures/exports-syntax.js b/tests/test_web/js_fixtures/exports-syntax.js similarity index 100% rename from src/py/reactpy/tests/test_web/js_fixtures/exports-syntax.js rename to tests/test_web/js_fixtures/exports-syntax.js diff --git a/src/py/reactpy/tests/test_web/js_fixtures/exports-two-components.js b/tests/test_web/js_fixtures/exports-two-components.js similarity index 100% rename from src/py/reactpy/tests/test_web/js_fixtures/exports-two-components.js rename to tests/test_web/js_fixtures/exports-two-components.js diff --git a/src/py/reactpy/tests/test_web/js_fixtures/set-flag-when-unmount-is-called.js b/tests/test_web/js_fixtures/set-flag-when-unmount-is-called.js similarity index 100% rename from src/py/reactpy/tests/test_web/js_fixtures/set-flag-when-unmount-is-called.js rename to tests/test_web/js_fixtures/set-flag-when-unmount-is-called.js diff --git a/src/py/reactpy/tests/test_web/js_fixtures/simple-button.js b/tests/test_web/js_fixtures/simple-button.js similarity index 100% rename from src/py/reactpy/tests/test_web/js_fixtures/simple-button.js rename to tests/test_web/js_fixtures/simple-button.js diff --git a/src/py/reactpy/tests/test_web/test_module.py b/tests/test_web/test_module.py similarity index 100% rename from src/py/reactpy/tests/test_web/test_module.py rename to tests/test_web/test_module.py diff --git a/src/py/reactpy/tests/test_web/test_utils.py b/tests/test_web/test_utils.py similarity index 100% rename from src/py/reactpy/tests/test_web/test_utils.py rename to tests/test_web/test_utils.py diff --git a/src/py/reactpy/tests/test_widgets.py b/tests/test_widgets.py similarity index 100% rename from src/py/reactpy/tests/test_widgets.py rename to tests/test_widgets.py diff --git a/src/py/reactpy/tests/tooling/__init__.py b/tests/tooling/__init__.py similarity index 100% rename from src/py/reactpy/tests/tooling/__init__.py rename to tests/tooling/__init__.py diff --git a/src/py/reactpy/tests/tooling/aio.py b/tests/tooling/aio.py similarity index 100% rename from src/py/reactpy/tests/tooling/aio.py rename to tests/tooling/aio.py diff --git a/src/py/reactpy/tests/tooling/common.py b/tests/tooling/common.py similarity index 100% rename from src/py/reactpy/tests/tooling/common.py rename to tests/tooling/common.py diff --git a/src/py/reactpy/tests/tooling/hooks.py b/tests/tooling/hooks.py similarity index 100% rename from src/py/reactpy/tests/tooling/hooks.py rename to tests/tooling/hooks.py diff --git a/src/py/reactpy/tests/tooling/layout.py b/tests/tooling/layout.py similarity index 100% rename from src/py/reactpy/tests/tooling/layout.py rename to tests/tooling/layout.py diff --git a/src/py/reactpy/tests/tooling/select.py b/tests/tooling/select.py similarity index 100% rename from src/py/reactpy/tests/tooling/select.py rename to tests/tooling/select.py From 8706373f97a5f9adacb5ebd8223353b83dbd9cff Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Sat, 4 Jan 2025 17:24:19 -0800 Subject: [PATCH 02/30] bad attempt at getting bun working --- src/js/app/package-lock.json | 1193 ---- src/js/app/tsconfig.json | 14 - src/js/app/vite.config.js | 13 - src/js/bun.lockb | Bin 0 -> 126920 bytes src/js/package-lock.json | 5989 ----------------- src/js/package.json | 8 +- .../@reactpy}/app/.eslintrc.json | 0 src/js/{ => packages/@reactpy}/app/index.html | 0 .../{ => packages/@reactpy}/app/package.json | 3 +- .../app/public/assets/reactpy-logo.ico | Bin .../{ => packages/@reactpy}/app/src/index.ts | 0 src/js/packages/@reactpy/client/package.json | 2 +- src/js/packages/@reactpy/client/tsconfig.json | 14 - src/js/packages/event-to-object/tsconfig.json | 9 - .../event-to-object/tsconfig.tests.json | 16 - src/js/tsconfig.package.json | 22 - 16 files changed, 6 insertions(+), 7277 deletions(-) delete mode 100644 src/js/app/package-lock.json delete mode 100644 src/js/app/tsconfig.json delete mode 100644 src/js/app/vite.config.js create mode 100644 src/js/bun.lockb delete mode 100644 src/js/package-lock.json rename src/js/{ => packages/@reactpy}/app/.eslintrc.json (100%) rename src/js/{ => packages/@reactpy}/app/index.html (100%) rename src/js/{ => packages/@reactpy}/app/package.json (90%) rename src/js/{ => packages/@reactpy}/app/public/assets/reactpy-logo.ico (100%) rename src/js/{ => packages/@reactpy}/app/src/index.ts (100%) delete mode 100644 src/js/packages/@reactpy/client/tsconfig.json delete mode 100644 src/js/packages/event-to-object/tsconfig.json delete mode 100644 src/js/packages/event-to-object/tsconfig.tests.json delete mode 100644 src/js/tsconfig.package.json diff --git a/src/js/app/package-lock.json b/src/js/app/package-lock.json deleted file mode 100644 index 5af5f0fd8..000000000 --- a/src/js/app/package-lock.json +++ /dev/null @@ -1,1193 +0,0 @@ -{ - "name": "ui", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "license": "MIT", - "dependencies": { - "@reactpy/client": "^0.2.0", - "preact": "^10.7.0" - }, - "devDependencies": { - "@types/react": "^17.0", - "@types/react-dom": "^17.0", - "typescript": "^4.9.5", - "vite": "^3.2.11" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", - "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", - "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@reactpy/client": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@reactpy/client/-/client-0.2.1.tgz", - "integrity": "sha512-9sgGH+pJ2BpLT+QSVe7FQLS2VQ9acHgPlO8X3qiTumGw43O0X82sm8pzya8H8dAew463SeGza/pZc0mpUBHmqA==", - "dependencies": { - "event-to-object": "^0.1.2", - "json-pointer": "^0.6.2" - }, - "peerDependencies": { - "react": ">=16 <18", - "react-dom": ">=16 <18" - } - }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "dev": true - }, - "node_modules/@types/react": { - "version": "17.0.57", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.57.tgz", - "integrity": "sha512-e4msYpu5QDxzNrXDHunU/VPyv2M1XemGG/p7kfCjUiPtlLDCWLGQfgAMng6YyisWYxZ09mYdQlmMnyS0NfZdEg==", - "dev": true, - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "17.0.19", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.19.tgz", - "integrity": "sha512-PiYG40pnQRdPHnlf7tZnp0aQ6q9tspYr72vD61saO6zFCybLfMqwUCN0va1/P+86DXn18ZWeW30Bk7xlC5eEAQ==", - "dev": true, - "dependencies": { - "@types/react": "^17" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", - "dev": true - }, - "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", - "dev": true - }, - "node_modules/esbuild": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", - "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.15.18", - "@esbuild/linux-loong64": "0.15.18", - "esbuild-android-64": "0.15.18", - "esbuild-android-arm64": "0.15.18", - "esbuild-darwin-64": "0.15.18", - "esbuild-darwin-arm64": "0.15.18", - "esbuild-freebsd-64": "0.15.18", - "esbuild-freebsd-arm64": "0.15.18", - "esbuild-linux-32": "0.15.18", - "esbuild-linux-64": "0.15.18", - "esbuild-linux-arm": "0.15.18", - "esbuild-linux-arm64": "0.15.18", - "esbuild-linux-mips64le": "0.15.18", - "esbuild-linux-ppc64le": "0.15.18", - "esbuild-linux-riscv64": "0.15.18", - "esbuild-linux-s390x": "0.15.18", - "esbuild-netbsd-64": "0.15.18", - "esbuild-openbsd-64": "0.15.18", - "esbuild-sunos-64": "0.15.18", - "esbuild-windows-32": "0.15.18", - "esbuild-windows-64": "0.15.18", - "esbuild-windows-arm64": "0.15.18" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", - "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", - "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", - "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", - "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", - "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", - "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", - "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", - "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", - "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", - "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", - "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", - "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", - "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", - "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", - "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", - "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", - "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", - "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", - "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", - "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/event-to-object": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/event-to-object/-/event-to-object-0.1.2.tgz", - "integrity": "sha512-+fUmp1XOCZiYomwe5Zxp4IlchuZZfdVdjFUk5MbgRT4M+V2TEWKc0jJwKLCX/nxlJ6xM5VUb/ylzERh7YDCRrg==", - "dependencies": { - "json-pointer": "^0.6.2" - } - }, - "node_modules/foreach": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz", - "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/is-core-module": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", - "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "peer": true - }, - "node_modules/json-pointer": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.2.tgz", - "integrity": "sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw==", - "dependencies": { - "foreach": "^2.0.4" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "peer": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/preact": { - "version": "10.13.2", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.13.2.tgz", - "integrity": "sha512-q44QFLhOhty2Bd0Y46fnYW0gD/cbVM9dUVtNTDKPcdXSMA7jfY+Jpd6rk3GB0lcQss0z5s/6CmVP0Z/hV+g6pw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/preact" - } - }, - "node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - }, - "peerDependencies": { - "react": "17.0.2" - } - }, - "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, - "dependencies": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/vite": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.11.tgz", - "integrity": "sha512-K/jGKL/PgbIgKCiJo5QbASQhFiV02X9Jh+Qq0AKCRCRKZtOTVi4t6wh75FDpGf2N9rYOnzH87OEFQNaFy6pdxQ==", - "dev": true, - "dependencies": { - "esbuild": "^0.15.9", - "postcss": "^8.4.18", - "resolve": "^1.22.1", - "rollup": "^2.79.1" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - } - }, - "dependencies": { - "@esbuild/android-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", - "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", - "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", - "dev": true, - "optional": true - }, - "@reactpy/client": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@reactpy/client/-/client-0.2.1.tgz", - "integrity": "sha512-9sgGH+pJ2BpLT+QSVe7FQLS2VQ9acHgPlO8X3qiTumGw43O0X82sm8pzya8H8dAew463SeGza/pZc0mpUBHmqA==", - "requires": { - "event-to-object": "^0.1.2", - "json-pointer": "^0.6.2" - } - }, - "@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "dev": true - }, - "@types/react": { - "version": "17.0.57", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.57.tgz", - "integrity": "sha512-e4msYpu5QDxzNrXDHunU/VPyv2M1XemGG/p7kfCjUiPtlLDCWLGQfgAMng6YyisWYxZ09mYdQlmMnyS0NfZdEg==", - "dev": true, - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "@types/react-dom": { - "version": "17.0.19", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.19.tgz", - "integrity": "sha512-PiYG40pnQRdPHnlf7tZnp0aQ6q9tspYr72vD61saO6zFCybLfMqwUCN0va1/P+86DXn18ZWeW30Bk7xlC5eEAQ==", - "dev": true, - "requires": { - "@types/react": "^17" - } - }, - "@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", - "dev": true - }, - "csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", - "dev": true - }, - "esbuild": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", - "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.15.18", - "@esbuild/linux-loong64": "0.15.18", - "esbuild-android-64": "0.15.18", - "esbuild-android-arm64": "0.15.18", - "esbuild-darwin-64": "0.15.18", - "esbuild-darwin-arm64": "0.15.18", - "esbuild-freebsd-64": "0.15.18", - "esbuild-freebsd-arm64": "0.15.18", - "esbuild-linux-32": "0.15.18", - "esbuild-linux-64": "0.15.18", - "esbuild-linux-arm": "0.15.18", - "esbuild-linux-arm64": "0.15.18", - "esbuild-linux-mips64le": "0.15.18", - "esbuild-linux-ppc64le": "0.15.18", - "esbuild-linux-riscv64": "0.15.18", - "esbuild-linux-s390x": "0.15.18", - "esbuild-netbsd-64": "0.15.18", - "esbuild-openbsd-64": "0.15.18", - "esbuild-sunos-64": "0.15.18", - "esbuild-windows-32": "0.15.18", - "esbuild-windows-64": "0.15.18", - "esbuild-windows-arm64": "0.15.18" - } - }, - "esbuild-android-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", - "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", - "dev": true, - "optional": true - }, - "esbuild-android-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", - "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", - "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", - "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", - "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", - "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", - "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", - "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", - "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", - "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", - "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", - "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", - "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", - "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", - "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", - "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", - "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", - "dev": true, - "optional": true - }, - "esbuild-windows-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", - "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", - "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", - "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", - "dev": true, - "optional": true - }, - "event-to-object": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/event-to-object/-/event-to-object-0.1.2.tgz", - "integrity": "sha512-+fUmp1XOCZiYomwe5Zxp4IlchuZZfdVdjFUk5MbgRT4M+V2TEWKc0jJwKLCX/nxlJ6xM5VUb/ylzERh7YDCRrg==", - "requires": { - "json-pointer": "^0.6.2" - } - }, - "foreach": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz", - "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "is-core-module": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", - "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "peer": true - }, - "json-pointer": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.2.tgz", - "integrity": "sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw==", - "requires": { - "foreach": "^2.0.4" - } - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "peer": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "peer": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", - "dev": true, - "requires": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "preact": { - "version": "10.13.2", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.13.2.tgz", - "integrity": "sha512-q44QFLhOhty2Bd0Y46fnYW0gD/cbVM9dUVtNTDKPcdXSMA7jfY+Jpd6rk3GB0lcQss0z5s/6CmVP0Z/hV+g6pw==" - }, - "react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - } - }, - "resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, - "requires": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true - }, - "vite": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.11.tgz", - "integrity": "sha512-K/jGKL/PgbIgKCiJo5QbASQhFiV02X9Jh+Qq0AKCRCRKZtOTVi4t6wh75FDpGf2N9rYOnzH87OEFQNaFy6pdxQ==", - "dev": true, - "requires": { - "esbuild": "^0.15.9", - "fsevents": "~2.3.2", - "postcss": "^8.4.18", - "resolve": "^1.22.1", - "rollup": "^2.79.1" - } - } - } -} diff --git a/src/js/app/tsconfig.json b/src/js/app/tsconfig.json deleted file mode 100644 index c736ab13d..000000000 --- a/src/js/app/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "../tsconfig.package.json", - "compilerOptions": { - "outDir": "dist", - "rootDir": "src", - "composite": true - }, - "include": ["src"], - "references": [ - { - "path": "../packages/@reactpy/client" - } - ] -} diff --git a/src/js/app/vite.config.js b/src/js/app/vite.config.js deleted file mode 100644 index 64a015757..000000000 --- a/src/js/app/vite.config.js +++ /dev/null @@ -1,13 +0,0 @@ -import { defineConfig } from "vite"; - -export default defineConfig({ - build: { emptyOutDir: true }, - resolve: { - alias: { - react: "preact/compat", - "react-dom": "preact/compat", - }, - preserveSymlinks: true, - }, - base: "/_reactpy/", -}); diff --git a/src/js/bun.lockb b/src/js/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..dafe551d5e3fe2842f0b0021a070313634d1e997 GIT binary patch literal 126920 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≫z168lfF) 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 CHPq+; literal 0 HcmV?d00001 diff --git a/src/js/package-lock.json b/src/js/package-lock.json deleted file mode 100644 index 924f59171..000000000 --- a/src/js/package-lock.json +++ /dev/null @@ -1,5989 +0,0 @@ -{ - "name": "js", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "license": "MIT", - "workspaces": [ - "packages/event-to-object", - "packages/@reactpy/client", - "app" - ], - "devDependencies": { - "@typescript-eslint/eslint-plugin": "^5.58.0", - "@typescript-eslint/parser": "^5.58.0", - "eslint": "^8.38.0", - "eslint-plugin-react": "^7.32.2", - "prettier": "^3.0.0-alpha.6" - } - }, - "app": { - "license": "MIT", - "dependencies": { - "@reactpy/client": "file:../packages/@reactpy/client", - "preact": "^10.7.0" - }, - "devDependencies": { - "@types/react": "^17.0", - "@types/react-dom": "^17.0", - "typescript": "^4.9.5", - "vite": "^3.2.11" - } - }, - "app/node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "apps/ui": { - "extraneous": true, - "license": "MIT", - "dependencies": { - "@reactpy/client": "^0.2.0", - "preact": "^10.7.0" - }, - "devDependencies": { - "@types/react": "^17.0", - "@types/react-dom": "^17.0", - "prettier": "^3.0.0-alpha.6", - "typescript": "^4.9.5", - "vite": "^3.1.8" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", - "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", - "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", - "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", - "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.1", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz", - "integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@reactpy/client": { - "resolved": "packages/@reactpy/client", - "link": true - }, - "node_modules/@types/json-pointer": { - "version": "1.0.31", - "resolved": "https://registry.npmjs.org/@types/json-pointer/-/json-pointer-1.0.31.tgz", - "integrity": "sha512-hTPul7Um6LqsHXHQpdkXTU7Oysjsf+9k4Yfmg6JhSKG/jj9QuQGyMUdj6trPH6WHiIdxw7nYSROgOxeFmCVK2w==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "dev": true - }, - "node_modules/@types/react": { - "version": "17.0.53", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.53.tgz", - "integrity": "sha512-1yIpQR2zdYu1Z/dc1OxC+MA6GR240u3gcnP4l6mvj/PJiVaqHsQPmWttsvHsfnhfPbU2FuGmo0wSITPygjBmsw==", - "dev": true, - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "17.0.19", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.19.tgz", - "integrity": "sha512-PiYG40pnQRdPHnlf7tZnp0aQ6q9tspYr72vD61saO6zFCybLfMqwUCN0va1/P+86DXn18ZWeW30Bk7xlC5eEAQ==", - "dev": true, - "dependencies": { - "@types/react": "^17" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.58.0.tgz", - "integrity": "sha512-vxHvLhH0qgBd3/tW6/VccptSfc8FxPQIkmNTVLWcCOVqSBvqpnKkBTYrhcGlXfSnd78azwe+PsjYFj0X34/njA==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.58.0", - "@typescript-eslint/type-utils": "5.58.0", - "@typescript-eslint/utils": "5.58.0", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.58.0.tgz", - "integrity": "sha512-ixaM3gRtlfrKzP8N6lRhBbjTow1t6ztfBvQNGuRM8qH1bjFFXIJ35XY+FC0RRBKn3C6cT+7VW1y8tNm7DwPHDQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.58.0", - "@typescript-eslint/types": "5.58.0", - "@typescript-eslint/typescript-estree": "5.58.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.58.0.tgz", - "integrity": "sha512-b+w8ypN5CFvrXWQb9Ow9T4/6LC2MikNf1viLkYTiTbkQl46CnR69w7lajz1icW0TBsYmlpg+mRzFJ4LEJ8X9NA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.58.0", - "@typescript-eslint/visitor-keys": "5.58.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.58.0.tgz", - "integrity": "sha512-FF5vP/SKAFJ+LmR9PENql7fQVVgGDOS+dq3j+cKl9iW/9VuZC/8CFmzIP0DLKXfWKpRHawJiG70rVH+xZZbp8w==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.58.0", - "@typescript-eslint/utils": "5.58.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.58.0.tgz", - "integrity": "sha512-JYV4eITHPzVQMnHZcYJXl2ZloC7thuUHrcUmxtzvItyKPvQ50kb9QXBkgNAt90OYMqwaodQh2kHutWZl1fc+1g==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.58.0.tgz", - "integrity": "sha512-cRACvGTodA+UxnYM2uwA2KCwRL7VAzo45syNysqlMyNyjw0Z35Icc9ihPJZjIYuA5bXJYiJ2YGUB59BqlOZT1Q==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.58.0", - "@typescript-eslint/visitor-keys": "5.58.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.58.0.tgz", - "integrity": "sha512-gAmLOTFXMXOC+zP1fsqm3VceKSBQJNzV385Ok3+yzlavNHZoedajjS4UyS21gabJYcobuigQPs/z71A9MdJFqQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.58.0", - "@typescript-eslint/types": "5.58.0", - "@typescript-eslint/typescript-estree": "5.58.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.58.0.tgz", - "integrity": "sha512-/fBraTlPj0jwdyTwLyrRTxv/3lnU2H96pNTVM6z3esTWLtA5MZ9ghSMJ7Rb+TtUAdtEw9EyJzJ0EydIMKxQ9gA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.58.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/app": { - "resolved": "app", - "link": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", - "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "dev": true - }, - "node_modules/csstype": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", - "dev": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dev": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/es-abstract": { - "version": "1.21.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", - "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/esbuild": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", - "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.15.18", - "@esbuild/linux-loong64": "0.15.18", - "esbuild-android-64": "0.15.18", - "esbuild-android-arm64": "0.15.18", - "esbuild-darwin-64": "0.15.18", - "esbuild-darwin-arm64": "0.15.18", - "esbuild-freebsd-64": "0.15.18", - "esbuild-freebsd-arm64": "0.15.18", - "esbuild-linux-32": "0.15.18", - "esbuild-linux-64": "0.15.18", - "esbuild-linux-arm": "0.15.18", - "esbuild-linux-arm64": "0.15.18", - "esbuild-linux-mips64le": "0.15.18", - "esbuild-linux-ppc64le": "0.15.18", - "esbuild-linux-riscv64": "0.15.18", - "esbuild-linux-s390x": "0.15.18", - "esbuild-netbsd-64": "0.15.18", - "esbuild-openbsd-64": "0.15.18", - "esbuild-sunos-64": "0.15.18", - "esbuild-windows-32": "0.15.18", - "esbuild-windows-64": "0.15.18", - "esbuild-windows-arm64": "0.15.18" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", - "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", - "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", - "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", - "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", - "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", - "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", - "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", - "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", - "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", - "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", - "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", - "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", - "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", - "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", - "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", - "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", - "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", - "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", - "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", - "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz", - "integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.38.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.4.0", - "espree": "^9.5.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.32.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", - "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.8" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", - "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", - "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/event-to-object": { - "resolved": "packages/event-to-object", - "link": true - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/foreach": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz", - "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/happy-dom": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-8.9.0.tgz", - "integrity": "sha512-JZwJuGdR7ko8L61136YzmrLv7LgTh5b8XaEM3P709mLjyQuXJ3zHTDXvUtBBahRjGlcYW0zGjIiEWizoTUGKfA==", - "dev": true, - "dependencies": { - "css.escape": "^1.5.1", - "he": "^1.2.0", - "iconv-lite": "^0.6.3", - "node-fetch": "^2.x.x", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/js-sdsl": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", - "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-pointer": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.2.tgz", - "integrity": "sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw==", - "dependencies": { - "foreach": "^2.0.4" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", - "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.hasown": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/preact": { - "version": "10.15.1", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.15.1.tgz", - "integrity": "sha512-qs2ansoQEwzNiV5eAcRT1p1EC/dmEzaATVDJNiB3g2sRDWdA7b7MurXdJjB2+/WQktGWZwxvDrnuRFbWuIr64g==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/preact" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.0.0-alpha.6", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.0-alpha.6.tgz", - "integrity": "sha512-AdbQSZ6Oo+iy9Ekzmsgno05P1uX2vqPkjOMJqRfP8hTe+m6iDw4Nt7bPFpWZ/HYCU+3f0P5U0o2ghxQwwkLH7A==", - "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - }, - "peerDependencies": { - "react": "17.0.2" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, - "dependencies": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dev": true, - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/semver": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz", - "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "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.3", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tsm": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tsm/-/tsm-2.3.0.tgz", - "integrity": "sha512-++0HFnmmR+gMpDtKTnW3XJ4yv9kVGi20n+NfyQWB9qwJvTaIWY9kBmzek2YUQK5APTQ/1DTrXmm4QtFPmW9Rzw==", - "dev": true, - "dependencies": { - "esbuild": "^0.15.16" - }, - "bin": { - "tsm": "bin.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", - "dev": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=12.20" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/uvu": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", - "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", - "dev": true, - "dependencies": { - "dequal": "^2.0.0", - "diff": "^5.0.0", - "kleur": "^4.0.3", - "sade": "^1.7.3" - }, - "bin": { - "uvu": "bin.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/vite": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.11.tgz", - "integrity": "sha512-K/jGKL/PgbIgKCiJo5QbASQhFiV02X9Jh+Qq0AKCRCRKZtOTVi4t6wh75FDpGf2N9rYOnzH87OEFQNaFy6pdxQ==", - "dev": true, - "dependencies": { - "esbuild": "^0.15.9", - "postcss": "^8.4.18", - "resolve": "^1.22.1", - "rollup": "^2.79.1" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "dev": true, - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/whatwg-url/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/@reactpy/client": { - "version": "0.3.2", - "license": "MIT", - "dependencies": { - "event-to-object": "file:../event-to-object", - "json-pointer": "^0.6.2" - }, - "devDependencies": { - "@types/json-pointer": "^1.0.31", - "@types/react": "^17.0", - "@types/react-dom": "^17.0", - "typescript": "^4.9.5" - }, - "peerDependencies": { - "react": ">=16 <18", - "react-dom": ">=16 <18" - } - }, - "packages/@reactpy/client/node_modules/event-to-object": { - "resolved": "packages/@reactpy/event-to-object", - "link": true - }, - "packages/@reactpy/client/node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "packages/@reactpy/event-to-object": {}, - "packages/app": { - "name": "@reactpy/app", - "extraneous": true, - "license": "MIT", - "dependencies": { - "@reactpy/client": "^0.1.0", - "preact": "^10.7.0" - }, - "devDependencies": { - "@types/react": "^17.0", - "@types/react-dom": "^17.0", - "prettier": "^3.0.0-alpha.6", - "typescript": "^4.9.5", - "vite": "^3.1.8" - } - }, - "packages/client": { - "name": "@reactpy/client", - "version": "0.2.0", - "extraneous": true, - "license": "MIT", - "dependencies": { - "event-to-object": "^0.1.0", - "json-pointer": "^0.6.2" - }, - "devDependencies": { - "@types/json-pointer": "^1.0.31", - "@types/react": "^17.0", - "@types/react-dom": "^17.0", - "prettier": "^3.0.0-alpha.6", - "typescript": "^4.9.5" - }, - "peerDependencies": { - "react": ">=16 <18", - "react-dom": ">=16 <18" - } - }, - "packages/event-to-object": { - "version": "0.1.2", - "license": "MIT", - "dependencies": { - "json-pointer": "^0.6.2" - }, - "devDependencies": { - "happy-dom": "^8.9.0", - "lodash": "^4.17.21", - "tsm": "^2.0.0", - "typescript": "^4.9.5", - "uvu": "^0.5.1" - } - }, - "packages/event-to-object/node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "packages/event-to-object/packages/event-to-object": { - "extraneous": true - }, - "ui": { - "extraneous": true, - "license": "MIT", - "dependencies": { - "@reactpy/client": "^0.2.0", - "preact": "^10.7.0" - }, - "devDependencies": { - "@types/react": "^17.0", - "@types/react-dom": "^17.0", - "typescript": "^4.9.5", - "vite": "^3.1.8" - } - } - }, - "dependencies": { - "@esbuild/android-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", - "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", - "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", - "dev": true, - "optional": true - }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint-community/regexpp": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", - "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", - "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.1", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - } - }, - "@eslint/js": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz", - "integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==", - "dev": true - }, - "@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@reactpy/client": { - "version": "file:packages/@reactpy/client", - "requires": { - "@types/json-pointer": "^1.0.31", - "@types/react": "^17.0", - "@types/react-dom": "^17.0", - "event-to-object": "file:../event-to-object", - "json-pointer": "^0.6.2", - "typescript": "^4.9.5" - }, - "dependencies": { - "event-to-object": { - "version": "file:packages/@reactpy/event-to-object" - }, - "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true - } - } - }, - "@types/json-pointer": { - "version": "1.0.31", - "resolved": "https://registry.npmjs.org/@types/json-pointer/-/json-pointer-1.0.31.tgz", - "integrity": "sha512-hTPul7Um6LqsHXHQpdkXTU7Oysjsf+9k4Yfmg6JhSKG/jj9QuQGyMUdj6trPH6WHiIdxw7nYSROgOxeFmCVK2w==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "dev": true - }, - "@types/react": { - "version": "17.0.53", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.53.tgz", - "integrity": "sha512-1yIpQR2zdYu1Z/dc1OxC+MA6GR240u3gcnP4l6mvj/PJiVaqHsQPmWttsvHsfnhfPbU2FuGmo0wSITPygjBmsw==", - "dev": true, - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "@types/react-dom": { - "version": "17.0.19", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.19.tgz", - "integrity": "sha512-PiYG40pnQRdPHnlf7tZnp0aQ6q9tspYr72vD61saO6zFCybLfMqwUCN0va1/P+86DXn18ZWeW30Bk7xlC5eEAQ==", - "dev": true, - "requires": { - "@types/react": "^17" - } - }, - "@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", - "dev": true - }, - "@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.58.0.tgz", - "integrity": "sha512-vxHvLhH0qgBd3/tW6/VccptSfc8FxPQIkmNTVLWcCOVqSBvqpnKkBTYrhcGlXfSnd78azwe+PsjYFj0X34/njA==", - "dev": true, - "requires": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.58.0", - "@typescript-eslint/type-utils": "5.58.0", - "@typescript-eslint/utils": "5.58.0", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/parser": { - "version": "5.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.58.0.tgz", - "integrity": "sha512-ixaM3gRtlfrKzP8N6lRhBbjTow1t6ztfBvQNGuRM8qH1bjFFXIJ35XY+FC0RRBKn3C6cT+7VW1y8tNm7DwPHDQ==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.58.0", - "@typescript-eslint/types": "5.58.0", - "@typescript-eslint/typescript-estree": "5.58.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.58.0.tgz", - "integrity": "sha512-b+w8ypN5CFvrXWQb9Ow9T4/6LC2MikNf1viLkYTiTbkQl46CnR69w7lajz1icW0TBsYmlpg+mRzFJ4LEJ8X9NA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.58.0", - "@typescript-eslint/visitor-keys": "5.58.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.58.0.tgz", - "integrity": "sha512-FF5vP/SKAFJ+LmR9PENql7fQVVgGDOS+dq3j+cKl9iW/9VuZC/8CFmzIP0DLKXfWKpRHawJiG70rVH+xZZbp8w==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "5.58.0", - "@typescript-eslint/utils": "5.58.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.58.0.tgz", - "integrity": "sha512-JYV4eITHPzVQMnHZcYJXl2ZloC7thuUHrcUmxtzvItyKPvQ50kb9QXBkgNAt90OYMqwaodQh2kHutWZl1fc+1g==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.58.0.tgz", - "integrity": "sha512-cRACvGTodA+UxnYM2uwA2KCwRL7VAzo45syNysqlMyNyjw0Z35Icc9ihPJZjIYuA5bXJYiJ2YGUB59BqlOZT1Q==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.58.0", - "@typescript-eslint/visitor-keys": "5.58.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/utils": { - "version": "5.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.58.0.tgz", - "integrity": "sha512-gAmLOTFXMXOC+zP1fsqm3VceKSBQJNzV385Ok3+yzlavNHZoedajjS4UyS21gabJYcobuigQPs/z71A9MdJFqQ==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.58.0", - "@typescript-eslint/types": "5.58.0", - "@typescript-eslint/typescript-estree": "5.58.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "dependencies": { - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.58.0.tgz", - "integrity": "sha512-/fBraTlPj0jwdyTwLyrRTxv/3lnU2H96pNTVM6z3esTWLtA5MZ9ghSMJ7Rb+TtUAdtEw9EyJzJ0EydIMKxQ9gA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.58.0", - "eslint-visitor-keys": "^3.3.0" - } - }, - "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "app": { - "version": "file:app", - "requires": { - "@reactpy/client": "file:../packages/@reactpy/client", - "@types/react": "^17.0", - "@types/react-dom": "^17.0", - "preact": "^10.7.0", - "typescript": "^4.9.5", - "vite": "^3.2.11" - }, - "dependencies": { - "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true - } - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - } - }, - "array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.tosorted": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", - "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" - } - }, - "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "requires": { - "fill-range": "^7.1.1" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "dev": true - }, - "csstype": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true - }, - "diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "es-abstract": { - "version": "1.21.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", - "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", - "dev": true, - "requires": { - "array-buffer-byte-length": "^1.0.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" - } - }, - "es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - } - }, - "es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "esbuild": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", - "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.15.18", - "@esbuild/linux-loong64": "0.15.18", - "esbuild-android-64": "0.15.18", - "esbuild-android-arm64": "0.15.18", - "esbuild-darwin-64": "0.15.18", - "esbuild-darwin-arm64": "0.15.18", - "esbuild-freebsd-64": "0.15.18", - "esbuild-freebsd-arm64": "0.15.18", - "esbuild-linux-32": "0.15.18", - "esbuild-linux-64": "0.15.18", - "esbuild-linux-arm": "0.15.18", - "esbuild-linux-arm64": "0.15.18", - "esbuild-linux-mips64le": "0.15.18", - "esbuild-linux-ppc64le": "0.15.18", - "esbuild-linux-riscv64": "0.15.18", - "esbuild-linux-s390x": "0.15.18", - "esbuild-netbsd-64": "0.15.18", - "esbuild-openbsd-64": "0.15.18", - "esbuild-sunos-64": "0.15.18", - "esbuild-windows-32": "0.15.18", - "esbuild-windows-64": "0.15.18", - "esbuild-windows-arm64": "0.15.18" - } - }, - "esbuild-android-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", - "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", - "dev": true, - "optional": true - }, - "esbuild-android-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", - "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", - "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", - "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", - "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", - "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", - "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", - "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", - "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", - "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", - "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", - "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", - "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", - "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", - "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", - "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", - "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", - "dev": true, - "optional": true - }, - "esbuild-windows-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", - "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", - "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", - "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", - "dev": true, - "optional": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz", - "integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.38.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.4.0", - "espree": "^9.5.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - } - }, - "eslint-plugin-react": { - "version": "7.32.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", - "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", - "dev": true, - "requires": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.8" - }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", - "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", - "dev": true - }, - "espree": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", - "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", - "dev": true, - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.0" - } - }, - "esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "event-to-object": { - "version": "file:packages/event-to-object", - "requires": { - "happy-dom": "^8.9.0", - "json-pointer": "^0.6.2", - "lodash": "^4.17.21", - "tsm": "^2.0.0", - "typescript": "^4.9.5", - "uvu": "^0.5.1" - }, - "dependencies": { - "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true - } - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "requires": { - "is-callable": "^1.1.3" - } - }, - "foreach": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz", - "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - } - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true - }, - "get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "happy-dom": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-8.9.0.tgz", - "integrity": "sha512-JZwJuGdR7ko8L61136YzmrLv7LgTh5b8XaEM3P709mLjyQuXJ3zHTDXvUtBBahRjGlcYW0zGjIiEWizoTUGKfA==", - "dev": true, - "requires": { - "css.escape": "^1.5.1", - "he": "^1.2.0", - "iconv-lite": "^0.6.3", - "node-fetch": "^2.x.x", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - } - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - } - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "js-sdsl": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", - "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "json-pointer": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.2.tgz", - "integrity": "sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw==", - "requires": { - "foreach": "^2.0.4" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "jsx-ast-utils": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", - "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", - "dev": true, - "requires": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" - } - }, - "kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "dev": true, - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - }, - "object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "object.hasown": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", - "dev": true, - "requires": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", - "dev": true, - "requires": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "preact": { - "version": "10.15.1", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.15.1.tgz", - "integrity": "sha512-qs2ansoQEwzNiV5eAcRT1p1EC/dmEzaATVDJNiB3g2sRDWdA7b7MurXdJjB2+/WQktGWZwxvDrnuRFbWuIr64g==" - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "prettier": { - "version": "3.0.0-alpha.6", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.0-alpha.6.tgz", - "integrity": "sha512-AdbQSZ6Oo+iy9Ekzmsgno05P1uX2vqPkjOMJqRfP8hTe+m6iDw4Nt7bPFpWZ/HYCU+3f0P5U0o2ghxQwwkLH7A==", - "dev": true - }, - "prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - } - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - }, - "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - } - }, - "resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, - "requires": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dev": true, - "requires": { - "mri": "^1.1.0" - } - }, - "safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "semver": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz", - "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true - }, - "string.prototype.matchall": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "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.3", - "side-channel": "^1.0.4" - } - }, - "string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "tsm": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tsm/-/tsm-2.3.0.tgz", - "integrity": "sha512-++0HFnmmR+gMpDtKTnW3XJ4yv9kVGi20n+NfyQWB9qwJvTaIWY9kBmzek2YUQK5APTQ/1DTrXmm4QtFPmW9Rzw==", - "dev": true, - "requires": { - "esbuild": "^0.15.16" - } - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - } - }, - "typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", - "dev": true, - "peer": true - }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "uvu": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", - "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", - "dev": true, - "requires": { - "dequal": "^2.0.0", - "diff": "^5.0.0", - "kleur": "^4.0.3", - "sade": "^1.7.3" - } - }, - "vite": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.11.tgz", - "integrity": "sha512-K/jGKL/PgbIgKCiJo5QbASQhFiV02X9Jh+Qq0AKCRCRKZtOTVi4t6wh75FDpGf2N9rYOnzH87OEFQNaFy6pdxQ==", - "dev": true, - "requires": { - "esbuild": "^0.15.9", - "fsevents": "~2.3.2", - "postcss": "^8.4.18", - "resolve": "^1.22.1", - "rollup": "^2.79.1" - } - }, - "webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true - }, - "whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "dev": true, - "requires": { - "iconv-lite": "0.6.3" - } - }, - "whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - } - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - } - }, - "word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - } - } -} diff --git a/src/js/package.json b/src/js/package.json index a9d84814b..d2c9cd6a4 100644 --- a/src/js/package.json +++ b/src/js/package.json @@ -1,9 +1,7 @@ { + "type": "module", "license": "MIT", "scripts": { - "publish": "npm --workspaces publish", - "test": "npm --workspaces test", - "build": "npm --workspaces run build", "fix:format": "npm run prettier -- --write && npm run eslint -- --fix", "check:format": "npm run prettier -- --check && npm run eslint", "check:tests": "npm --workspaces run check:tests", @@ -12,9 +10,9 @@ "eslint": "eslint --ignore-path .gitignore ." }, "workspaces": [ - "packages/event-to-object", "packages/@reactpy/client", - "app" + "packages/@reactpy/app", + "packages/*" ], "devDependencies": { "@typescript-eslint/eslint-plugin": "^5.58.0", diff --git a/src/js/app/.eslintrc.json b/src/js/packages/@reactpy/app/.eslintrc.json similarity index 100% rename from src/js/app/.eslintrc.json rename to src/js/packages/@reactpy/app/.eslintrc.json diff --git a/src/js/app/index.html b/src/js/packages/@reactpy/app/index.html similarity index 100% rename from src/js/app/index.html rename to src/js/packages/@reactpy/app/index.html diff --git a/src/js/app/package.json b/src/js/packages/@reactpy/app/package.json similarity index 90% rename from src/js/app/package.json rename to src/js/packages/@reactpy/app/package.json index f3b7a1cf7..9ab2bfb0a 100644 --- a/src/js/app/package.json +++ b/src/js/packages/@reactpy/app/package.json @@ -3,9 +3,10 @@ "license": "MIT", "main": "src/dist/index.js", "types": "src/dist/index.d.ts", + "name": "@reactpy/app", "description": "Main entry point for ReactPy.", "dependencies": { - "@reactpy/client": "file:../packages/@reactpy/client", + "@reactpy/client": "file:../client", "preact": "^10.7.0" }, "devDependencies": { diff --git a/src/js/app/public/assets/reactpy-logo.ico b/src/js/packages/@reactpy/app/public/assets/reactpy-logo.ico similarity index 100% rename from src/js/app/public/assets/reactpy-logo.ico rename to src/js/packages/@reactpy/app/public/assets/reactpy-logo.ico diff --git a/src/js/app/src/index.ts b/src/js/packages/@reactpy/app/src/index.ts similarity index 100% rename from src/js/app/src/index.ts rename to src/js/packages/@reactpy/app/src/index.ts diff --git a/src/js/packages/@reactpy/client/package.json b/src/js/packages/@reactpy/client/package.json index d399f7b91..28bfe2930 100644 --- a/src/js/packages/@reactpy/client/package.json +++ b/src/js/packages/@reactpy/client/package.json @@ -8,7 +8,7 @@ "type": "module", "version": "0.3.2", "dependencies": { - "event-to-object": "file:../event-to-object", + "event-to-object": "file:../../event-to-object", "json-pointer": "^0.6.2" }, "devDependencies": { diff --git a/src/js/packages/@reactpy/client/tsconfig.json b/src/js/packages/@reactpy/client/tsconfig.json deleted file mode 100644 index 2e1483e10..000000000 --- a/src/js/packages/@reactpy/client/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "../../../tsconfig.package.json", - "compilerOptions": { - "outDir": "dist", - "rootDir": "src", - "composite": true - }, - "include": ["src"], - "references": [ - { - "path": "../../event-to-object" - } - ] -} diff --git a/src/js/packages/event-to-object/tsconfig.json b/src/js/packages/event-to-object/tsconfig.json deleted file mode 100644 index b9a031fa9..000000000 --- a/src/js/packages/event-to-object/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "../../tsconfig.package.json", - "compilerOptions": { - "outDir": "dist", - "rootDir": "src", - "composite": true - }, - "include": ["src"] -} diff --git a/src/js/packages/event-to-object/tsconfig.tests.json b/src/js/packages/event-to-object/tsconfig.tests.json deleted file mode 100644 index 33be69a56..000000000 --- a/src/js/packages/event-to-object/tsconfig.tests.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "compilerOptions": { - "target": "esnext", - "allowJs": false, - "skipLibCheck": false, - "esModuleInterop": false, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "module": "esnext", - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true - } -} diff --git a/src/js/tsconfig.package.json b/src/js/tsconfig.package.json deleted file mode 100644 index 9e7fe5f74..000000000 --- a/src/js/tsconfig.package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "allowJs": false, - "allowSyntheticDefaultImports": true, - "declaration": true, - "declarationMap": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "isolatedModules": true, - "jsx": "react", - "lib": ["DOM", "DOM.Iterable", "esnext"], - "module": "esnext", - "moduleResolution": "node", - "noEmitOnError": true, - "noUnusedLocals": true, - "resolveJsonModule": true, - "skipLibCheck": false, - "sourceMap": true, - "strict": true, - "target": "esnext" - } -} From f54f9c418f56516ec82fef195ad6847cde417414 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Sat, 4 Jan 2025 17:50:32 -0800 Subject: [PATCH 03/30] re-add tsconfig --- src/js/packages/@reactpy/app/tsconfig.json | 14 ++++++++++++ src/js/packages/@reactpy/client/tsconfig.json | 14 ++++++++++++ src/js/packages/event-to-object/tsconfig.json | 9 ++++++++ src/js/tsconfig.package.json | 22 +++++++++++++++++++ 4 files changed, 59 insertions(+) create mode 100644 src/js/packages/@reactpy/app/tsconfig.json create mode 100644 src/js/packages/@reactpy/client/tsconfig.json create mode 100644 src/js/packages/event-to-object/tsconfig.json create mode 100644 src/js/tsconfig.package.json diff --git a/src/js/packages/@reactpy/app/tsconfig.json b/src/js/packages/@reactpy/app/tsconfig.json new file mode 100644 index 000000000..caa7efc8d --- /dev/null +++ b/src/js/packages/@reactpy/app/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../tsconfig.package.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "composite": true + }, + "include": ["src"], + "references": [ + { + "path": "../client" + } + ] +} diff --git a/src/js/packages/@reactpy/client/tsconfig.json b/src/js/packages/@reactpy/client/tsconfig.json new file mode 100644 index 000000000..2e1483e10 --- /dev/null +++ b/src/js/packages/@reactpy/client/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../tsconfig.package.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "composite": true + }, + "include": ["src"], + "references": [ + { + "path": "../../event-to-object" + } + ] +} diff --git a/src/js/packages/event-to-object/tsconfig.json b/src/js/packages/event-to-object/tsconfig.json new file mode 100644 index 000000000..b9a031fa9 --- /dev/null +++ b/src/js/packages/event-to-object/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.package.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "composite": true + }, + "include": ["src"] +} diff --git a/src/js/tsconfig.package.json b/src/js/tsconfig.package.json new file mode 100644 index 000000000..9e7fe5f74 --- /dev/null +++ b/src/js/tsconfig.package.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "allowJs": false, + "allowSyntheticDefaultImports": true, + "declaration": true, + "declarationMap": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + "jsx": "react", + "lib": ["DOM", "DOM.Iterable", "esnext"], + "module": "esnext", + "moduleResolution": "node", + "noEmitOnError": true, + "noUnusedLocals": true, + "resolveJsonModule": true, + "skipLibCheck": false, + "sourceMap": true, + "strict": true, + "target": "esnext" + } +} From 754c838d96f390d6da076e7bf4562cf89ad3a4fd Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Sun, 12 Jan 2025 04:09:18 -0800 Subject: [PATCH 04/30] re-add TS config --- src/js/package.json | 6 ++++-- src/js/packages/@reactpy/app/tsconfig.json | 2 +- src/js/packages/@reactpy/client/tsconfig.json | 2 +- src/js/packages/event-to-object/tsconfig.json | 2 +- src/js/{tsconfig.package.json => tsconfig.json} | 0 5 files changed, 7 insertions(+), 5 deletions(-) rename src/js/{tsconfig.package.json => tsconfig.json} (100%) diff --git a/src/js/package.json b/src/js/package.json index d2c9cd6a4..79dc9b057 100644 --- a/src/js/package.json +++ b/src/js/package.json @@ -2,6 +2,9 @@ "type": "module", "license": "MIT", "scripts": { + "publish": "npm --workspaces publish", + "test": "npm --workspaces test", + "build": "npm --workspaces run build", "fix:format": "npm run prettier -- --write && npm run eslint -- --fix", "check:format": "npm run prettier -- --check && npm run eslint", "check:tests": "npm --workspaces run check:tests", @@ -10,8 +13,7 @@ "eslint": "eslint --ignore-path .gitignore ." }, "workspaces": [ - "packages/@reactpy/client", - "packages/@reactpy/app", + "packages/@reactpy/*", "packages/*" ], "devDependencies": { diff --git a/src/js/packages/@reactpy/app/tsconfig.json b/src/js/packages/@reactpy/app/tsconfig.json index caa7efc8d..fb7013663 100644 --- a/src/js/packages/@reactpy/app/tsconfig.json +++ b/src/js/packages/@reactpy/app/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../../tsconfig.package.json", + "extends": "../../../tsconfig.json", "compilerOptions": { "outDir": "dist", "rootDir": "src", diff --git a/src/js/packages/@reactpy/client/tsconfig.json b/src/js/packages/@reactpy/client/tsconfig.json index 2e1483e10..032152ae8 100644 --- a/src/js/packages/@reactpy/client/tsconfig.json +++ b/src/js/packages/@reactpy/client/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../../tsconfig.package.json", + "extends": "../../../tsconfig.json", "compilerOptions": { "outDir": "dist", "rootDir": "src", diff --git a/src/js/packages/event-to-object/tsconfig.json b/src/js/packages/event-to-object/tsconfig.json index b9a031fa9..9b0e0b6a5 100644 --- a/src/js/packages/event-to-object/tsconfig.json +++ b/src/js/packages/event-to-object/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.package.json", + "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "dist", "rootDir": "src", diff --git a/src/js/tsconfig.package.json b/src/js/tsconfig.json similarity index 100% rename from src/js/tsconfig.package.json rename to src/js/tsconfig.json From 363288032f05fe55556f6eae354c4162b3ec401c Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Mon, 13 Jan 2025 20:17:54 -0800 Subject: [PATCH 05/30] functional JS build --- pyproject.toml | 7 +++---- src/js/bun.lockb | Bin 126920 -> 100329 bytes src/js/package.json | 16 ---------------- src/js/packages/@reactpy/app/bun.lockb | Bin 0 -> 7191 bytes src/js/packages/@reactpy/app/package.json | 16 +++------------- src/js/packages/@reactpy/client/bun.lockb | Bin 0 -> 6514 bytes src/js/packages/@reactpy/client/package.json | 13 ++----------- src/js/packages/event-to-object/bun.lockb | Bin 0 -> 8352 bytes src/js/packages/event-to-object/package.json | 4 ---- 9 files changed, 8 insertions(+), 48 deletions(-) create mode 100644 src/js/packages/@reactpy/app/bun.lockb create mode 100644 src/js/packages/@reactpy/client/bun.lockb create mode 100644 src/js/packages/event-to-object/bun.lockb diff --git a/pyproject.toml b/pyproject.toml index 9f90c969d..ec5379546 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -57,11 +57,10 @@ license-files = { paths = ["LICENSE.md"] } installer = "uv" [[tool.hatch.build.hooks.build-scripts.scripts]] -# TODO: Nuke NPM from the repo commands = [ - # TODO: Need to build JS here. Try switching to bun. - "cd src && cd js && npm install && npm run build", - "cd scripts && python copy_js_output.py", + "cd src && cd js && cd packages && cd '@reactpy' && cd app && bun install --production --force --frozen-lockfile --no-save", + "cd src && cd js && cd '@reactpy' && cd app && bun build ./src/index.ts --outdir ./dist --minify --sourcemap=linked", + # "cd scripts && python copy_js_output.py", ] artifacts = [] diff --git a/src/js/bun.lockb b/src/js/bun.lockb index dafe551d5e3fe2842f0b0021a070313634d1e997..e935b9cc807d85dd1f0254bac1510073af862598 100644 GIT binary patch delta 15324 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 delta 31953 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 diff --git a/src/js/package.json b/src/js/package.json index 79dc9b057..35d7157a4 100644 --- a/src/js/package.json +++ b/src/js/package.json @@ -1,21 +1,5 @@ { - "type": "module", "license": "MIT", - "scripts": { - "publish": "npm --workspaces publish", - "test": "npm --workspaces test", - "build": "npm --workspaces run build", - "fix:format": "npm run prettier -- --write && npm run eslint -- --fix", - "check:format": "npm run prettier -- --check && npm run eslint", - "check:tests": "npm --workspaces run check:tests", - "check:types": "npm --workspaces run check:types", - "prettier": "prettier --ignore-path .gitignore .", - "eslint": "eslint --ignore-path .gitignore ." - }, - "workspaces": [ - "packages/@reactpy/*", - "packages/*" - ], "devDependencies": { "@typescript-eslint/eslint-plugin": "^5.58.0", "@typescript-eslint/parser": "^5.58.0", diff --git a/src/js/packages/@reactpy/app/bun.lockb b/src/js/packages/@reactpy/app/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..9b6711a94ffa026046ecc30e00a82b5c9c8834de GIT binary patch literal 7191 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 literal 0 HcmV?d00001 diff --git a/src/js/packages/@reactpy/app/package.json b/src/js/packages/@reactpy/app/package.json index 9ab2bfb0a..48b5c9370 100644 --- a/src/js/packages/@reactpy/app/package.json +++ b/src/js/packages/@reactpy/app/package.json @@ -1,29 +1,19 @@ { "author": "Ryan Morshead", "license": "MIT", - "main": "src/dist/index.js", - "types": "src/dist/index.d.ts", "name": "@reactpy/app", "description": "Main entry point for ReactPy.", "dependencies": { - "@reactpy/client": "file:../client", + "@reactpy/client": "^0.3.2", + "event-to-object": "^0.1.2", "preact": "^10.7.0" }, "devDependencies": { "@types/react": "^17.0", - "@types/react-dom": "^17.0", - "typescript": "^4.9.5", - "vite": "^3.2.11" + "@types/react-dom": "^17.0" }, "repository": { "type": "git", "url": "https://github.com/reactive-python/reactpy" - }, - "scripts": { - "build": "vite build", - "format": "prettier --write . && eslint --fix .", - "test": "npm run check:tests", - "check:tests": "echo 'no tests'", - "check:types": "tsc --noEmit" } } diff --git a/src/js/packages/@reactpy/client/bun.lockb b/src/js/packages/@reactpy/client/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..9f04643fe2e23f513e945bb5eb82a4ea426aa8b4 GIT binary patch literal 6514 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 literal 0 HcmV?d00001 diff --git a/src/js/packages/@reactpy/client/package.json b/src/js/packages/@reactpy/client/package.json index 28bfe2930..1c7c326f6 100644 --- a/src/js/packages/@reactpy/client/package.json +++ b/src/js/packages/@reactpy/client/package.json @@ -1,21 +1,18 @@ { "author": "Ryan Morshead", - "main": "dist/index.js", - "types": "dist/index.d.ts", "description": "A client for ReactPy implemented in React", "license": "MIT", "name": "@reactpy/client", "type": "module", "version": "0.3.2", "dependencies": { - "event-to-object": "file:../../event-to-object", + "event-to-object": "^0.1.2", "json-pointer": "^0.6.2" }, "devDependencies": { "@types/json-pointer": "^1.0.31", "@types/react": "^17.0", - "@types/react-dom": "^17.0", - "typescript": "^4.9.5" + "@types/react-dom": "^17.0" }, "peerDependencies": { "react": ">=16 <18", @@ -24,11 +21,5 @@ "repository": { "type": "git", "url": "https://github.com/reactive-python/reactpy" - }, - "scripts": { - "build": "tsc -b", - "test": "npm run check:tests", - "check:tests": "echo 'no tests'", - "check:types": "tsc --noEmit" } } diff --git a/src/js/packages/event-to-object/bun.lockb b/src/js/packages/event-to-object/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..a7ad78fa7ee45c1d8c6b9a85f22723c5b579eaef GIT binary patch literal 8352 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 MQZ%i)|9}7g1$47; Date: Mon, 13 Jan 2025 20:19:35 -0800 Subject: [PATCH 06/30] Remove unneded tsconfig --- src/js/packages/@reactpy/app/tsconfig.json | 14 ------------ src/js/packages/@reactpy/client/tsconfig.json | 14 ------------ src/js/packages/event-to-object/tsconfig.json | 9 -------- src/js/tsconfig.json | 22 ------------------- 4 files changed, 59 deletions(-) delete mode 100644 src/js/packages/@reactpy/app/tsconfig.json delete mode 100644 src/js/packages/@reactpy/client/tsconfig.json delete mode 100644 src/js/packages/event-to-object/tsconfig.json delete mode 100644 src/js/tsconfig.json diff --git a/src/js/packages/@reactpy/app/tsconfig.json b/src/js/packages/@reactpy/app/tsconfig.json deleted file mode 100644 index fb7013663..000000000 --- a/src/js/packages/@reactpy/app/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "../../../tsconfig.json", - "compilerOptions": { - "outDir": "dist", - "rootDir": "src", - "composite": true - }, - "include": ["src"], - "references": [ - { - "path": "../client" - } - ] -} diff --git a/src/js/packages/@reactpy/client/tsconfig.json b/src/js/packages/@reactpy/client/tsconfig.json deleted file mode 100644 index 032152ae8..000000000 --- a/src/js/packages/@reactpy/client/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "../../../tsconfig.json", - "compilerOptions": { - "outDir": "dist", - "rootDir": "src", - "composite": true - }, - "include": ["src"], - "references": [ - { - "path": "../../event-to-object" - } - ] -} diff --git a/src/js/packages/event-to-object/tsconfig.json b/src/js/packages/event-to-object/tsconfig.json deleted file mode 100644 index 9b0e0b6a5..000000000 --- a/src/js/packages/event-to-object/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "dist", - "rootDir": "src", - "composite": true - }, - "include": ["src"] -} diff --git a/src/js/tsconfig.json b/src/js/tsconfig.json deleted file mode 100644 index 9e7fe5f74..000000000 --- a/src/js/tsconfig.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "allowJs": false, - "allowSyntheticDefaultImports": true, - "declaration": true, - "declarationMap": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "isolatedModules": true, - "jsx": "react", - "lib": ["DOM", "DOM.Iterable", "esnext"], - "module": "esnext", - "moduleResolution": "node", - "noEmitOnError": true, - "noUnusedLocals": true, - "resolveJsonModule": true, - "skipLibCheck": false, - "sourceMap": true, - "strict": true, - "target": "esnext" - } -} From ecc31a7a721a02361058d7956253d478ed46556e Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Mon, 13 Jan 2025 20:31:17 -0800 Subject: [PATCH 07/30] cleaner build cmd --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index ec5379546..ad60018f6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -58,8 +58,8 @@ installer = "uv" [[tool.hatch.build.hooks.build-scripts.scripts]] commands = [ - "cd src && cd js && cd packages && cd '@reactpy' && cd app && bun install --production --force --frozen-lockfile --no-save", - "cd src && cd js && cd '@reactpy' && cd app && bun build ./src/index.ts --outdir ./dist --minify --sourcemap=linked", + "bun install --production --force --frozen-lockfile --no-save --cwd 'src/js/packages/@reactpy/app'", + "bun build './src/js/packages/@reactpy/app/src/index.ts' --outdir './src/js/packages/@reactpy/app/dist' --minify --sourcemap=linked", # "cd scripts && python copy_js_output.py", ] artifacts = [] From a15d33eba7352a1d941c6a49e79c4e3b84995df0 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 14 Jan 2025 12:18:13 -0800 Subject: [PATCH 08/30] clean up install cmd --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index ad60018f6..110cea756 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -58,7 +58,7 @@ installer = "uv" [[tool.hatch.build.hooks.build-scripts.scripts]] commands = [ - "bun install --production --force --frozen-lockfile --no-save --cwd 'src/js/packages/@reactpy/app'", + "bun install --cwd 'src/js/packages/@reactpy/app' --production --frozen-lockfile", "bun build './src/js/packages/@reactpy/app/src/index.ts' --outdir './src/js/packages/@reactpy/app/dist' --minify --sourcemap=linked", # "cd scripts && python copy_js_output.py", ] From fe848082208f02b0a33bc33be9dd9f6a2b28e5db Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 14 Jan 2025 17:12:33 -0800 Subject: [PATCH 09/30] Seemingly fully functional Python build? --- .gitignore | 2 +- pyproject.toml | 6 +++--- src/build_scripts/copy_js_output.py | 8 -------- src/js/packages/@reactpy/app/index.html | 15 --------------- .../@reactpy/app/public/assets/reactpy-logo.ico | Bin 14916 -> 0 bytes src/js/packages/@reactpy/app/src/index.ts | 10 +++++++++- src/reactpy/backend/_common.py | 11 +---------- src/reactpy/static/index.html | 14 ++++++++++++++ 8 files changed, 28 insertions(+), 38 deletions(-) delete mode 100644 src/build_scripts/copy_js_output.py delete mode 100644 src/js/packages/@reactpy/app/index.html delete mode 100644 src/js/packages/@reactpy/app/public/assets/reactpy-logo.ico create mode 100644 src/reactpy/static/index.html diff --git a/.gitignore b/.gitignore index aee96f2f6..6cc8e33ca 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ # --- Build Artifacts --- -src/reactpy/static +src/reactpy/static/**/index.js* # --- Jupyter --- *.ipynb_checkpoints diff --git a/pyproject.toml b/pyproject.toml index 110cea756..64338efc5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -58,9 +58,9 @@ installer = "uv" [[tool.hatch.build.hooks.build-scripts.scripts]] commands = [ - "bun install --cwd 'src/js/packages/@reactpy/app' --production --frozen-lockfile", - "bun build './src/js/packages/@reactpy/app/src/index.ts' --outdir './src/js/packages/@reactpy/app/dist' --minify --sourcemap=linked", - # "cd scripts && python copy_js_output.py", + 'bun install --cwd "src/js/packages/@reactpy/app" --production --frozen-lockfile', + # TODO: Remove 'assets' from this path after turning ReactPy into ASGI middleware. + 'bun build "./src/js/packages/@reactpy/app/src/index.ts" --outdir "./src/reactpy/static/assets/" --minify --sourcemap=linked', ] artifacts = [] diff --git a/src/build_scripts/copy_js_output.py b/src/build_scripts/copy_js_output.py deleted file mode 100644 index 23bcc29b7..000000000 --- a/src/build_scripts/copy_js_output.py +++ /dev/null @@ -1,8 +0,0 @@ -from pathlib import Path -from shutil import copytree, rmtree - -output_dir = Path(__file__).parent.parent / "reactpy" / "static" -source_dir = Path(__file__).parent.parent / "js" / "app" / "dist" -rmtree(output_dir, ignore_errors=True) -copytree(source_dir, output_dir) -print("JavaScript output copied to reactpy/static") # noqa: T201 diff --git a/src/js/packages/@reactpy/app/index.html b/src/js/packages/@reactpy/app/index.html deleted file mode 100644 index e94280368..000000000 --- a/src/js/packages/@reactpy/app/index.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - {__head__} - - -
- - diff --git a/src/js/packages/@reactpy/app/public/assets/reactpy-logo.ico b/src/js/packages/@reactpy/app/public/assets/reactpy-logo.ico deleted file mode 100644 index 62be5f5ba7e159e3977d1ae42d4bea1734854c1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14916 zcma)jWmFtIu;?xpgE$A97d)X_Uwdvv?Me-oQ5WX=9mA-d)c$P+wIuN zndWVyXI9yHTMmrOy_bfo!+PuenlmhrV@_EN^?yYd#|R5j?4^ofgw`d~qLR{T?sQ*6 z|AUQDgn!WZ(JO$hW&{gS{0Xh=u@{A0pF%i1v=Zz`0VR2o$OPNQIi%|aT zN2FjdZ5mBwmjqN6i%Kqd5&u5F2d_{m|HhL~C56g?@C^}o9sOCZ$6Hl zcbht{sQ>2Em32p%$|am2hdE6h-l3f^pWa?Rl9QUlD7oiXL8ZoSl{M!44=qn+1w$sA z?om&z?t_g-#%JP5KIRT~g3^)MbcV%3+6ab)y~*^Og*_&Pg+4&+%X?tD{Ni3tx?b)G zi^6CknQ|XfN}@EM!uKgt2ZiVv(|W2yG6dHeDlB#$*o;SIg(sVtgbjr#N`60e=%iVq zkD-&SThFn60M;v5L9j<=(^T~B*9hM4oTgq&@1G-n?2oDmIa>m;?_FOKl(h%|93WWb z4##x8;t^W~+@4Rb`U!&!88_$(oR(K?oD7d0x*Vkorfv$ngg%jg0azaaYj@tu*ZSkZ)vQH!g)>8>b*DH4Yxl1hjv&`pO+}tJ1+5kLBg3 zVBdFKKiw-i@1SFhePH9%LFLyo$e7A!ll)87LLs}_3N2%cG4}D~>(w8PNF89q^8B#J zA1u6E$2AGRns0sP3Afys4s&~e0_mozgU<^LqDqPfmn`lXc9~qp(nAO7#r<{t>MY7p zw$$_ODo^9nc+f&aePwS7ZCIKUt$qSl6Sx|}F1@r+scSCKL8qHzCn?fG%oo{;;Qc5$ zRV5RQulDi6!^d~DXH|SBIOUV41*UDQv-GnD{yUvjBUE??#{|uH)?&ZN%3t>CTl)t2 zI@hm+#7Eqc29gxSXNgotH?g4O7MQD!&i3}2_8o-Yqd95uNLE+vh2d2x4(u(G2~Jh0 z!0UA{3Z$<2z(>epeP80gt;)`;fNhnnl$e7Pe?lrH!`u$Q`@Hy*S|B~JVi-Uf=XY7M zvSz(Uz(%jVzp0Y2=w0$+8)+nXwPv?=2TtX=AvYK87D%zGRp@l10{prNP=Ur$1)(*n z_O-9JR#3$}YCUReN0blP+k3)3WFsjgH@|esag>U9e!e8exm{+XAQNuZu=7{-~xthUwkTt4n0UByM5KR74^U$h(2WcLD3(Yoi+^0W$Zo(XzVSwV0DvNjYW zQL%a#U1W>)A;^l=2Oll3@~Pfu_7qLA&R|1n(AuAvnFxqsYST(bNYj>}bY2DTv@$d^ zyG*q2wjC)Zqsm2#S;Db~Qu^IKEZ|S0M3&mcei)&A^hB4`piV{6IP{*ZCbR{qNb9*( z*xzgzaAIo88?A$1%^r0U)KuzCSHWB*vt8l|W@uewxHPBV8Ahk-d%`VDy`$maKG zcnm}LT`_;=_#;u_rd}1}reuC;(pn1L!|u{d@VT1LJdB&5G5aJ^4!0DlNP`C4<}Xwt z(8&~|gSS@AC_osUVBajVtybD2altr;cip^X>!i?6#ZjXq4|0D(Zv?1%C?(|CZqcTB zhKJH&Bq{cR*HG726RnI_UEoiAKoxoN{{hv|%g= zJIfa@$ilYyg^RJV?}1f#*AOZ0A-@MsiF7_*okxIDT~d%W_QbJ}_{D}mf&k9x26j(N zK@@h>-ohk&Y0$dcamei{H&tR6K8qpO)oawnk72iUyCzoF^Eqazrz>B!2N;eQ6F~U( z#-;tBC(HQHl5RcLFAQUUKcUfV5b-K@986+Pmc&7d_j&OW{g90rIxxBI?3z9V+o(t< zp-^sQ@A6QA^mW`gGBrzpFm4MDTJ|1XT)=TTw#hEGhreG|^wgAPMn1>ipO}L~_r?uf zF=ze41Q}E0zkcCsV7?QP96Ity4ong80KypoDnD?COQ&9W1&ks*C_K(atf69h8+4B}vNCv2 zJ|Ie}JUFY6+TuALDH;)23cNpZdJ(nki4|gZl$anu>goiCL|DF%!M*xCeFUm1lIp#( zESLKxhrXzB&e#Y9{hIj;;c1{qO*wZqn8wO#=E_l7$eozHj64rK5xyn3DFrr5K=w67 z)9fjIs{pE=hf7+K*98iT5ji~wF2J(8$o6P2Rm`_$O>c0iZvfr_)GH_LrG>CaOOOqa z1#H_FnIK_)&YJ8d!Y>@rlR=6%PAAR;2!2AgSA_B5eZAL6*Gt4ajqo5fS*DO;i8WVf zr3~yDMZSPuNofr{1Y!MM9A`eu1{N(Vp!J52cNbQTiB7H)xmkU1_M$vtH_uh!_ zy*G^Tj6kS*GS+App(`@Ui-FQ)H6inFlhgb^gj+dq>rr)zua%-&Ys&4~$y>Gj)ES`+ zvUBr`6378M5iNoONmalwYkI0jny4Zef2nVKb?<;7JrS*YBYp80NO?^Sn-a;W6>_iy zb?OFN%D%_FlI7P_!g#dcN^9bwp9XOD&%(`lj!Q-^>z<@_rCNvWq6JgN?LT*~^wN9_ zzL9G{DBpi}1)7-niOy=mmAz=LE?tIVk3`aNQ^b0wbU5PgdA>Vq5DUKr*^VzCAATDB zWoR_I2@X>3S|x^kh#QZ<>uvuGot5y|c5Y9!s}n~`D2Qxlo?>pVEC`dfZcaCLuKKNRPY;B%hb`0+yw);SJ?2$`z*W% zkTiLbL=OwO7d=DanrBGe@2Bjh*zwv&r>m4 zP7o>7?kCgB@N*?*Iun0u7c8U~b1K3qzhHK3B@M8F9l05Q_=~N!9u9b<3`NW-mjB4? zlRyuW@S~Lf>tcj)uI9H}S$?^gG>a!!(n+q%%7hQ6y{={aS_?t^>47x6UY?$hdXMkM zn5Sy!g&8=4{!%Zpc^af2`#hB&H?H5+>6Gn@xZ_MHn8Bz`T^no*k?2No68q<%2GR0LQ$j$%g=* zW)^(86!5d{`OCOCaNcHaxRmUWJiE8%tB`1doMF4+^uhP1a3Okm;i?m!$5h$TV=^1t zJ`LYK1jo79_M&Ql6Z4K0amKBWt$Ww{Gvd;*3bL$h$;^}a)w$FSikOma;gjH!k|bc# zqY&|8ZYYsQ7WJLT-_2@kRBBWS(#fUkI4d;qWg0JO@`07hg8p$xFD_iNMCu7+LH&h|M(v9MQlQ%d`H?$ z#wTaC==pAbj~@ANPt0LU0`()Ns*s<5kiB>ptPzDPzdulIUyh9Vmi~KT5x)Pf=t0Yc zU_q84rO<0&=t=|)q^Bx}F5e%#F@%H+4i#U5?Jy`!j5o}o2zm*m@<{~7YJLrNT8l#r z`kodUQ93prA^E};*j^`nb2Co>o#ioFkW7tGKgi=ZpdHssS=5}q=bP>KqCppSf_21@ z;>b)~;4gB#{IO$T1&DGm-uYBK`%ck!y& zUkdfRPv7c+%rFJqtoF}*X``{QtQDC;SYr_5_b>HhfpsqnsZmCvE(KZ!rQ6kITqrVg z8PU`sSg_27 zg(#Rl11c6hDS~vste7g1z0y@Ya0E-&AFw80$hA_EdS$Eup=*ORh&g%1u|#5;u0u$) zENRRo(ivN-lf4%0G40RBEX!}9Cq34V;7Tz;KMG$rEDW!5+ukmR?#cIH)y*Ww=ae0$ zcY;nSc8$lDPF59W#X2-L=`jwfY&TC2?|NfU{2D-hYso*_u_MDJM|ZcL3iH`ZVCOnP ziCm2|on)*qiY$$~ffRjGK6%-tti8 zT$2AuDj}=Fs}|yn*JhbAFh><;X+u`pMbG+nNE%L_>a~^ahj#B#r|LrX2)h{Tu+@P1 zVP@>>>Aj?aRE8d@7%8mduMw>=8AMn$JdIJR8sO1*PkdY2U)M$XZRea*lI_a)t>uBG z#Pgkr4jI}C8-qT&etzkkAtLs$ZW!0l4|9S8Oudm?y($K-(e6ObOUey8prFoa>O*11iOL# zo5U{G$2le935x0S`z)X|*PBbADA^HjY9c^|FPwftNDlSHo6Va1^xGTf=j( z^Cq1?(bgN(j#u2vEbD=!$_X{v*9H-ev#a??Y=B`0CIx|idO%rl24gsUPTDr z>~@si@yjJ!hE~1AY=mwNi{FnuV3}>bW-NKy7F^XF*NDk*h7U;*^%zRZar zNG0G~nxr0&Z^|703m7J)4ya)dR{GLc8TB*EyQkG05{-qCr~gUB`dDhMD94|V7)sAj zd(4bJzwjWqRcK?wso`jU-sft<|JFtNEvg}Y;45wcp=&HAyEf{x-s@ix$;(zL>2^kh zP|TzAzI6G1@H$SVC#G5oq&J;SQx>d$a-taxpg8yTuAnE{0DlXEox1nGAe+mpwk`k- z8ht{8eub!N1PiUn!*0xM)J3LEG)rKM%~z%^*rF^$6NAJ-KpT*v}SO zQj2}OED*b2G5aNP`j>6Mi1!*fgLd?>_!FguSbEm)oHe zt_ejd+FTccFoFP;_duj&0hGmgN>A7w5-H?Che~;Z-PX`B*U#)=N`c4Zp#ho6UVNN} zBO8%}<8-ZZkt5r>p1>dv_6CUSeE#`o(Tixlmf5;uoEOO{f=6o5ffeoQv%dw#liSNi zHg0;>3hl2cQJ)lCH^!ygs2a~-Ygnah%qk}DMNB`pex3!Decm|t3H(lHk5~*~GlT_^ zt;W?BPC^ysNZ6bz9$V;$eS_l8pp-R*g}@fp^hTKW}+qFnA@2iH14 zt+GO7SKjtclKM!$b$~;$RiAhtEko1JvuVNHgX+{|i^`_I0k03In>Q{MyENB+o92Uk zVwG-ZbN4~*MGYl$$bCyGvo)VdimF6TgaCSmj6Ov#Bs1A>2QuJCRX1`A^xq*?#83>A zgLX|?bv-8I1B?&Or4!m;o^~?7VVfw&71tnK>xVcM!c+~%8=s`PSNtz+FM9;ZI>cR4r3>^Sr~DN{JJlfBE~sv{VAFQv)9nX(2dXTlg` zl}x73h?vbJY+oIRL#9Z^|Qua%b5ybT#$GTMD#A#!X; z85#;*drrr=pdIC$enmuLd|f|80@ZxM_MF(fAq|tdaUPLlsYS6JHwWl=LAY%j?er!D z{kI=VY)j^^NdQ$HC=|!&6uB9R(17F5oB~`x*GoN2)t`c|A`|uU1QKui?oCeB2N#`_ z6`_*!^6m%T-!V}T6qWRWsFkX}4|4{T@IK-!pU+{)_i_v{QCt9xEu4se>*B-=C6tNP z*VbDXY|YPb*+uEQF3XW~N_FS?ewsQt&Bz-N%ip6(R~GukUHOCATuGkpjXY*YJ2@PW z9yU|qkzP?+&D^sk2a-gWjD{xBd+ad0`$8x!>Tzoiu-$XIqhZ0bJoAE7y25HLTq!^R z;a_;D-g%l#y(VRKUwJ~(!K_D=87Qn6`7{l0dFCIJ`_l*H^^EzseL5AG6_2p!qmpMS z)p8YM`!$hWvU_XqU3M#b(;r(7{762stK(hCnTaYU2v@6Acf|2@Z!_*ul&czn9nbsf ze4f(*sud@S15cO(6n8@B*S-!BYRpBmmwhXRq5VZ7+!Qy14^=kb{p|xioYb|kG(g8kfLYH%^*z+x-=SXTtMtHI#b-2fwtIZLEPrGL*obbHRtw@9nE z$RLOT6Bec+S+LJQKGWtipO{CClbQ4-3b2XtJ)8wP0=yQ7W_)NlcJB{$-{FA{c%}}} zmBcM-g@7JDau$rT2v=$U7Fe_OxYJ}mz}8bfE)3C&?5$B^B!qtAj;)_8zcP3D%q$U3 zVD7}vkJzZUD;b^et;b;3y)(%6m1j>2h<_BrP&Sru8y4~TCAhq*4SqjfI7PS zCUj;BpR252cV!yC;x%gQ7Zk+3wssG~w~?FCN#GI2cn@N2aDv_McR?kb)Yf$*W~*66 zn(5M`>?!wArdj2&jDK*6AP z{=y!@*Hu!T-k74P&&2tZW3| zKGx=XTjR|1Ju;`;wHr*>v9X9dol1L?O560j0!6OLxd%tTA&m>J@4IdErWf=I#XVJk zPd%0?syA4wSbz)OYS7XVCF6`R!7AP6hJA!o;l?8~gEst5R~Hnk+o9)7%Lbcdfna=6 zM{xE8sthC(LLJoiDlPz#ADs6%PVPKp)d@t+nvz=xVe8S?9<=eik+x>q2@3z_?Iu@i zd97V3Nl92khw{`V=%8l|sA5GBG|%3jQdxoy#w4YMRiE13hJGV$6AUwGVy3pYwh zEF9C!L8M#5PcOrFq!-+aDTQZhoiY2V&yC>Iei6l!mMcOdczp z#o~?iyHlhRe)vjN=Jb?Be_(dAvpQh*bG5WNhwmwRTmIjTMQnTG+WNyQvG>>y<2RD+ z$uQq%bT_l?w(F=`sG*B6RxvNaq^s>!)MgPib!SiI_vOXbuWM=d{M~t^v2shQx+8a1 zfEVl&IJCStMM8h3P>e%k`=t1b0BDAys}Y;s?=Lb(Q(&@hNq(OF`R&Q}tfGS|F6$Z- zrd+I>uIaGn+cXbDKRMonp!ewsS2H`DuC(UO^YDiNrgoW=V=R$sJf%ce;}BlqvxhRG z${Mt^BeRq>CE)w_6CZdAd@Bq20y;`saorSaKe=wOTYh~xs&TB*d*aM;Mn$cN820QdwFtOPav)5>7qR5rZdKMN|?8%v*-mt*bWMelqyA1gvw>@BH>2V?Sv$oHH zYh&B+6+zeL^yxyjo9U7U5elU4^;P|B)b{6)UHFTe%Oy7P&gJ@MNu3iq9%f944nwvT zOnsZ$)gSWvY%`+`JCLvn*Rmae_vkEJmu4O(s`_~t0CIG4s7<~9NZ^EbtT!v3+r21OYyT^SM=VGqDi*Z)4@}*`o56b#DUJ;W{XhK*1Y@nBgyo0 z+<82;DRxa(*r^}2JK~Ska^a5kM%3nnO-Cp6F&yI=_!p0M!){tr>!_QWxM4@p=$h1(>y~Iu76ExGV6} zO*e1ab=J^QEmIMy2E%gyJod@Q8!Kly{a;QS@tbCqa|T>~8@r%p#I;xlM$m}?CxVFeHnuy@?ys#c<`3H3_w^C4A~phVoPxTL3 z3)SRqhJPECQR3=BWQQP#yjlTdi6m=OZc{4q-+RwmI>kP9z<7&jC+f4WJtHoFADED1 zLxJptD4PfqV%?eWTX4WaQ1LquH^BO2&4v0>AP{3YX&lfl2Ia8-Eyhg{+d12NZLouL z+k)zKM?B$1GG+ph)mkYQjZtPN+csOPI))z6eKTggJxisK!~RBqD0My6=n2 z%3Yt=LN0F6z{)S)43) zJk^ScKg5TyM}JrmEd^WVC3ZE<^E`s%GL@dGpNuB&FuH%O*?ZchGPh#6UmN9l0Ou53 z{pB18cBrE#G(GhHP~uz6-VRW2DAB=v&l{gKl(JfD^{J^k1#hWO+tTL$?bZ@!+;MoBYIV_41&Uh01AyaHWW|@k)4G;? zi1o05*?#RmI5gb-g0UEQYaoCA{&S;(!C;^<#S>0ebt1qwog*ibpeZ?dEnbpDbhc#& z?#CZB1L3Hl+}x^V$ttGuRZz&ruA~P+IY-}<6HNX0if%6f>8he&icA^ak`yxOZweM^ z_5`wJn2rS>{dF6uSK<9-o9NMF?L9Ivg`*)oL}_i zNVs21y~XqX)?zIGX+Q0Q!-ydQ64=`>^)UN` z^R)RXMkjU!hu4~mUX-9RBaHj#-|j|qqXdR=#thmc+=ZeDV;TZFgcgf2i0q42&AQova|?d1jCtioNPbTi3s*wQu@@0bGG&zbo%9Cp!>!`iMIO;WLTzBgwxhG*4pbQDzov&qopb$@@TC3WwqB~L zF5Lts`2|KbHV`c~&F~b!VrLe--h-hhGP=-w0#8?){YK!_-}goc&$6jV)#=G(k8PQo z9VZ~_f{s+ALDh}A8T^m>b@!!QAiWXeLAptdW#Ho{-0@0 zgu32;%QkJ80W1bKs~7}YsH7ZO;hANdkRqB3UkE}NRn|^;Mg(v8;qSn?1T(+Q(25fU zyAeCMPI!x>MCSgO^I{aUDiN3!o$-L3agAf|3HO0E7-O!@c!|wGf^bHU?0a1WgQ-0i zTyfD3n!{N`+8~R1gmOICvav6e*67x<_Sl`pUALEPutM-c54-fY?uC3Q-2|QxBT_+ zxyg#ePFj3CP5}AYdq;gjwS5o5)-n79;K;+^g8rtm;y2Ox2rU!dFiXkI2Pm!<+e|;h z{FjvyAK5x$SRwAd5x2s1zZhI;ZNdig)e%e+k_iU!CE_cvE7eT^?_w6U|2WpNNaK`KD-HD@SY|RlvptFuuFybI*R0&iEs8Y}16nybEpkHPGeT zDu5r`IyBrJ@E0yr=!}sob*dJQVyPvSQkjOmulJs&#fXj6+_6#NqSkzA+}c`vyxH&C?OV83L$Nh@8!`+9QL&2S&}r717DA z$2L19zaYI@{V)q$a0z#2@9-GT0@W1da zTiu?im-y2?GLZYRyLy8JmqOkANl1LrYC7h+cI21mQ`7YHD>!3Z9Zb3Gxk)ufbIS33 zlAVRTyOXmlh;W?CmO8rC)Glz~M3aW1;$m=IgS`ohy0yK{uip&gA%C(y#s#`iV@DiC z;88jLv@aJI{3!9K52L#G#e=(e{+%?JniN(!6QaCd^%;LEzQcc}RmC>!d*U@kjSFN@5g6H>6ogE}5EFTt{>V4_;=d87ExoCc9gTX%MskU~pppE9U@dcNv38g`?i_F{o?rui-?sU=wb)@`5ANZzH%V+E0)h?gNfr<9{=)LmYAV;% zK=BsM$?BKE)K?w2s|ovFlQwGQg5SdK!_cT%P{MEW$Li;Gw|(`I?>!+F%Ey{65+5Xp z?5P1QJKl_a-RvK2s+jX^H`wRIq4YA=N1!}u$|%$nfoVdb^p z?u{?-_l(m?Rt%@>ZeF4(WR|d`JxOE^TYdaahL*k!^WlAsFbo~^vCA|s$){ zFe?`59VhSv1ZH3YzO`L5wloQq%Wy2k$lfe)6Cd`1V`sgyg|!d6MQ>naO*Ei(xWsaY zKXo8XH#AD95@l;G9(rXQcUyI&^zTDPqi2aVLx0Gj0mQ8mM?XBDqQELIZJ0P8!v?{+ z{LM%&fH7}WRzfn0Zk5I(hHHlqBz1+(VPirh$5$`p8)hw-54e3iv<3d`CPB=D4cicR zt;xKsG|f+cBQS?(7`feq{2Z$ZoG#@3slPyA{IVvjHQ zH7v_8m{2r+fS@hMtK4A!Vxru4pzu%q?XN)Xv~B8pQd^7P09SpaT>s1K!`zmQfZ%19 zq$e-VIi@M!A@rUEZ&a_x(3fy4-PzxY+k{lV^!2BP z7EQ9qpiC9oP@jSU#Rv@7jgWf}AIVk}<)>Ox7nc4;~TO8fLTHKcLDVIOe`ZuCW$n9#L9J2*~ZwM;Nd4Z$1%iDYkvM$ zdg0Fxyjwhk$c|_4fgi2|BNd;G^k_S!f+3@|UG_9au(|zw+M_#|h0N1-d6!VOc}a~O z2$lv?sWvX33~lxg@D}HU#4CEYbjBQ5(|8BTF`#vK%myHB^apN2=X@8qLjZm%#y?xo zoeyTV)P|S7(wm^)4f^-_Zv$xcr%i^pWEI96Ce#1%9d>CCO`VxZ6WnuOOUfN^h=Cvg zYI#DMnEA_>1dLq-+#G<`yeDR4Lu#Ams0w3}LVr$*?D=%4(v`N5e1Tftd^Y7k6Dg~0 z5cx`|v^#a^;R#o=T?xcT0c9@_L{8^tM^27ri8;WBp65wtydoR)en|4UkY8TxPMr*h zs{||Ndx49yF}dkVe@{AlZ|Y*_R|HcQ+-GjPd{)|WnJ!NQ)+?s@Ow zdVt)#=1!k`Hr4iads4YG z-eu!NU=1qK1E)NYzpQyYbbNjw{$Rm_^bq!rko-H^x^inH_Uq2`{jTNJG(rs7l+BrC zk@p7ze>;^AztybU>KKwU)z9_)26b=rqcOKWtoe7k0gK_1f)|ktH0{wm<`)H@HL;@2E|V5DwaebYIc))_Q9`!air7e{9J7;c zpBOY`nhx8FN7y%4zZtaItC9M9%g)BsVOmByy~}0J)4&zsSJg6hmnO5rG-&Kh#*ZM? z!{dLK7-myUjAIBq{yHMI=9%+v6={EWX7*<=k0KqTn9UTQ(@%;1LVR?Vs~8+Th&Ig$ zWI>-tCcmvT$MlFN&?Xc<_*{=pfA{ebrCTIZ-{a$~V$+verfmDbEPovrgZ;L^;ta)T ziz5_VNL=Ek8fy(v$|9#6PjWy*+E5)?&q1E&juJ<^MluDr&C|zNpKTW+*L*;sJDaM{ zT5%QH^n;QJLyuQUqntVVpM2JFEBM4aU#3utrBLI78U~Oy>N)PMr6OF~PKd-T?GAQN z`*SHjHO_UN#1z=d}W*<|3I4 zh_)G~JF8t%cyZ>{Wx@u>#zj(&_+}N^+1R41E0-0p!9?fqX=~i2U`%k7jp7oACVqRp zP)=DsL4(#+Ga5@}gk}ausx>#~jO5*z4Q@@=R63E>v$=%g2a53Tk49+v``f~RG;x*( zKUUkm|SJQ(`o`<<5}usG6{4q%&$5~uqlNG1r%Tl)@Q?_g*qFsA&8~O}R7Q{TL{YXGlszc-Onz1D*0;&BXlTad8vD&jhT6Vqgmyi^ zU|>Ze*8uj#cqMVry1mS{N{{VDdB+z|D_g%GHz6K0Y|ib8A*-)i)ZM}erq^NF85`=z z@p1p!{+oXXPmeZv+!VEmrzmCUn=_{GRGC=XXt>p_Wzxsb@b5Q@qg{WhnrhRDVNGi5 z;QD@SvV2Z0eB4pwkqC&+bomXElmZLETWhKNM;&HM^!gFbHpfl>&CU1ok7KzwCr}t- zYSeD_G$e1(J@RGhM)g;w>^y^5!VM-%uZj4H`9$sl3`uS*M(MJ-Y**<=i`sHQJ_hcM zs^=n{R#9-ldK0GU(0M$*V@BAUzG6xS|Xq;Rg-ikS+> zy$RLXsq^2N0rk4;2FB3W4sb))HA=y;mReh8F&?KFIH9*nFVkwbzzx()cb zzIn}!cb+X;ztJP_VmJlU9WtJJ!-Rc>+}=l%fwKGILWNG^=JZXMFP!O*O6DHgrD)wo z&q2jR)sAgydWB1?0+hgC2)UNwc;7V%F4jWj`5Ws3lZe`+uy*@T$N?nti)ycnSC@hj z9!yPV!cT=)dk{WoUtIAb)u6NJ(}IW@pipbB@`!6lEbX=lhIf8R60eFk7U-T$C@(ab zR;jcrhkLMVKY&QHm>)0ST>z71jr5gGjfXhNL-8wMLu$nFiEnq_H@j(-@%Mmx(aRO% zk^6*%cgDu{_wuT%x~nD$n`$#A2(U}4s(Zm#0GM_tsOyM^H0Z@pzqJUZnPO>+?JAPh zew9NLMPNFsO*Q=_b5Ri?zh5&W9tn6irIpM@2vu1>bzAh1 zH05_w+CAk`IWu|>zB_)hJfU{*hblx=Lk4gF(gsb<@d+Pe0iqK!-w%=;L|l(L0W0Z~ z7`B!@NO>=vDB-Kf3_Q9ZAsY(cF8)5El8>LBeXXc1Uw*=={3r^hq{v(zicaCUhoyl= z^531BN3DokKC-QNi7X( zAnP^e_<GNALwb3X}n)j4?3|ZzMztx`4Yb?{u2I^AFc8L=kq=W${6LPR$idX?o zy0?9Btt;LUm7i(cOOr(|5u1-;6gnGeE$_ikNP8!!!r^8HjiD*;#0HX51mFHC;$MDG zdg7Qj+;;uPs$0Q@BcFNwi?iKkJEgw??RDH>2OQwbuA3DEPKPb{C%)XI9ifTi2Upfe zXEhL*^@seaB!X7n4viXvMtQu*+VwGPRT;aH@fk7ZtUz-{*QP>~Oc}!O7b) zJ)Pdm)o2OYxF6YGfdo5|+nnmyZvkz0+0EvKh5Uk&!5yqUdj@3q3DPqOVRU8*YXBG6 zlM3m}v7$8Trjpmm)U;V@u!Y~0T}AC@rFR@z!-yqc7#IUYvd)(jBXpQA$uMryT=LA7aA9@xE`@{Aq zY^;s;wCO$firv>0(?lvoFK=uxVjx}px&h`z%qESG!#lCx0T*+*#+SMwxh=?XAU!Vu=;SAJIfn_)=XLcI%i#Giu|_o$=i^_>4Lo$o~oTHNwwrU@^!l*BdxBdNB6| z2#$NR0h9HEBy9+8kI`GZ6hx08@fnNV`*%m_ORjCoaYwah0W~X!zf-9t2?3%0PHs~L@tf@zvA zM#a+ZCpu-14@>B(D)ag zn+aWj#v7r&hXHKYyFPbAl`wnG@cchgn~BJGj*$VL_0SncLTvdZP&Yk*1RjSb#N0*g zu}%I)*O}#PnaeT$U>^8BZpM4}Z1ZW^$=Vhbw$V*eqv`>GLX@z#aXS(W?x2Q0%#Sb6 z>X%(T#|vx}Axyyb1<0xj$nDh}+k&H&TPaGq!agUvfR4>;7l!7A07cN>dm@JRp^6pe zjT5Hhfa+{`Z=$_dD!dEE-rjIoP4%C-N`aRZY+v^TyS*F^P<}9pKi+@!eCh5+pBO$Xos-m399WDUp|!{x0Y{FV z1F`aXVen!xkHQeHWMh&#F?)(vm1{GA2Z)Orc)!=+UExIXw8#UeaFo|frkXBsjfk>` zMxF`XUq1G9Wx>U2Rw?@=@*RFuG}J&7_VM#N@TmQp#Hwc|n*^j`pqN5B?Plf%jE_^> zYTk_7PvJo*dBh)okdzBSq^Zc5AYl&oWs3Nzr8n})|&YxaOt2Z`vCh`F-3|e3~;(i@`4Eu0yRjWCsjS`33^x?686tt{`$V6n%NE_D>7T% zlUs*M0|L%cKEg`09fa1>+;pnId}&Tw59-1Q&jJDqLt&>r1iJ6Pb$IY2Xo@t&Q2ji> zaq2Fq#VFj;j{xIvLD~OpB>Dd`oc#YPi^|-62d*#;?~!!~$Nw_`1;|J!idTvn1^f?o C+JImH diff --git a/src/js/packages/@reactpy/app/src/index.ts b/src/js/packages/@reactpy/app/src/index.ts index 1f47853aa..38f2c77f7 100644 --- a/src/js/packages/@reactpy/app/src/index.ts +++ b/src/js/packages/@reactpy/app/src/index.ts @@ -1,6 +1,6 @@ import { mount, SimpleReactPyClient } from "@reactpy/client"; -export function app(element: HTMLElement) { +function app(element: HTMLElement) { const client = new SimpleReactPyClient({ serverLocation: { url: document.location.origin, @@ -10,3 +10,11 @@ export function app(element: HTMLElement) { }); mount(element, client); } + +let element = document.getElementById("app"); +if (element){ + app(element); +} +else { + console.error("Element with id 'app' not found"); +} diff --git a/src/reactpy/backend/_common.py b/src/reactpy/backend/_common.py index 5672e03e0..ac5d422aa 100644 --- a/src/reactpy/backend/_common.py +++ b/src/reactpy/backend/_common.py @@ -116,16 +116,7 @@ def vdom_head_elements_to_html(head: Sequence[VdomDict] | VdomDict | str) -> str class CommonOptions: """Options for ReactPy's built-in backed server implementations""" - head: Sequence[VdomDict] | VdomDict | str = ( - html.title("ReactPy"), - html.link( - { - "rel": "icon", - "href": "/_reactpy/assets/reactpy-logo.ico", - "type": "image/x-icon", - } - ), - ) + head: Sequence[VdomDict] | VdomDict | str = (html.title("ReactPy"),) """Add elements to the ```` of the application. For example, this can be used to customize the title of the page, link extra diff --git a/src/reactpy/static/index.html b/src/reactpy/static/index.html new file mode 100644 index 000000000..77d008332 --- /dev/null +++ b/src/reactpy/static/index.html @@ -0,0 +1,14 @@ + + + + + + + {__head__} + + + +
+ + + From 9e2ace20076b953ef8c9f5db5d6bd84b15a74d58 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 14 Jan 2025 17:31:47 -0800 Subject: [PATCH 10/30] functional `hatch test` command --- pyproject.toml | 20 ++++++++++++++++---- tests/test_backend/test_all.py | 7 ------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 64338efc5..1e645b697 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -93,10 +93,24 @@ extra-dependencies = [ "coverage[toml]>=6.5", "responses", "playwright", - # TODO: Nuke this after removing backends from deps - "sanic-testing", # TODO: This dependency needs to be pulled out. ReactPy no longer uses this in the core logic. "jsonpointer", + # TODO: Nuke everything past this point after removing backends from deps + "starlette >=0.13.6", + "uvicorn[standard] >=0.19.0", + "sanic>=21", + "sanic-cors", + "sanic-testing", + "tracerite>=1.1.1", + "setuptools", + "uvicorn[standard]>=0.19.0", + "fastapi >=0.63.0", + "uvicorn[standard] >=0.19.0", + "flask", + "markupsafe>=1.1.1,<2.1", + "flask-cors", + "flask-sock", + "tornado", ] [[tool.hatch.envs.hatch-test.matrix]] @@ -111,7 +125,6 @@ testpaths = "tests" xfail_strict = true asyncio_mode = "auto" log_cli_level = "INFO" -features = ["all"] [tool.hatch.envs.default.scripts] test-cov = "playwright install && coverage run -m pytest {args:tests}" @@ -129,7 +142,6 @@ REACTPY_DEBUG_MODE = "1" ################################ [tool.hatch.envs.lint] -features = ["all"] extra-dependencies = [ "black==24.1.1", "ruff==0.0.278", diff --git a/tests/test_backend/test_all.py b/tests/test_backend/test_all.py index cd2f371f5..62aa2bca0 100644 --- a/tests/test_backend/test_all.py +++ b/tests/test_backend/test_all.py @@ -71,13 +71,6 @@ def Counter(): await counter.click() -async def test_module_from_template(display: DisplayFixture): - victory = reactpy.web.module_from_template("react", "victory-bar@35.4.0") - VictoryBar = reactpy.web.export(victory, "VictoryBar") - await display.show(VictoryBar) - await display.page.wait_for_selector(".VictoryContainer") - - async def test_use_connection(display: DisplayFixture): conn = reactpy.Ref() From b4a66f4535d92cd75d132e4902fc8c11bb80b4aa Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 14 Jan 2025 18:08:41 -0800 Subject: [PATCH 11/30] refactor test names --- tests/test_asserts.py | 5 ----- tests/test_backend/{test__common.py => test_common.py} | 0 tests/{test__console => test_console}/__init__.py | 0 .../test_rewrite_camel_case_props.py | 0 .../test_rewrite_keys.py | 0 tests/{test__option.py => test_option.py} | 0 tests/test_web/test_module.py | 10 ---------- 7 files changed, 15 deletions(-) delete mode 100644 tests/test_asserts.py rename tests/test_backend/{test__common.py => test_common.py} (100%) rename tests/{test__console => test_console}/__init__.py (100%) rename tests/{test__console => test_console}/test_rewrite_camel_case_props.py (100%) rename tests/{test__console => test_console}/test_rewrite_keys.py (100%) rename tests/{test__option.py => test_option.py} (100%) diff --git a/tests/test_asserts.py b/tests/test_asserts.py deleted file mode 100644 index e23e2185e..000000000 --- a/tests/test_asserts.py +++ /dev/null @@ -1,5 +0,0 @@ -def test_assert_same_items(left, right): - """Check that two unordered sequences are equal (only works if reprs are equal)""" - sorted_left = sorted(left, key=repr) - sorted_right = sorted(right, key=repr) - assert sorted_left == sorted_right diff --git a/tests/test_backend/test__common.py b/tests/test_backend/test_common.py similarity index 100% rename from tests/test_backend/test__common.py rename to tests/test_backend/test_common.py diff --git a/tests/test__console/__init__.py b/tests/test_console/__init__.py similarity index 100% rename from tests/test__console/__init__.py rename to tests/test_console/__init__.py diff --git a/tests/test__console/test_rewrite_camel_case_props.py b/tests/test_console/test_rewrite_camel_case_props.py similarity index 100% rename from tests/test__console/test_rewrite_camel_case_props.py rename to tests/test_console/test_rewrite_camel_case_props.py diff --git a/tests/test__console/test_rewrite_keys.py b/tests/test_console/test_rewrite_keys.py similarity index 100% rename from tests/test__console/test_rewrite_keys.py rename to tests/test_console/test_rewrite_keys.py diff --git a/tests/test__option.py b/tests/test_option.py similarity index 100% rename from tests/test__option.py rename to tests/test_option.py diff --git a/tests/test_web/test_module.py b/tests/test_web/test_module.py index f8783337d..6ab1ac4b5 100644 --- a/tests/test_web/test_module.py +++ b/tests/test_web/test_module.py @@ -81,16 +81,6 @@ def test_module_from_template_where_template_does_not_exist(): reactpy.web.module_from_template("does-not-exist", "something.js") -async def test_module_from_template(display: DisplayFixture): - victory = reactpy.web.module_from_template("react@18.2.0", "victory-bar@35.4.0") - - assert "react@18.2.0" in victory.file.read_text() - VictoryBar = reactpy.web.export(victory, "VictoryBar") - await display.show(VictoryBar) - - await display.page.wait_for_selector(".VictoryContainer") - - async def test_module_from_file(display: DisplayFixture): SimpleButton = reactpy.web.export( reactpy.web.module_from_file( From d65bc8105f6029c06fb2fb2f31d120bb863c7125 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 14 Jan 2025 18:26:02 -0800 Subject: [PATCH 12/30] fix misc test warnings --- tests/test_core/test_layout.py | 2 +- tests/test_web/test_module.py | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/tests/test_core/test_layout.py b/tests/test_core/test_layout.py index f93ffeb3d..96f495ebe 100644 --- a/tests/test_core/test_layout.py +++ b/tests/test_core/test_layout.py @@ -1337,7 +1337,7 @@ def effect(): async with layout_runner(Layout(Root())) as runner: await runner.render() - poll(lambda: effect_run_count.current).until_equals(1) + await poll(lambda: effect_run_count.current).until_equals(1) toggle_condition.current() await runner.render() assert effect_run_count.current == 1 diff --git a/tests/test_web/test_module.py b/tests/test_web/test_module.py index 6ab1ac4b5..75c819a32 100644 --- a/tests/test_web/test_module.py +++ b/tests/test_web/test_module.py @@ -76,11 +76,6 @@ def ShowSimpleButton(): await display.page.wait_for_selector("#my-button") -def test_module_from_template_where_template_does_not_exist(): - with pytest.raises(ValueError, match="No template for 'does-not-exist.js'"): - reactpy.web.module_from_template("does-not-exist", "something.js") - - async def test_module_from_file(display: DisplayFixture): SimpleButton = reactpy.web.export( reactpy.web.module_from_file( From bd7f40d717ce6569ef6658a91c781aba7d7081dd Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Fri, 17 Jan 2025 04:08:35 -0800 Subject: [PATCH 13/30] prep work to get CI working --- .editorconfig | 3 ++ .github/workflows/.hatch-run.yml | 19 ++++------- .github/workflows/check.yml | 6 ++-- .github/workflows/deploy-docs.yml | 3 -- .github/workflows/publish.yml | 4 --- pyproject.toml | 31 ++++++++++++------ src/js/.gitignore | 2 +- src/js/package.json | 6 +++- src/js/packages/@reactpy/app/package.json | 9 ++--- src/js/packages/@reactpy/app/src/index.ts | 7 ++-- src/js/packages/@reactpy/app/tsconfig.json | 14 ++++++++ src/js/packages/@reactpy/client/bun.lockb | Bin 6514 -> 4567 bytes src/js/packages/@reactpy/client/package.json | 30 ++++++++++------- .../@reactpy/client/src/components.tsx | 6 ++-- src/js/packages/@reactpy/client/src/mount.tsx | 4 +-- src/js/packages/@reactpy/client/tsconfig.json | 14 ++++++++ src/js/packages/event-to-object/bun.lockb | Bin 8352 -> 17949 bytes src/js/packages/event-to-object/package.json | 28 ++++++++++------ src/js/packages/event-to-object/src/events.ts | 1 - src/js/packages/event-to-object/src/index.ts | 9 ----- src/js/packages/event-to-object/tsconfig.json | 9 +++++ src/js/tsconfig.json | 22 +++++++++++++ 22 files changed, 146 insertions(+), 81 deletions(-) create mode 100644 src/js/packages/@reactpy/app/tsconfig.json create mode 100644 src/js/packages/@reactpy/client/tsconfig.json create mode 100644 src/js/packages/event-to-object/tsconfig.json create mode 100644 src/js/tsconfig.json diff --git a/.editorconfig b/.editorconfig index 356385d78..094c32693 100644 --- a/.editorconfig +++ b/.editorconfig @@ -17,6 +17,9 @@ max_line_length = 120 [*.md] indent_size = 4 +[*.yml] +indent_size = 4 + [*.html] max_line_length = off diff --git a/.github/workflows/.hatch-run.yml b/.github/workflows/.hatch-run.yml index 1630378b9..6f018bdf8 100644 --- a/.github/workflows/.hatch-run.yml +++ b/.github/workflows/.hatch-run.yml @@ -9,18 +9,14 @@ on: hatch-run: required: true type: string - runs-on-array: + runs-on: required: false type: string default: '["ubuntu-latest"]' - python-version-array: + python-version: required: false type: string default: '["3.x"]' - node-registry-url: - required: false - type: string - default: "" secrets: node-auth-token: required: false @@ -34,17 +30,14 @@ jobs: name: ${{ format(inputs.job-name, matrix.python-version, matrix.runs-on) }} strategy: matrix: - python-version: ${{ fromJson(inputs.python-version-array) }} - runs-on: ${{ fromJson(inputs.runs-on-array) }} + python-version: ${{ fromJson(inputs.python-version) }} + runs-on: ${{ fromJson(inputs.runs-on) }} runs-on: ${{ matrix.runs-on }} steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: oven-sh/setup-bun@v2 with: - node-version: "23.x" - registry-url: ${{ inputs.node-registry-url }} - - name: Pin NPM Version - run: npm install -g npm@8.19.3 + bun-version: latest - name: Use Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index d370ea129..166240dd5 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -26,8 +26,8 @@ jobs: with: job-name: "python-{0} {1}" hatch-run: "test-py --no-cov" - runs-on-array: '["ubuntu-latest", "macos-latest", "windows-latest"]' - python-version-array: '["3.9", "3.10", "3.11"]' + runs-on: '["ubuntu-latest", "macos-latest", "windows-latest"]' + python-version: '["3.9", "3.10", "3.11"]' test-docs: uses: ./.github/workflows/.hatch-run.yml with: @@ -35,7 +35,7 @@ jobs: hatch-run: "test-docs" # as of Dec 2023 lxml does have wheels for 3.12 # https://bugs.launchpad.net/lxml/+bug/2040440 - python-version-array: '["3.11"]' + python-version: '["3.11"]' test-js: uses: ./.github/workflows/.hatch-run.yml with: diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index f9f9431c6..d0419ecfc 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -1,6 +1,3 @@ -# This workflows will upload a Python Package using Twine when a release is created -# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries - name: deploy-docs on: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 8e523ce04..49e9b11e7 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,6 +1,3 @@ -# This workflows will upload a Javscript Package using NPM to npmjs.org when a release is created -# For more information see: https://docs.github.com/en/actions/guides/publishing-nodejs-packages - name: publish on: @@ -13,7 +10,6 @@ jobs: with: job-name: "publish" hatch-run: "publish" - node-registry-url: "https://registry.npmjs.org" secrets: node-auth-token: ${{ secrets.NODE_AUTH_TOKEN }} pypi-username: ${{ secrets.PYPI_USERNAME }} diff --git a/pyproject.toml b/pyproject.toml index 1e645b697..e3badb9a0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -128,17 +128,14 @@ log_cli_level = "INFO" [tool.hatch.envs.default.scripts] test-cov = "playwright install && coverage run -m pytest {args:tests}" -cov-report = [ - # "- coverage combine", - "coverage report", -] +cov-report = ["coverage report"] cov = ["test-cov {args}", "cov-report"] [tool.hatch.envs.default.env-vars] REACTPY_DEBUG_MODE = "1" ################################ -# >>> Hatch Lint Scripts <<< # +# >>> Hatch Python Scripts <<< # ################################ [tool.hatch.envs.lint] @@ -157,12 +154,26 @@ extra-dependencies = [ "types-requests", ] -[tool.hatch.envs.lint.scripts] -types = "mypy --strict reactpy" -all = ["types"] +[tool.hatch.envs.python.scripts] +# TODO: Replace mypy with pylint +type_check = "mypy --strict src/reactpy" + +############################ +# >>> Hatch JS Scripts <<< # +############################ + +[tool.hatch.envs.javascript] +detached = true -[tool.hatch.envs.publish] -extra-dependencies = ["semver >=2, <3", "twine", "pre-commit"] +[tool.hatch.envs.javascript.scripts] +check = [ + 'bun install --cwd "src/js" --frozen-lockfile', + 'bun run --cwd "src/js" check', +] +fix = [ + 'bun install --cwd "src/js" --frozen-lockfile', + 'bun run --cwd "src/js" format', +] ######################### # >>> Generic Tools <<< # diff --git a/src/js/.gitignore b/src/js/.gitignore index fedd7ea26..77c486e8c 100644 --- a/src/js/.gitignore +++ b/src/js/.gitignore @@ -1,3 +1,3 @@ tsconfig.tsbuildinfo packages/**/package-lock.json -dist +**/dist/* diff --git a/src/js/package.json b/src/js/package.json index 35d7157a4..7cc346f66 100644 --- a/src/js/package.json +++ b/src/js/package.json @@ -1,10 +1,14 @@ { - "license": "MIT", "devDependencies": { "@typescript-eslint/eslint-plugin": "^5.58.0", "@typescript-eslint/parser": "^5.58.0", "eslint": "^8.38.0", "eslint-plugin-react": "^7.32.2", "prettier": "^3.0.0-alpha.6" + }, + "license": "MIT", + "scripts": { + "check": "prettier --check . && eslint", + "format": "prettier --write . && eslint --fix" } } diff --git a/src/js/packages/@reactpy/app/package.json b/src/js/packages/@reactpy/app/package.json index 48b5c9370..bb58aabeb 100644 --- a/src/js/packages/@reactpy/app/package.json +++ b/src/js/packages/@reactpy/app/package.json @@ -1,8 +1,7 @@ { - "author": "Ryan Morshead", - "license": "MIT", "name": "@reactpy/app", - "description": "Main entry point for ReactPy.", + "description": "ReactPy's client-side entry point. This is strictly for internal use and is not designed to be distributed.", + "license": "MIT", "dependencies": { "@reactpy/client": "^0.3.2", "event-to-object": "^0.1.2", @@ -11,9 +10,5 @@ "devDependencies": { "@types/react": "^17.0", "@types/react-dom": "^17.0" - }, - "repository": { - "type": "git", - "url": "https://github.com/reactive-python/reactpy" } } diff --git a/src/js/packages/@reactpy/app/src/index.ts b/src/js/packages/@reactpy/app/src/index.ts index 38f2c77f7..9a86fe811 100644 --- a/src/js/packages/@reactpy/app/src/index.ts +++ b/src/js/packages/@reactpy/app/src/index.ts @@ -11,10 +11,9 @@ function app(element: HTMLElement) { mount(element, client); } -let element = document.getElementById("app"); -if (element){ +const element = document.getElementById("app"); +if (element) { app(element); -} -else { +} else { console.error("Element with id 'app' not found"); } diff --git a/src/js/packages/@reactpy/app/tsconfig.json b/src/js/packages/@reactpy/app/tsconfig.json new file mode 100644 index 000000000..fb7013663 --- /dev/null +++ b/src/js/packages/@reactpy/app/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "composite": true + }, + "include": ["src"], + "references": [ + { + "path": "../client" + } + ] +} diff --git a/src/js/packages/@reactpy/client/bun.lockb b/src/js/packages/@reactpy/client/bun.lockb index 9f04643fe2e23f513e945bb5eb82a4ea426aa8b4..f0c8833ea3dda89e84034ea884a7c7d7bd8d39e5 100644 GIT binary patch delta 987 zcma)5Z%9*76uxUS~xMpttCVv%l;T;lZj(n13vh`{XJxA#5@9ys@RfA^es-o5wy?n2S~ zyok85YM?aQ68?PQLAG@Fg|uz*)}!dh57n;h=(+I8O`m*AHD)4P`e4w}eK0*ql4AxT zJyKifP*VpXwYX$J-W+BNM@a>878emsh)yLwO$ot@J#j>~-qhaS(J6&kF3CjR{I09@ z{KVL8|K!|M z5_FuGOQo=btDphsnhz=)-XY;+j&3(3I{pEX14{L);zV89`&n zxK=?Oq6Qt0E8B9&f-9_>FaKagh2d11RM~&OL70gA?LD&kM*p4gV%=3^M)?T;eIeoN z^$%L+gY{p>AHOQAe^cI7^L$~pb^O<`qu}M0!&CK+hv5PJGdC3SIWU(Npc*LSgD}Gj zaGej(RG39Jq!pl68=yQ4YlGm^39yJv2Yy`;{vaFEZI87J1{#xupHx4pNa9I4>@`){ z$-kwfvD35m%qVe_0oItEkTB)svK1C$=VcdEsobC>r!eKnVHQe7PeJFHl1uTbuOY1#hvrDAJ%M|?62MA-gD36{?56N zb8c7Q15K?eG-JiwPxl(^6NZ9Y&HLg*3e1s%ceT1-vpW9j;$=1NiT+tiF-@{rH_kR! z;$R%3n4+o|z|;$9p{ZP-n_ooD0v_ctK*6|L;nX+L6g2|)9Y9f@Z?RY_%z6sZM*|)?EWA`%x~B8s-p#$q5tY)ZgNFCh3u|w8Uz62- zQ@*)3)ZwWbFW!2l?)F^uQe;~em+1;G>OG8Or-r)r#f=;IMNE@9%?;!(p0;iiI zv7C6?pHy%X=v>kUV+R?4kwd1qCD7AJ1&pgmn_CPq)BF)9Acmh7@@?Ooj@90vsMD(_Td}Hrx|z4=;sjND&XcVq?5JrZ&d;{}%w+!!03t zo|Y`+iAV=eOS=()yN>YPMP#YFmgbQ*;En?~)Oaj#!n>@{wQ1X zx~kqrt!R4Ck!iV_s?5Wumm6o=8~dr2gwVK0$s6x~%himE{{G~{eP=TpL+9PCKC^3` zJn`7rZQA|EDi4tNq;NJgH6$Ja>ghNZX5`kaOl`I2J-yO-&NkTi)bGg96S21K(K`d- znc02k!~Gg(-b%hC|K73}s$NTEfX<2mzV~j4qkO0Gt+f+X? zsls( z#_EojrR08eBP-1X7v6&HIq-JH(YWGgZ$B>C`dbUX^J4k3FCe4 zASp0=%O-o3&oz72WPdk}*8BRM?DX-QqV8+UW`qf^x&V6*qr$VEaUuO(9rx;~$gse$ zBu`Fz%G&sQ>DHQ*^R4y9$F^B9>tl=S1uY>xyA<;uwyI;d(Ji(8wSlp-zr1lH_|Q?) zxlk8iEE8(u1lgK|Iz&u zg(bIkepYxp>hqqR{TF<%B#+)QrClNdT&j7Ez>S6!<9f4|Cf{gK6d# z!9!uav+gxXh`}?-Z|Iq$VI&w)w^Qvqg7|p_lRi&hl{<(rm3*LM%Hb8_`@nR>jKQ=@ zbk>i0T=rTXtH#XbLC0*w%*8MyvI#cAW=@&WTV(t27iv;zWM(m#Y<|OcW_+KZrR$m}@qSFW%2AS4RVU6X_Jm zY;65!YdNFWL;yZ}fo#=16 <18", - "react-dom": ">=16 <18" - }, - "repository": { - "type": "git", - "url": "https://github.com/reactive-python/reactpy" + "scripts": { + "build": "tsc -b", + "checkTypes": "tsc --noEmit" } } diff --git a/src/js/packages/@reactpy/client/src/components.tsx b/src/js/packages/@reactpy/client/src/components.tsx index 2319f81c7..27ec64fc6 100644 --- a/src/js/packages/@reactpy/client/src/components.tsx +++ b/src/js/packages/@reactpy/client/src/components.tsx @@ -8,7 +8,7 @@ import React, { Fragment, MutableRefObject, ChangeEvent, -} from "react"; +} from "preact/compat"; // @ts-ignore import { set as setJsonPointer } from "json-pointer"; import { @@ -95,7 +95,9 @@ function UserInputElement({ model }: { model: ReactPyVdom }): JSX.Element { if (typeof givenOnChange === "function") { props.onChange = (event: ChangeEvent) => { // immediately update the value to give the user feedback - setValue(event.target.value); + if (event.target) { + setValue((event.target as HTMLInputElement).value); + } // allow the client to respond (and possibly change the value) givenOnChange(event); }; diff --git a/src/js/packages/@reactpy/client/src/mount.tsx b/src/js/packages/@reactpy/client/src/mount.tsx index 0b824a4ee..059dcec1a 100644 --- a/src/js/packages/@reactpy/client/src/mount.tsx +++ b/src/js/packages/@reactpy/client/src/mount.tsx @@ -1,5 +1,5 @@ -import React from "react"; -import { render } from "react-dom"; +import React from "preact/compat"; +import { render } from "preact/compat"; import { Layout } from "./components"; import { ReactPyClient } from "./reactpy-client"; diff --git a/src/js/packages/@reactpy/client/tsconfig.json b/src/js/packages/@reactpy/client/tsconfig.json new file mode 100644 index 000000000..032152ae8 --- /dev/null +++ b/src/js/packages/@reactpy/client/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "composite": true + }, + "include": ["src"], + "references": [ + { + "path": "../../event-to-object" + } + ] +} diff --git a/src/js/packages/event-to-object/bun.lockb b/src/js/packages/event-to-object/bun.lockb index a7ad78fa7ee45c1d8c6b9a85f22723c5b579eaef..e0f4b6a4ba6bd247a0ed533e0f682079dc6d4856 100644 GIT binary patch literal 17949 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 delta 1260 zcmb_cUr1A76#u^O-j$o%{6E*q|F%-bZL{r;iQTCWg<25?O{Jp9XoMhCg7d{$FG>;G zd8xp#G$@HMmSDq|ULx{AAM+(j63lwAh;Y)sbGAF^B{1lNbAFsZ_jk_DcfO5Y<6{lO zO4ZT#Q;oK{;F&A!k@@xIxy2`wue=?P26{G5IJ^%J1Q)YQS@PIMLM3^cEoG#17GqKS z$WXAOtGn~`#V}*&U`BL?1!K90?TD1rtfPu(Li>)ym>IENx1DmzpZ@OB1+PjaTmn}4 zG02dncqKfOg1i$FsBc3+4)T`}k%MBLL0s0j6B2UJ*v1)iBd-CT%YHrx5kpYSa@fe! z#1{^=W=-@7=re1^7g%^dCQ2}1_8ZOE4q1XM(JDc$MH7<}^dYQD5VvSXH+EQ;WTuoZ z8EUPXaR!}Kj=_MzFIHrTTQyN>fDLPHKZY0ycEk)QbO_0ZBTD*l6v?w0+=`hwdj6kC z{5a|)U!ERE>}U83Spf=Rp&s}fQuzNi9AfMrJKkKwv2D3t36_gm;AVjZ_7%7AOc*K- zaWlL_ZGk{Zh+AOd<)dQE1lb8K>>n`X{bJIKM|doQWxPow(i1f|8A5MWL5L*S`gY z29tq86Q`>qN?HlJEn;iaujwgKmP6FNTcZ$FBr2jLYAQkH()6?y)GyHy?TSvLIiS(w z#1&_7&f|jxkAvIcqi0$TpG6;@$%=ckruj&=;3qvwje;BP(%^ssAclg`=v3QYm853%hUZt0@W&x*sb~XL-KaEegM-P1;$ArC#o4C_&e4_fz z)t;uRW{mh#5#)Z1-044ugr$7Cpnhyk@axz-{_3bxh9%!Y5f ({ index: gamepad.index, mapping: gamepad.mapping, timestamp: gamepad.timestamp, - hapticActuators: Array.from(gamepad.hapticActuators).map( - convertGamepadHapticActuator, - ), }); const convertGamepadButton = ( @@ -337,12 +334,6 @@ const convertGamepadButton = ( value: button.value, }); -const convertGamepadHapticActuator = ( - actuator: GamepadHapticActuator, -): e.GamepadHapticActuatorObject => ({ - type: actuator.type, -}); - const convertFile = (file: File) => ({ lastModified: file.lastModified, name: file.name, diff --git a/src/js/packages/event-to-object/tsconfig.json b/src/js/packages/event-to-object/tsconfig.json new file mode 100644 index 000000000..9b0e0b6a5 --- /dev/null +++ b/src/js/packages/event-to-object/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "composite": true + }, + "include": ["src"] +} diff --git a/src/js/tsconfig.json b/src/js/tsconfig.json new file mode 100644 index 000000000..9e7fe5f74 --- /dev/null +++ b/src/js/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "allowJs": false, + "allowSyntheticDefaultImports": true, + "declaration": true, + "declarationMap": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + "jsx": "react", + "lib": ["DOM", "DOM.Iterable", "esnext"], + "module": "esnext", + "moduleResolution": "node", + "noEmitOnError": true, + "noUnusedLocals": true, + "resolveJsonModule": true, + "skipLibCheck": false, + "sourceMap": true, + "strict": true, + "target": "esnext" + } +} From 2e82d19a7ed4ff898bf767945b685f62a1e1f8af Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Fri, 17 Jan 2025 05:14:57 -0800 Subject: [PATCH 14/30] fully functional build sequence for JS --- pyproject.toml | 27 ++++++++---- src/build_scripts/clean_js_dir.py | 41 +++++++++++++++++++ src/build_scripts/copy_dir.py | 40 ++++++++++++++++++ src/js/packages/@reactpy/app/bun.lockb | Bin 7191 -> 21701 bytes src/js/packages/@reactpy/app/package.json | 7 +++- src/js/packages/@reactpy/client/bun.lockb | Bin 4567 -> 4567 bytes src/js/packages/@reactpy/client/package.json | 4 +- 7 files changed, 107 insertions(+), 12 deletions(-) create mode 100644 src/build_scripts/clean_js_dir.py create mode 100644 src/build_scripts/copy_dir.py diff --git a/pyproject.toml b/pyproject.toml index e3badb9a0..63bdc97de 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -58,9 +58,8 @@ installer = "uv" [[tool.hatch.build.hooks.build-scripts.scripts]] commands = [ - 'bun install --cwd "src/js/packages/@reactpy/app" --production --frozen-lockfile', - # TODO: Remove 'assets' from this path after turning ReactPy into ASGI middleware. - 'bun build "./src/js/packages/@reactpy/app/src/index.ts" --outdir "./src/reactpy/static/assets/" --minify --sourcemap=linked', + "hatch run javascript:build", + 'hatch run "src/build_scripts/copy_dir.py" "src/js/packages/@reactpy/app/dist" "src/reactpy/static/assets"', ] artifacts = [] @@ -166,13 +165,23 @@ type_check = "mypy --strict src/reactpy" detached = true [tool.hatch.envs.javascript.scripts] -check = [ - 'bun install --cwd "src/js" --frozen-lockfile', - 'bun run --cwd "src/js" check', +check = ['bun install --cwd "src/js"', 'bun run --cwd "src/js" check'] +fix = ['bun install --cwd "src/js"', 'bun run --cwd "src/js" format'] +build = [ + 'hatch run "src/build_scripts/clean_js_dir.py"', + 'hatch run javascript:build_packages', + 'hatch run javascript:build_app', ] -fix = [ - 'bun install --cwd "src/js" --frozen-lockfile', - 'bun run --cwd "src/js" format', +build_packages = [ + 'bun install --cwd "src/js"', + 'bun install --cwd "src/js/packages/event-to-object"', + 'bun install --cwd "src/js/packages/@reactpy/client"', + 'bun run --cwd "src/js/packages/event-to-object" build', + 'bun run --cwd "src/js/packages/@reactpy/client" build', +] +build_app = [ + 'bun install --cwd "src/js/packages/@reactpy/app"', + 'bun run --cwd "src/js/packages/@reactpy/app" build', ] ######################### diff --git a/src/build_scripts/clean_js_dir.py b/src/build_scripts/clean_js_dir.py new file mode 100644 index 000000000..05db847e6 --- /dev/null +++ b/src/build_scripts/clean_js_dir.py @@ -0,0 +1,41 @@ +# /// script +# requires-python = ">=3.11" +# dependencies = [] +# /// + +# Deletes `dist`, `node_modules`, and `tsconfig.tsbuildinfo` from all JS packages in the JS source directory. + +import contextlib +import glob +import os +import pathlib +import shutil + +# Get the path to the JS source directory +js_src_dir = pathlib.Path(__file__).parent.parent / "js" + +# Get the paths to all `dist` folders in the JS source directory +dist_dirs = glob.glob(str(js_src_dir / "**/dist"), recursive=True) + +# Get the paths to all `node_modules` folders in the JS source directory +node_modules_dirs = glob.glob(str(js_src_dir / "**/node_modules"), recursive=True) + +# Get the paths to all `tsconfig.tsbuildinfo` files in the JS source directory +tsconfig_tsbuildinfo_files = glob.glob( + str(js_src_dir / "**/tsconfig.tsbuildinfo"), recursive=True +) + +# Delete all `dist` folders +for dist_dir in dist_dirs: + with contextlib.suppress(FileNotFoundError): + shutil.rmtree(dist_dir) + +# Delete all `node_modules` folders +for node_modules_dir in node_modules_dirs: + with contextlib.suppress(FileNotFoundError): + shutil.rmtree(node_modules_dir) + +# Delete all `tsconfig.tsbuildinfo` files +for tsconfig_tsbuildinfo_file in tsconfig_tsbuildinfo_files: + with contextlib.suppress(FileNotFoundError): + os.remove(tsconfig_tsbuildinfo_file) diff --git a/src/build_scripts/copy_dir.py b/src/build_scripts/copy_dir.py new file mode 100644 index 000000000..a7880e7c1 --- /dev/null +++ b/src/build_scripts/copy_dir.py @@ -0,0 +1,40 @@ +# /// script +# requires-python = ">=3.11" +# dependencies = [] +# /// + +# ruff: noqa: INP001 +import logging +import shutil +import sys +from pathlib import Path + + +def copy_files(source: Path, destination: Path) -> None: + if destination.exists(): + shutil.rmtree(destination) + destination.mkdir() + + for file in source.iterdir(): + if file.is_file(): + shutil.copy(file, destination / file.name) + else: + copy_files(file, destination / file.name) + + +if __name__ == "__main__": + if len(sys.argv) != 3: + logging.error( + "Script used incorrectly!\nUsage: python copy_dir.py " + ) + sys.exit(1) + + root_dir = Path(__file__).parent.parent.parent + src = Path(root_dir / sys.argv[1]) + dest = Path(root_dir / sys.argv[2]) + + if not src.exists(): + logging.error("Source directory %s does not exist", src) + sys.exit(1) + + copy_files(src, dest) diff --git a/src/js/packages/@reactpy/app/bun.lockb b/src/js/packages/@reactpy/app/bun.lockb index 9b6711a94ffa026046ecc30e00a82b5c9c8834de..bfa1d4168d5f8265befeeee841504f7f64b3ba63 100644 GIT binary patch literal 21701 zcmeHP2{@Ep`yZN8Bt$C}sie$cY$;pXsHiOMD$7`k8O>OuA}w0HNVHih+DM8vZQ4uP z6eTTMXt%u4s`S6_nK|b1_I}~@ec$!{ud8!ikMo@6_dEBw&wie{sjF%G^Lg4XUL0*U zCqUK3pCb(q!<*~6z}?H6&2Z=Pe4PCl0Xou>G#ahp#9{u#fU@VjH~VhRagR5tI6~Lq zxnzx)wLEsh%GtX$3>+X6IAftl>-ZNxOcX92CVCNgooTc%Umn}p)sIG-3o&vKz6L(V zL-~;4N%Ifz7v$wTyRq@bhvy{-FYspj^We?R%iSF#+}I2KoxN$abMP(=ct5@mM$_1Q z7k@8rH(CyzM(YmoNg_WI{B98Di~Knv-&*ABi+ok^l^|bdk^iL~jiw0U7b3q1{H_o_ zC-M)7{A7{8PUMGxuK@Yxi~JcP-x_>*h&LAbnj+tu>*mb&q|tJr4xJ#~9F&6P=zx!U zQWN>I;A4ILWrcd{AqszoFvb&{A5Y&9_0dk0?kUhFjfRoPNA%wl!YB`96SPAQ2%y|j z;A6ZipYIp!%cki72=y>oHf@Doq*|Eu&C0@<1LL0fci6sc)QUY(nX|W+$U1G18p5-y zm=#^_Q*ycBNyiZDnj}u~J)84i5AN4BG(M&F@aQztW$T=BCtQ6M6i^g3adq#<^Yk57 z=|7K585pKDbOqbx@F>RxM~6&)DX(riDp0ES=(roam0fCMmSl|ea^jh5B+7o^542U_ zrZ|3x3@-iNE;{GI@NOL+4(obr~Md{L8%Z$eXWFgQ|-Nm?jz97R{4q`cEksemiZ*87DsHA%#P+{N{H-D49t4B@kyJ z!gqjo5>Ltcx345$Pf!HPPr}I25=Zje0-h-`Pd%Ffput!BV~1l7nC1yB(61h69DN0o?u}*Y>^}RL*d0lRK64-TZ=yi zcx*r9Ybh25B<24JFR;jkVH`}6IA^!W5qv%*nK%R{HLYlHq=0B_v}d+IP_)<){3yU<`w{(P9a`cDJ{s`2ecC-^*({ABOe+VblGuLb3|M)xQaju&(quxWsPA0`O2;t!F36yUM{BD6I!5d3Pu zj{-c7U39&LUbBA*{u_W``6sQ&QUc$3l` z3BhLp2CH>khX_MZyCTLGT*oBqueOi72WU*mZJ-*NoIbSRJmrWJuhANvZ{4a*?y z)Dj=_<9@n3JcHpu_y5tyc}ZI!eN!LnrvnfAx}tRSv2FE4zJVzIS3c?;`mlfp=3;?w z3O@D)3wY332>$-;WAyKKY+1kh-)_eSxd!Y=|4s*d5;P$%m72cp=nUDsn6IncR8rRM z! zb2=1W?CbwFN8zQ;gY=V!6E$(-9wq_aofXsnxr$Tt-W5HJ1}`q z?wy-6K5rjVt$B57kFhhOi;`dDEOjwkUK!_69a%C^t(<) z-*lBD(NEPgxJ#_FSJe(Km)!Yg8-*9=2IA-!_Xc)~|1f8!d0d$08MOs{CQGipcXm&5 z@mFuP4h1Pc?7C(=?(W6>Q-gl;P&?@y*T#HtRmj3u)WexUfM=P7pXC3?@+y3c-C}U zSviFljxUXle%t8up7*Qdud1D@v+p?GNIK`z>oa;1k%O-7J2-YwS1aSLub-|C9B94u z@RoU9Mt9oQ?vv!%`(|{7ce~mptZ=;4qa%eE*HPl=wGrLM>(NzytQe{I{&D>Gg9eV@ zBCJCCe#j{*DDlcw;@(wuNOyXc?O{FQd+zif;Z7r11|_PzyMHD=i!@*KR(~mlm#oXk zO|P$%>K?pn+^f!MBgWhMADx}d%DdmKH{(#s^SSx$!$0opbjmPtMzmW8@5gcON*4Pq zO!du+^xw|$I%ZioX)|}qO$sk;!y6s_a$U%M&4kAnR*dEF_h+k1$|sLh?Y<-EsI>Ei zy>&y~mMiK7J9fIaJy0fcZ)#>JV_(8orwvDrm$(l$x^Qrk&x_YEDFC%#&p_Qz(OI_9 zyF1t33{Ymxz3+A^`gW#I(wglJr6nGYbM+fW$SmefvOIb8!3YoAddmZ68e}%SoiNrg zY2^r7Oma$uOT&YU0(phJxL+fVt{qvdscq;q-M2KPmMQn4PIJOcS=NISJIBdHS50GS zZ&RK!FWB?*K&Pl{4`ysRrr%k%ZbHsw`OW2ZkMkPl2KI6m@X`gFSls6jN6)zX&edq! z&W$oRh8()lzJGc8%BlCBMk{Php3s{db6!2}X(b1LHacXacDruGG6&KZ5 zy>r?vsi}6Pn_11Q+l!XJGuFbb>Yt!h90WCFlxM%Ue}D<6&(GO z#v)#v)2Ziv`k~a@7cbY!o0uZIv=8aOL6JvF6nwhl@v*rJ2bNFXcaK)Q`_YX*E%i1AELb*O!&+|DiM)AL-8paW9seHw#39jA z&n-PPa_0iez_@W*O9H<+m?l(Jrd=250eSIzAaV4UYck$jnZMDTeX;D&w4lZN^*^V3 zKD?!&qU)Hk?rGs1=g(@Yp>psd4nON;KY>O>xar^QemrN|*_#79?+c69X z@!Jq_^mNUti0N@QJ38(gGE~B<_e#svxK` z5f*&=dLJ)1X-kDfX6crPQh5n*y8{3T9UCE8Ck?{vg*p+e=gF|BGp(e3aP^>Gf$*$ZxG4^^x&?{&3)pieqanH$HL`=@-XEA1d#; zMLrKJ3RheyQ`O&m;_l1qX66%%&L61IUX#>sd)x*(=a$dVr9WhEO$)b5vRi1_HSyc{ zr}jOJZ!TBwd#8VO-GeZ~3!Htayq^lvf;71POKP%a6*+glnz~y4)}y@-4%VwXxqC)% zs{@M_LIUCj2Mt|)YUvV(qWwlr*JFAG^V`Wve;T6nE?#}OfLBs5@ARYcPF_;~QHC)l z*Y0V0*V6Qf8$;D24(mt1+je4Ms#^K0L=D;MyWF%-$@kotDIpI7yET;MajQ)^4%(Rj<^I4dW zx8!cK;6QGi>Bgj`Nhd?T(CA0r?%I?v_4b+3TSUATz^O*%9lrR8)6<9tJY7yQ@Ghxz}r!vUv(;P!lp3~gO*vZow=aYzf1AUfC2Pi z+Euf;bBsP*-`3;fd}q~_uVjz!yzVAE z3RWC(?Df)O(2pJ-v$)Z*-0>9NfmGgsiJgvlOsN`gqMhkqwo7kIcJ;esimMX7Ic@L! zu%Ygw%kzAhjT)hsCmK}S-5NPx$+h>ip0g%iS{J!|rq(N)k!$dqDmk|dqVi6Ya_aE9 z-Hoab+drKd*)Qb9>$9r!Q#7|stiLqv?SQoR0cum%7fyc?uuvOVjb!n0W0%bNE}L-)$)AKM+^ zTJ-%&p#5T-VQMSeeR4O=-&#DwGqh4WahpoE&*1MAUUI*I^z_|Po)H@B>`od*c?|61 zb}M3rez|`9?Dr3+DcQSREQ)*Kx$Vhj#?_u-AD61+o&Q$0-=a2?m*gJexSc+B;~lT< zGby~9RC%A)q*XuET7H?&O3LVGn?5sp^s^xY_Z+jFy!4MX&s6QJW2GjYdUAi1_Vt;E zsxHk<=1k5=PMxq&W7FP;uL;s+4CmuiXU?dGCcMPF;)bYoo%IPP9C>;RuCyD3zBVK4r0W zp8wJA9*50}=O1cE%T~%en*3<1qO9@RZ+17I+}*jL|B+7X!&hhDFX}U^|FU~oLGn3o zST{?qkB&-ZRn|~=wWz!Yw;NZ5?7d{0^)SHb<*Qn$4!v(@uP+!=ShL}v+c#C_>GwI7 z5;qjGB4wA_j9krhi%-9)$-SjzP>+PL)RLoe)lzot;e zYN=2D(k?sd4=XCn0@y`bl(n&ojlKneBFO~P^W^gyK>9UDIL0-t9oUctI4hD zfp_1&J3ejN+~r&P7=#ADDe;(>Md2m)QAkgBwn{nZU$uT=ghL6-QagELdxIAAmO1I08P*=C8s2@>I6J;tbHz$<#8?i0F+-DbsSBENZkME<5i*;vctbLNTZ?M#;Sf0E@AwyL&cg4CbM{b{s2w*L(k9)ea>`JGkzVELXy1jO} zcTR0jpq=gXTUV7SyySk2LjTWSDZDHS3;oN7LAxDqblS9Ohj-tKM6V~SXRmxQV{x(5 zI>!O!m!6C<>-@zjPQfMdHp_SLfsGBJY>j;rD;$-7Xz~?$hRoB6-B01g`#a+39+mM6 zSLC006H{IIHt4W<@wb@T%NwoLoL@!d2ON~LSXE*bHK3EUeec=~Z`)KQ=S{OSq)v1& zJ=8t#eEi^7``&h?@WO8;8XbM3^)bop)u)|(#;rPO=aLaUbL6vP)!|*OY<}#bnXG6? zK4p7-xjk%<`>qQuCf=OCDc|vSj@=o ztnDP+PYTxyxSMWt^cm})ogM6a=8${voSc47)4ZSBzfO){KRNQqfoG}RH1ggaW6nK! za`%e-A?>eZ)$#5rq`f{MsX=Fa$hb}ywjY@Ia7D8ItM@kYgyv@h4qw0@``R9RwMb(?uCXIbKbcH=0# z@LP^XM<3YhE??!I^^V7D%XA}TM^@GJZEv3ur=|Zzd2zJE;6X?A6!W^Ig|IBNI~bhU ze!lu+p310@6!}wLFT=HmOD|I%3%vgghj(b?ca!h~Pv(67f1^~;yQmoAV-RH_zr`f7 zU>x~f<_ieG-9{Kh{dT`K@IS8s?7QT*v-sm_^8Pj27YVcw+4P|;6JZ{-`k)6jE;MX><=A8zO)IS=gRcr@co>(c6BRoTegKS4 z+QeUvWd`j3q8!4DzfHk2vpGCw@ZfK?@csqq@OL2in+^PZ1%5BW-!0&80r377?}qWd z74JszUJ&mx@!k=?4R?kIzro}8a{RW9_i!jLerLfuaQv>P1`mGcRE4J(JpJLp@4xu1 z7Qa*CHzd5*#%~7$;K6S{_?;2IvEg@D{3eFqukfxOzg^%R7v7iPom7lS2Qm0VG;q!7 z0x^h38By1$8|1}uu`XC=)CJKMwiN0Dbwc!m^+j2+9#}V3c(A@GH`WDZMVV24tS{;S z>w|SgJz$-%?x+LQA=U|XhdM<4;T)Z6q+G}WEf7X5 z8=;(GOk)&**sc=WM@Z3Uf^;lhauYc~wNu^@#M z9i{;jI?6S`pbm(wDafY7G-QIRiS;nCK7|x42b50igo&N0C3X z!QvER`AsZ`#VN!#oY)qNQ;79Au|5{35c_gspDa!x7U;x+S)4*_)QOF=IE7fT6Dw$O z3b}_O_P~Pv27Ml88yF%uvWUg7AVn~Ki0wGBJr?vtL+sbYikw&>Lkf!-#0-LY71(eN zA$H4x6u}54mg&T@8B+9wOw6B}kofe8d<`&j}Uz#ssP*s~LRXh{h+Oz-kgGO=tY zmeIf_8mDZIE7#47oL*jy#S$ii}n^*gbimXufmT(78GEk4^PfX!o$3G!p} zIL_YoemrOvGgV#jQZ`JylnMC!_^tx~Ouf=h-i8<@yj#UMxyPv{Recs7_v7=~Jm7S? zqZ)4KKH;;kq_CdLhZ$Ux2N~@Y>x2IcV>pwk?dt8t=J++Dgh7%B>FfYVX83U#T$lN5SHHgmJ^lQA`NOrL z2oEp5A1|26@%5R{XL5NS+QLTGW{6%Gu)1OkGyOak0qxJso*-~AN+uB6mFMN_H=obt zFnqaQ9MJYJN}^_i@~Ap;aYz76(Hz43Ilwr_pZd_0yJ9-RV z<}jviGwiU;LU#BIxlx*5*Fdn4LwAH8II@*&q(?Mi6Gyg^t#QGjRJ1X! zm0ZHU1$}|S)fm@GuEwR3!qphpN-nYtQ>aK(E186~X`*=&^^cgE^j0BLi~FkZMhWU9 ze8H_7UMDrPA!^(z1F-R(A-JSMBpisCY`&|rFWbwN%L#yG(vQvI!p75`?dR$l=;`bi z=)oXoN>R|q%ZH8IvOuEF?y-acyopEmj*4hy&0&;0%uvn3<}wV3W;KHBl8v#dmgR^B6Av?%@4G zU({^CObvouxX}mhU*N@!2xxHtu&80cid5#$^Zo^kIFndCfPk$yULE{ef}a}~IezLh zg0^a|7vtRppwR=(!UaS#WsAEtpu_<;2_^TNuvP3(fE!^GK53$ult(lUI&1pH|SNm&Gr(J Y@YG8HV4wz}6F_GZ$S=H7`QQ8de~3i{H~;_u delta 2382 zcmcf?YfzI%@XN;shS)%Yfh2+m1tEkcl7IvOc?v~Au>l29u!uo{$ioC%iadNUVnvM{ zDz>$PRYs-72Ni9tpi-UsXcb357z7>5NUaJw6~za3FUgl`JJXr|>CW8k?c;X$Ztr%_ z9boM6(@8z3Ay+YlO zRmu$=4UUO3S!8Ek>5fpj=fM6?tvfm_a+P=LvZ@vznul(fc_9uJ#fU`nDFxD*TQVWY zNH9;JS}O(P7t}=sGpvx%JeWNl!kLC80A}d6xhI-KG1;}i4FE2LMi3_MC~&?1&gID9 zU}3Va zl)@e_Y>A9BL*1Mpa=RHC&kZ6Uo1r8?3JQG&sDMJ831_q3A zbYqPe(nyeKIgdXD7T6O3K@mJm0AP%F+rofA2muTXCXBc|`~SsHm+d9w>K=oJ>`sLg zu7COY;dJGQb5n6qP0Q&97qWb+yYQsLwygUBNl$IA_r=Gy>ypr@dtF0+!ZYDd`gNLP;Ys&3Ij!oDez5iI@L9|)`*TNu1t?@gc?-t(-wdUj4hn>5#Rd0*Z2s`OynO|P2= z%}+lHUs$!oL5+3^1SMZrj|(f{eNm+5TgzkjDdSeP_MWRdSub3-(J}2@!m}mWJ)>p! z7c{$G9Y`LTWHay5B#)k+xts|JC-P>eZn?Ek`9^f`5lukt@H`Tj`Fj4dtZlzFFa<%xcRf_nsQhxF^SD{@WQ% zx?!D*|BN4Q-EwOfb${5Fbd5JlGkt^X$lF7gl>LYg^&V8H~s^ z%BRfefilk`dy#BJ-dgm@w%hhQuJ^{Fl&Nm0bSlrE4`MqQ_#feXuwdXignu92 zhHnA?R9s{5Yf2mk6Tk^<;@uJ}SVH|I%wb?}aDV#mh(9vaQ~erm!zQpP>;jv|JbH~? z(rauFyTYz<2m?lUi8w|8R^S4;Z*sn0kdxfkNt1yN1w`1>wVf`+BqPO3>MfN+H$Zuz zLbNy3&Rik&BF>@~pn3zx+tXbl-=cO+c-j6hpQ;n>y*&lfiC47M$j~wuT!AR zkM19IvHwd#cMQ6`>!Xl+K^Sx%=|%t&nN$V=nYxduRWMR~KvDwv{AUOMl! z=(a}pAd=At*@8}|1jvc#aL zmFROT)h_)cJwvVXmr5tAR;seK5^atoXK|(~O{+I6S(39HJ&LeL^-2dftgJ~}rdpD( zR;^IyvNbpczKMeUrnSTeInQxHTjB&`@uR|4 V;OJ;kxVSQYOk=&$p8*A;`cEcTlbrwn diff --git a/src/js/packages/@reactpy/app/package.json b/src/js/packages/@reactpy/app/package.json index bb58aabeb..05ce204bc 100644 --- a/src/js/packages/@reactpy/app/package.json +++ b/src/js/packages/@reactpy/app/package.json @@ -3,12 +3,15 @@ "description": "ReactPy's client-side entry point. This is strictly for internal use and is not designed to be distributed.", "license": "MIT", "dependencies": { - "@reactpy/client": "^0.3.2", - "event-to-object": "^0.1.2", + "@reactpy/client": "file:../client", + "event-to-object": "file:../../event-to-object", "preact": "^10.7.0" }, "devDependencies": { "@types/react": "^17.0", "@types/react-dom": "^17.0" + }, + "scripts": { + "build": "bun build \"src/index.ts\" --outdir \"dist\" --minify --sourcemap=linked" } } diff --git a/src/js/packages/@reactpy/client/bun.lockb b/src/js/packages/@reactpy/client/bun.lockb index f0c8833ea3dda89e84034ea884a7c7d7bd8d39e5..90f99e1d0153c9c1d0b144f81fc62e8d43e9a6ea 100644 GIT binary patch delta 18 Zcmcbvd|i0~FPn{_o`IghW;Wi7EC4za1#AES delta 18 Zcmcbvd|i0~FI${}o}r%6W;Wi7EC4%`1&{y$ diff --git a/src/js/packages/@reactpy/client/package.json b/src/js/packages/@reactpy/client/package.json index a58fa4bc8..4725fe983 100644 --- a/src/js/packages/@reactpy/client/package.json +++ b/src/js/packages/@reactpy/client/package.json @@ -17,7 +17,6 @@ "type": "module", "main": "dist/index.js", "dependencies": { - "event-to-object": "^0.1.2", "json-pointer": "^0.6.2", "preact": "^10.25.4" }, @@ -26,6 +25,9 @@ "@types/react": "^17.0", "@types/react-dom": "^17.0" }, + "peerDependencies": { + "event-to-object": "<1.0.0" + }, "scripts": { "build": "tsc -b", "checkTypes": "tsc --noEmit" From 1797ba2a1276f94fb00be204c030b7a1574b680f Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Sat, 18 Jan 2025 06:17:48 -0800 Subject: [PATCH 15/30] increase test timeout --- pyproject.toml | 1 - src/reactpy/config.py | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 63bdc97de..bdfb3c509 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -92,7 +92,6 @@ extra-dependencies = [ "coverage[toml]>=6.5", "responses", "playwright", - # TODO: This dependency needs to be pulled out. ReactPy no longer uses this in the core logic. "jsonpointer", # TODO: Nuke everything past this point after removing backends from deps "starlette >=0.13.6", diff --git a/src/reactpy/config.py b/src/reactpy/config.py index d08cdc218..426398208 100644 --- a/src/reactpy/config.py +++ b/src/reactpy/config.py @@ -75,7 +75,7 @@ def boolean(value: str | bool | int) -> bool: REACTPY_TESTING_DEFAULT_TIMEOUT = Option( "REACTPY_TESTING_DEFAULT_TIMEOUT", - 5.0, + 10.0, mutable=False, validator=float, ) From 42f4ab31e7bb34b4597b5519639f44b0713d0fc2 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Sun, 19 Jan 2025 03:25:14 -0800 Subject: [PATCH 16/30] potentially working publishing workflow --- .github/workflows/.hatch-run.yml | 12 +++---- .github/workflows/publish.yml | 26 ++++++++++++--- docs/source/about/changelog.rst | 4 ++- pyproject.toml | 30 +++++++++++++++--- src/js/.gitignore | 2 ++ src/js/package.json | 2 +- src/js/packages/@reactpy/app/bun.lockb | Bin 21701 -> 21733 bytes src/js/packages/@reactpy/app/package.json | 6 ++-- src/js/packages/@reactpy/client/.gitignore | 8 ----- src/js/packages/@reactpy/client/bun.lockb | Bin 4567 -> 5001 bytes src/js/packages/@reactpy/client/package.json | 3 +- src/js/packages/event-to-object/README.md | 3 ++ src/js/packages/event-to-object/package.json | 6 ++-- .../event-to-object/tests/tooling/mock.ts | 5 --- 14 files changed, 71 insertions(+), 36 deletions(-) delete mode 100644 src/js/packages/@reactpy/client/.gitignore create mode 100644 src/js/packages/event-to-object/README.md diff --git a/.github/workflows/.hatch-run.yml b/.github/workflows/.hatch-run.yml index 6f018bdf8..0a5579d77 100644 --- a/.github/workflows/.hatch-run.yml +++ b/.github/workflows/.hatch-run.yml @@ -6,7 +6,7 @@ on: job-name: required: true type: string - hatch-run: + run-cmd: required: true type: string runs-on: @@ -43,10 +43,10 @@ jobs: with: python-version: ${{ matrix.python-version }} - name: Install Python Dependencies - run: pip install hatch poetry + run: pip install --upgrade pip hatch uv - name: Run Scripts env: - NODE_AUTH_TOKEN: ${{ secrets.node-auth-token }} - PYPI_USERNAME: ${{ secrets.pypi-username }} - PYPI_PASSWORD: ${{ secrets.pypi-password }} - run: hatch run ${{ inputs.hatch-run }} + NPM_CONFIG_TOKEN: ${{ secrets.node-auth-token }} + HATCH_INDEX_USER: ${{ secrets.pypi-username }} + HATCH_INDEX_AUTH: ${{ secrets.pypi-password }} + run: ${{ inputs.run-cmd }} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 49e9b11e7..30b12240b 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -5,12 +5,30 @@ on: types: [published] jobs: - publish: + publish-reactpy: + if: startsWith(github.event.release.name, 'reactpy ') uses: ./.github/workflows/.hatch-run.yml with: - job-name: "publish" - hatch-run: "publish" + job-name: "Publish to PyPI" + run-cmd: "hatch build --clean && hatch publish --yes" secrets: - node-auth-token: ${{ secrets.NODE_AUTH_TOKEN }} pypi-username: ${{ secrets.PYPI_USERNAME }} pypi-password: ${{ secrets.PYPI_PASSWORD }} + + publish-reactpy-client: + if: startsWith(github.event.release.name, '@reactpy/client ') + uses: ./.github/workflows/.hatch-run.yml + with: + job-name: "Publish to NPM" + run-cmd: "hatch run javascript:publish_reactpy_client" + secrets: + node-auth-token: ${{ secrets.NODE_AUTH_TOKEN }} + + publish-event-to-object: + if: startsWith(github.event.release.name, 'event-to-object ') + uses: ./.github/workflows/.hatch-run.yml + with: + job-name: "Publish to NPM" + run-cmd: "hatch run javascript:publish_event_to_object" + secrets: + node-auth-token: ${{ secrets.NODE_AUTH_TOKEN }} diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index fd91cdf19..5701765cb 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -18,7 +18,9 @@ Changelog Unreleased ---------- -Nothing (yet)! +**Changed** + +- Substitute ``react`` rendering on the client with ``preact``. v1.1.0 ------ diff --git a/pyproject.toml b/pyproject.toml index bdfb3c509..530d1a388 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -164,24 +164,44 @@ type_check = "mypy --strict src/reactpy" detached = true [tool.hatch.envs.javascript.scripts] -check = ['bun install --cwd "src/js"', 'bun run --cwd "src/js" check'] +check = [ + 'bun install --cwd "src/js"', + 'bun run --cwd "src/js" lint', + 'bun run --cwd "src/js/packages/event-to-object" checkTypes', + 'bun run --cwd "src/js/packages/@reactpy/client" checkTypes', + 'bun run --cwd "src/js/packages/@reactpy/app" checkTypes', +] fix = ['bun install --cwd "src/js"', 'bun run --cwd "src/js" format'] +test = [ + 'bun install --cwd "src/js"', + 'bun run --cwd "src/js/packages/event-to-object" test', +] build = [ 'hatch run "src/build_scripts/clean_js_dir.py"', - 'hatch run javascript:build_packages', + 'hatch run javascript:build_event_to_object', + 'hatch run javascript:build_client', 'hatch run javascript:build_app', ] -build_packages = [ - 'bun install --cwd "src/js"', +build_event_to_object = [ 'bun install --cwd "src/js/packages/event-to-object"', - 'bun install --cwd "src/js/packages/@reactpy/client"', 'bun run --cwd "src/js/packages/event-to-object" build', +] +build_client = [ + 'bun install --cwd "src/js/packages/@reactpy/client"', 'bun run --cwd "src/js/packages/@reactpy/client" build', ] build_app = [ 'bun install --cwd "src/js/packages/@reactpy/app"', 'bun run --cwd "src/js/packages/@reactpy/app" build', ] +publish_event_to_object = [ + 'hatch run javascript:build_event_to_object', + 'cd "src/js/packages/event-to-object" && bun publish --access public', +] +publish_client = [ + 'hatch run javascript:build_client', + 'cd "src/js/packages/@reactpy/client" && bun publish --access public', +] ######################### # >>> Generic Tools <<< # diff --git a/src/js/.gitignore b/src/js/.gitignore index 77c486e8c..42f1aa542 100644 --- a/src/js/.gitignore +++ b/src/js/.gitignore @@ -1,3 +1,5 @@ tsconfig.tsbuildinfo packages/**/package-lock.json **/dist/* +node_modules +*.tgz diff --git a/src/js/package.json b/src/js/package.json index 7cc346f66..bb21320c4 100644 --- a/src/js/package.json +++ b/src/js/package.json @@ -8,7 +8,7 @@ }, "license": "MIT", "scripts": { - "check": "prettier --check . && eslint", + "lint": "prettier --check . && eslint", "format": "prettier --write . && eslint --fix" } } diff --git a/src/js/packages/@reactpy/app/bun.lockb b/src/js/packages/@reactpy/app/bun.lockb index bfa1d4168d5f8265befeeee841504f7f64b3ba63..8275858ebd8e499b666e1e6444641934c5af0d41 100644 GIT binary patch delta 1373 zcmchXzfTlF6vt^jE_8Uq1Z4VuHWl2At?>=&!-ofE=Lhc)VQ z9|On18DN1P&K5`zveqxvfN!m$V ze~vw=t-!axnA(*)xsCW*9<{JsT#e6p2=~N<%-6o&5|M%+;mR#+8L0YOl7k&R&34`FsD8!Fg@hR`sD!GxF)0$3P}AqGp5 z-JH&7VYF}yZKkrqkZ45$4Fx~I&L04UiSN4%ag`7kHJs#`cjlZs_v_qqzn1jpk}izt zfnq+Zy<%}huNAj9^hYUa&$_3Ss#j{s3!=t|p=V{%9FDw&GX|$b&AwpMT(0v^z(Z)% zT5uX@a0bw*CTIZkM**!GW&3mBJh%a973%-)IOgxY@hfL^=mbt8a;F^qRk^}GKuv^k zssZkXIuQB~XgI!NfLosi>?jlJeP|7^0nIKy4=UY%lS;pu9I|t^`$I0-tg4-?Xy+gG zhyT+4XDYG(l{x*VT$b0bj+RQ6mL2|R2iviU4sA#x*{BneOXmGygoXf*0gp%$>{lrl z5djup#oh$0tR8R+^n%+U4wyX-RR_)jTnyzi%X8Way1+%y4q~7UG%GcsuHl8{+Xz^~ zS3o!D0G;3}xBxDJCeQ*dgX@6T1q)yh^n*eQ4{BPbl3h|rMdW2_$NI!G53}V}x?85Q z{qg;)>*3bZ+2z&uZw!;`!n~I}C@;0gwXdJK&)=;WW=`BpJFdLx%&14gXLGjofZ}vshO#vd&^cWwcQ9xO)Ek%!WD8^YsGZkU9DBbI~WmO z#-NMckV-_s+FmvvtX?9D!b-Cj5y6+tLZe7bZT`K~Qv?6Znfd0QIcMfOA9q|#=u+(} zdQj7u9^UymF}6G-s32)j`At1EbV?p_t1|oLrrfx^<&DH6e0NcFV=?b_yjn&`lhtNE zZE_G&gdqf*%Boo4EXhYd82v1?aK1T@&L4N`*i<|6rhtp~%QHY14k2MLaTQ*T& z*)}%ZpYwKMyldp}%y99IDM|N&Sa^G9Q*u(fxwMCBgf)S8TMo7lTm}uzrY3MwJ-r5Q z)SqCP>O&ORBNJz)FR*2%G{vy$){FKVcbl2J8*c(*|&&c7Zz}jpYee z1h7w#3I@v2ATV;9MOcLhnSyg%3K%#}ggrd+ADmLxP3{6Ud~XfUP2sk#w;u>yn!d97 zP*?c7HM>6QhwHiGC*jIbqo z7U|!SoMviO8kL5SD7ec} z62npU=&+lZAx~Gr?%8^~!b&ZbY8I1C_h)|HR{g|bx0`LXW}ESSO!JAdBfn(03C8)h zblq!uLAo~LE4jE4lBIDt1%v13usYSI3X8eYVXj4`bW|y;O3TeAD3NMJjQe(z&0>W< rshjsU^frNKa)shA>`*J!{~RSw0v6?oJ@O5%=duP0g|b7q|EqrhM)(LQ delta 683 zcma)4&ubG=5Pq{w)6HgglT<9U5lc6=QnZ`ILIM(+#UNHRQ1Bpvw&=3O7HPINE!0yQ z@sNtvG9CmkHWzad!CdMO^ri&V9&M56RrKILAl8{=b9Z3od*6H?^OkvAIr=5`z#Kib zk*>}azOQfhxz9hinVqdy)#lgJ@xJQq!mZ=qCil-oL@R=u7YAo%f^E{SAt6fcP3Njz z6e3S8mH2Fd8`s4Ian?=3Frne;dmsc&EHwzZZ!awsS6zp_;=pDzCNKN9%DFqWdniK! zEtrH$Sb;2TV1w!o2BfUi4XF51SOOW&VMWTqeQZ$uiGi*x#PKZEMXXSLijA%`PJwU8 zPvbc`80mJ=!-Rqn(D98AGy5;+i|%E>rkty9`@>Q_r>Ic3lwY9Ky#2fh;;cF`$n(VC z{dVwKq5R=_!YaO1PYy8Sc7T%awrGnSF3TgB(GDG!h_b{MnUX*FiD%o@a77z|5Wd#> zqn#xW92}0U#V&l5VLF*M6J$5>H|d>6>Fij7OwvrSA&)UVAMHHiv&)ZnwJQ&MB$!T^ zDf5I71}^I3(axit|Lm6U4$aqEdNM`x_wb$GuNXQVDGVL|=$10&(QE|QLq~M0^{cq6 uar?%cvw)vM3Ef$77K&rV!dT(jyknz3{1WZnD8BDKMrhPWBW1v~z@vX2v6Th@ diff --git a/src/js/packages/@reactpy/client/package.json b/src/js/packages/@reactpy/client/package.json index 4725fe983..cf97a5bff 100644 --- a/src/js/packages/@reactpy/client/package.json +++ b/src/js/packages/@reactpy/client/package.json @@ -23,7 +23,8 @@ "devDependencies": { "@types/json-pointer": "^1.0.31", "@types/react": "^17.0", - "@types/react-dom": "^17.0" + "@types/react-dom": "^17.0", + "typescript": "^5.7.3" }, "peerDependencies": { "event-to-object": "<1.0.0" diff --git a/src/js/packages/event-to-object/README.md b/src/js/packages/event-to-object/README.md new file mode 100644 index 000000000..b28f5d3fb --- /dev/null +++ b/src/js/packages/event-to-object/README.md @@ -0,0 +1,3 @@ +# Event to Object + +Converts a JavaScript events to JSON serializable objects. diff --git a/src/js/packages/event-to-object/package.json b/src/js/packages/event-to-object/package.json index a019b7bc4..dd674d162 100644 --- a/src/js/packages/event-to-object/package.json +++ b/src/js/packages/event-to-object/package.json @@ -1,7 +1,7 @@ { "name": "event-to-object", "version": "0.1.2", - "description": "Convert native events to JSON serializable objects", + "description": "Converts a JavaScript events to JSON serializable objects.", "author": "Ryan Morshead", "license": "MIT", "repository": { @@ -28,7 +28,7 @@ }, "scripts": { "build": "tsc -b", - "test": "uvu -r tsm tests", - "checkTypes": "tsc --noEmit" + "checkTypes": "tsc --noEmit", + "test": "uvu -r tsm tests" } } diff --git a/src/js/packages/event-to-object/tests/tooling/mock.ts b/src/js/packages/event-to-object/tests/tooling/mock.ts index 81e506500..e9f1d03a4 100644 --- a/src/js/packages/event-to-object/tests/tooling/mock.ts +++ b/src/js/packages/event-to-object/tests/tooling/mock.ts @@ -32,11 +32,6 @@ export const mockGamepad = { value: 0, }, ], - hapticActuators: [ - { - type: "vibration", - }, - ], timestamp: undefined, }; From 9369442b9ca27875e3a33b96d828d84452320edd Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Sun, 19 Jan 2025 21:11:40 -0800 Subject: [PATCH 17/30] potentially working check workflows --- .github/workflows/check.yml | 14 +- LICENSE.md => LICENSE | 4 +- docs/README.md | 19 +- docs/poetry.lock | 1772 ++++++++++------- docs/pyproject.toml | 2 +- docs/source/_custom_js/package-lock.json | 15 +- docs/source/_exts/autogen_api_docs.py | 2 +- pyproject.toml | 50 +- .../_console/rewrite_camel_case_props.py | 4 - src/reactpy/_console/rewrite_keys.py | 4 - src/reactpy/_warnings.py | 2 +- src/reactpy/backend/tornado.py | 6 +- src/reactpy/core/component.py | 2 +- src/reactpy/core/events.py | 4 +- src/reactpy/core/vdom.py | 5 +- src/reactpy/html.py | 1 + src/reactpy/testing/backend.py | 4 + .../test_rewrite_camel_case_props.py | 4 - tests/test_console/test_rewrite_keys.py | 4 - 19 files changed, 1153 insertions(+), 765 deletions(-) rename LICENSE.md => LICENSE (93%) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 166240dd5..0f06a8b56 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -15,34 +15,32 @@ jobs: uses: ./.github/workflows/.hatch-run.yml with: job-name: "python-{0}" - hatch-run: "test-py" + run-cmd: "hatch test --cover" lint-py: uses: ./.github/workflows/.hatch-run.yml with: job-name: "python-{0}" - hatch-run: "lint-py" + run-cmd: "hatch run python:check" test-py-matrix: uses: ./.github/workflows/.hatch-run.yml with: job-name: "python-{0} {1}" - hatch-run: "test-py --no-cov" + run-cmd: "hatch test" runs-on: '["ubuntu-latest", "macos-latest", "windows-latest"]' python-version: '["3.9", "3.10", "3.11"]' test-docs: uses: ./.github/workflows/.hatch-run.yml with: job-name: "python-{0}" - hatch-run: "test-docs" - # as of Dec 2023 lxml does have wheels for 3.12 - # https://bugs.launchpad.net/lxml/+bug/2040440 + run-cmd: "hatch run docs:check" python-version: '["3.11"]' test-js: uses: ./.github/workflows/.hatch-run.yml with: job-name: "{1}" - hatch-run: "test-js" + run-cmd: "hatch run javascript:test" lint-js: uses: ./.github/workflows/.hatch-run.yml with: job-name: "{1}" - hatch-run: "lint-js" + run-cmd: "hatch run javascript:check" diff --git a/LICENSE.md b/LICENSE similarity index 93% rename from LICENSE.md rename to LICENSE index f5423c3d3..d48129c8b 100644 --- a/LICENSE.md +++ b/LICENSE @@ -1,6 +1,6 @@ -## The MIT License (MIT) +The MIT License (MIT) -#### Copyright (c) Reactive Python and affiliates. +Copyright (c) Reactive Python and affiliates. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/docs/README.md b/docs/README.md index 1360bc825..a9b6efb47 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,20 +1,3 @@ # ReactPy's Documentation -We provide two main ways to run the docs. Both use -[`nox`](https://pypi.org/project/nox/): - -- `nox -s docs` - displays the docs and rebuilds when files are modified. -- `nox -s docs-in-docker` - builds a docker image and runs the docs from there. - -If any changes to the core of the documentation are made (i.e. to non-`*.rst` files), -then you should run a manual test of the documentation using the `docs_in_docker` -session. - -If you wish to build and run the docs by hand you need to perform two commands, each -being run from the root of the repository: - -- `sphinx-build -b html docs/source docs/build` -- `python scripts/run_docs.py` - -The first command constructs the static HTML and any Javascript. The latter actually -runs the web server that serves the content. +... diff --git a/docs/poetry.lock b/docs/poetry.lock index 8e1daef24..4b1c41d1d 100644 --- a/docs/poetry.lock +++ b/docs/poetry.lock @@ -1,14 +1,15 @@ -# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.0.1 and should not be changed by hand. [[package]] name = "aiofiles" -version = "23.1.0" +version = "24.1.0" description = "File support for asyncio." optional = false -python-versions = ">=3.7,<4.0" +python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "aiofiles-23.1.0-py3-none-any.whl", hash = "sha256:9312414ae06472eb6f1d163f555e466a23aed1c8f60c30cccf7121dba2e53eb2"}, - {file = "aiofiles-23.1.0.tar.gz", hash = "sha256:edd247df9a19e0db16534d4baaf536d6609a43e1de5401d7a4c1c148753a1635"}, + {file = "aiofiles-24.1.0-py3-none-any.whl", hash = "sha256:b4ec55f4195e3eb5d7abd1bf7e061763e864dd4954231fb8539a0ef8bb8260e5"}, + {file = "aiofiles-24.1.0.tar.gz", hash = "sha256:22a075c9e5a3810f0c2e48f3008c94d68c65d763b9b03857924c99e57355166c"}, ] [[package]] @@ -17,41 +18,57 @@ version = "0.7.13" description = "A configurable sidebar-enabled Sphinx theme" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "alabaster-0.7.13-py3-none-any.whl", hash = "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3"}, {file = "alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2"}, ] +[[package]] +name = "annotated-types" +version = "0.7.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, +] + [[package]] name = "anyio" -version = "3.7.0" +version = "4.8.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "anyio-3.7.0-py3-none-any.whl", hash = "sha256:eddca883c4175f14df8aedce21054bfca3adb70ffe76a9f607aef9d7fa2ea7f0"}, - {file = "anyio-3.7.0.tar.gz", hash = "sha256:275d9973793619a5374e1c89a4f4ad3f4b0a5510a2b5b939444bee8f4c4d37ce"}, + {file = "anyio-4.8.0-py3-none-any.whl", hash = "sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a"}, + {file = "anyio-4.8.0.tar.gz", hash = "sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a"}, ] [package.dependencies] -exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" +typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} [package.extras] -doc = ["Sphinx (>=6.1.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme", "sphinxcontrib-jquery"] -test = ["anyio[trio]", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (<0.22)"] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21)"] +trio = ["trio (>=0.26.1)"] [[package]] name = "asgiref" -version = "3.7.2" +version = "3.8.1" description = "ASGI specs, helper code, and adapters" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "asgiref-3.7.2-py3-none-any.whl", hash = "sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e"}, - {file = "asgiref-3.7.2.tar.gz", hash = "sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed"}, + {file = "asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47"}, + {file = "asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590"}, ] [package.dependencies] @@ -66,6 +83,7 @@ version = "2.12.1" description = "Internationalization utilities" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "Babel-2.12.1-py3-none-any.whl", hash = "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610"}, {file = "Babel-2.12.1.tar.gz", hash = "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"}, @@ -77,6 +95,7 @@ version = "4.12.2" description = "Screen-scraping library" optional = false python-versions = ">=3.6.0" +groups = ["main"] files = [ {file = "beautifulsoup4-4.12.2-py3-none-any.whl", hash = "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a"}, {file = "beautifulsoup4-4.12.2.tar.gz", hash = "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da"}, @@ -95,6 +114,7 @@ version = "2023.5.7" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "certifi-2023.5.7-py3-none-any.whl", hash = "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"}, {file = "certifi-2023.5.7.tar.gz", hash = "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7"}, @@ -106,6 +126,7 @@ version = "3.1.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" +groups = ["main"] files = [ {file = "charset-normalizer-3.1.0.tar.gz", hash = "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"}, {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b"}, @@ -186,13 +207,14 @@ files = [ [[package]] name = "click" -version = "8.1.3" +version = "8.1.8" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ - {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, - {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, + {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, + {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, ] [package.dependencies] @@ -204,6 +226,7 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main"] files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -211,13 +234,14 @@ files = [ [[package]] name = "colorlog" -version = "6.7.0" +version = "6.9.0" description = "Add colours to the output of Python's logging module." optional = false python-versions = ">=3.6" +groups = ["main"] files = [ - {file = "colorlog-6.7.0-py2.py3-none-any.whl", hash = "sha256:0d33ca236784a1ba3ff9c532d4964126d8a2c44f1f0cb1d2b0728196f512f662"}, - {file = "colorlog-6.7.0.tar.gz", hash = "sha256:bd94bd21c1e13fac7bd3153f4bc3a7dc0eb0974b8bc2fdf1a989e474f6e582e5"}, + {file = "colorlog-6.9.0-py3-none-any.whl", hash = "sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff"}, + {file = "colorlog-6.9.0.tar.gz", hash = "sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2"}, ] [package.dependencies] @@ -232,6 +256,7 @@ version = "1.0.7" description = "Python library for calculating contours of 2D quadrilateral grids" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "contourpy-1.0.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:95c3acddf921944f241b6773b767f1cbce71d03307270e2d769fd584d5d1092d"}, {file = "contourpy-1.0.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fc1464c97579da9f3ab16763c32e5c5d5bb5fa1ec7ce509a4ca6108b61b84fab"}, @@ -306,6 +331,7 @@ version = "0.11.0" description = "Composable style cycles" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"}, {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"}, @@ -317,6 +343,7 @@ version = "0.17.1" description = "Docutils -- Python Documentation Utilities" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["main"] files = [ {file = "docutils-0.17.1-py2.py3-none-any.whl", hash = "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"}, {file = "docutils-0.17.1.tar.gz", hash = "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125"}, @@ -324,13 +351,14 @@ files = [ [[package]] name = "exceptiongroup" -version = "1.1.1" +version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ - {file = "exceptiongroup-1.1.1-py3-none-any.whl", hash = "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e"}, - {file = "exceptiongroup-1.1.1.tar.gz", hash = "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785"}, + {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, + {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, ] [package.extras] @@ -338,34 +366,35 @@ test = ["pytest (>=6)"] [[package]] name = "fastapi" -version = "0.96.0" +version = "0.115.6" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "fastapi-0.96.0-py3-none-any.whl", hash = "sha256:b8e11fe81e81eab4e1504209917338e0b80f783878a42c2b99467e5e1019a1e9"}, - {file = "fastapi-0.96.0.tar.gz", hash = "sha256:71232d47c2787446991c81c41c249f8a16238d52d779c0e6b43927d3773dbe3c"}, + {file = "fastapi-0.115.6-py3-none-any.whl", hash = "sha256:e9240b29e36fa8f4bb7290316988e90c381e5092e0cbe84e7818cc3713bcf305"}, + {file = "fastapi-0.115.6.tar.gz", hash = "sha256:9ec46f7addc14ea472958a96aae5b5de65f39721a46aaf5705c480d9a8b76654"}, ] [package.dependencies] -pydantic = ">=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0" -starlette = ">=0.27.0,<0.28.0" +pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" +starlette = ">=0.40.0,<0.42.0" +typing-extensions = ">=4.8.0" [package.extras] -all = ["email-validator (>=1.1.1)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "python-multipart (>=0.0.5)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] -dev = ["pre-commit (>=2.17.0,<3.0.0)", "ruff (==0.0.138)", "uvicorn[standard] (>=0.12.0,<0.21.0)"] -doc = ["mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-markdownextradata-plugin (>=0.1.7,<0.3.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "pyyaml (>=5.3.1,<7.0.0)", "typer-cli (>=0.0.13,<0.0.14)", "typer[all] (>=0.6.1,<0.8.0)"] -test = ["anyio[trio] (>=3.2.1,<4.0.0)", "black (==23.1.0)", "coverage[toml] (>=6.5.0,<8.0)", "databases[sqlite] (>=0.3.2,<0.7.0)", "email-validator (>=1.1.1,<2.0.0)", "flask (>=1.1.2,<3.0.0)", "httpx (>=0.23.0,<0.24.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.982)", "orjson (>=3.2.1,<4.0.0)", "passlib[bcrypt] (>=1.7.2,<2.0.0)", "peewee (>=3.13.3,<4.0.0)", "pytest (>=7.1.3,<8.0.0)", "python-jose[cryptography] (>=3.3.0,<4.0.0)", "python-multipart (>=0.0.5,<0.0.7)", "pyyaml (>=5.3.1,<7.0.0)", "ruff (==0.0.138)", "sqlalchemy (>=1.3.18,<1.4.43)", "types-orjson (==3.6.2)", "types-ujson (==5.7.0.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,<6.0.0)"] +all = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] +standard = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "jinja2 (>=2.11.2)", "python-multipart (>=0.0.7)", "uvicorn[standard] (>=0.12.0)"] [[package]] name = "fastjsonschema" -version = "2.17.1" +version = "2.21.1" description = "Fastest Python implementation of JSON schema" optional = false python-versions = "*" +groups = ["main"] files = [ - {file = "fastjsonschema-2.17.1-py3-none-any.whl", hash = "sha256:4b90b252628ca695280924d863fe37234eebadc29c5360d322571233dc9746e0"}, - {file = "fastjsonschema-2.17.1.tar.gz", hash = "sha256:f4eeb8a77cef54861dbf7424ac8ce71306f12cbb086c45131bcba2c6a4f726e3"}, + {file = "fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667"}, + {file = "fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4"}, ] [package.extras] @@ -377,6 +406,7 @@ version = "2.1.3" description = "A simple framework for building complex web applications." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "Flask-2.1.3-py3-none-any.whl", hash = "sha256:9013281a7402ad527f8fd56375164f3aa021ecfaff89bfe3825346c24f87e04c"}, {file = "Flask-2.1.3.tar.gz", hash = "sha256:15972e5017df0575c3d6c090ba168b6db90259e620ac8d7ea813a396bad5b6cb"}, @@ -395,40 +425,45 @@ dotenv = ["python-dotenv"] [[package]] name = "flask-cors" -version = "3.0.10" +version = "5.0.0" description = "A Flask extension adding a decorator for CORS support" optional = false python-versions = "*" +groups = ["main"] files = [ - {file = "Flask-Cors-3.0.10.tar.gz", hash = "sha256:b60839393f3b84a0f3746f6cdca56c1ad7426aa738b70d6c61375857823181de"}, - {file = "Flask_Cors-3.0.10-py2.py3-none-any.whl", hash = "sha256:74efc975af1194fc7891ff5cd85b0f7478be4f7f59fe158102e91abb72bb4438"}, + {file = "Flask_Cors-5.0.0-py2.py3-none-any.whl", hash = "sha256:b9e307d082a9261c100d8fb0ba909eec6a228ed1b60a8315fd85f783d61910bc"}, + {file = "flask_cors-5.0.0.tar.gz", hash = "sha256:5aadb4b950c4e93745034594d9f3ea6591f734bb3662e16e255ffbf5e89c88ef"}, ] [package.dependencies] Flask = ">=0.9" -Six = "*" [[package]] name = "flask-sock" -version = "0.6.0" +version = "0.7.0" description = "WebSocket support for Flask" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ - {file = "flask-sock-0.6.0.tar.gz", hash = "sha256:435cf81bb497ac7622cd1dda554fbfa3e369e629daea0a1d21b73a24f1bd6229"}, - {file = "flask_sock-0.6.0-py3-none-any.whl", hash = "sha256:593fffb186928080a5b5b03d717efc56dac2d5ed690ce6bfff333b3597a2f518"}, + {file = "flask-sock-0.7.0.tar.gz", hash = "sha256:e023b578284195a443b8d8bdb4469e6a6acf694b89aeb51315b1a34fcf427b7d"}, + {file = "flask_sock-0.7.0-py3-none-any.whl", hash = "sha256:caac4d679392aaf010d02fabcf73d52019f5bdaf1c9c131ec5a428cb3491204a"}, ] [package.dependencies] flask = ">=2" simple-websocket = ">=0.5.1" +[package.extras] +docs = ["sphinx"] + [[package]] name = "fonttools" version = "4.39.4" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "fonttools-4.39.4-py3-none-any.whl", hash = "sha256:106caf6167c4597556b31a8d9175a3fdc0356fdcd70ab19973c3b0d4c893c461"}, {file = "fonttools-4.39.4.zip", hash = "sha256:dba8d7cdb8e2bac1b3da28c5ed5960de09e59a2fe7e63bb73f5a59e57b0430d2"}, @@ -454,6 +489,7 @@ version = "2022.4.7" description = "A clean customisable Sphinx documentation theme." optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "furo-2022.4.7-py3-none-any.whl", hash = "sha256:7f3e3d2fb977483590f8ecb2c2cd511bd82661b79c18efb24de9558bc9cdf2d7"}, {file = "furo-2022.4.7.tar.gz", hash = "sha256:96204ab7cd047e4b6c523996e0279c4c629a8fc31f4f109b2efd470c17f49c80"}, @@ -466,75 +502,89 @@ sphinx = ">=4.0,<5.0" [[package]] name = "greenlet" -version = "2.0.2" +version = "3.1.1" description = "Lightweight in-process concurrent programming" optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" -files = [ - {file = "greenlet-2.0.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:bdfea8c661e80d3c1c99ad7c3ff74e6e87184895bbaca6ee8cc61209f8b9b85d"}, - {file = "greenlet-2.0.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:9d14b83fab60d5e8abe587d51c75b252bcc21683f24699ada8fb275d7712f5a9"}, - {file = "greenlet-2.0.2-cp27-cp27m-win32.whl", hash = "sha256:6c3acb79b0bfd4fe733dff8bc62695283b57949ebcca05ae5c129eb606ff2d74"}, - {file = "greenlet-2.0.2-cp27-cp27m-win_amd64.whl", hash = "sha256:283737e0da3f08bd637b5ad058507e578dd462db259f7f6e4c5c365ba4ee9343"}, - {file = "greenlet-2.0.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:d27ec7509b9c18b6d73f2f5ede2622441de812e7b1a80bbd446cb0633bd3d5ae"}, - {file = "greenlet-2.0.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:30bcf80dda7f15ac77ba5af2b961bdd9dbc77fd4ac6105cee85b0d0a5fcf74df"}, - {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26fbfce90728d82bc9e6c38ea4d038cba20b7faf8a0ca53a9c07b67318d46088"}, - {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9190f09060ea4debddd24665d6804b995a9c122ef5917ab26e1566dcc712ceeb"}, - {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d75209eed723105f9596807495d58d10b3470fa6732dd6756595e89925ce2470"}, - {file = "greenlet-2.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3a51c9751078733d88e013587b108f1b7a1fb106d402fb390740f002b6f6551a"}, - {file = "greenlet-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:76ae285c8104046b3a7f06b42f29c7b73f77683df18c49ab5af7983994c2dd91"}, - {file = "greenlet-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:2d4686f195e32d36b4d7cf2d166857dbd0ee9f3d20ae349b6bf8afc8485b3645"}, - {file = "greenlet-2.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c4302695ad8027363e96311df24ee28978162cdcdd2006476c43970b384a244c"}, - {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c48f54ef8e05f04d6eff74b8233f6063cb1ed960243eacc474ee73a2ea8573ca"}, - {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1846f1b999e78e13837c93c778dcfc3365902cfb8d1bdb7dd73ead37059f0d0"}, - {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a06ad5312349fec0ab944664b01d26f8d1f05009566339ac6f63f56589bc1a2"}, - {file = "greenlet-2.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:eff4eb9b7eb3e4d0cae3d28c283dc16d9bed6b193c2e1ace3ed86ce48ea8df19"}, - {file = "greenlet-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5454276c07d27a740c5892f4907c86327b632127dd9abec42ee62e12427ff7e3"}, - {file = "greenlet-2.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:7cafd1208fdbe93b67c7086876f061f660cfddc44f404279c1585bbf3cdc64c5"}, - {file = "greenlet-2.0.2-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:910841381caba4f744a44bf81bfd573c94e10b3045ee00de0cbf436fe50673a6"}, - {file = "greenlet-2.0.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:18a7f18b82b52ee85322d7a7874e676f34ab319b9f8cce5de06067384aa8ff43"}, - {file = "greenlet-2.0.2-cp35-cp35m-win32.whl", hash = "sha256:03a8f4f3430c3b3ff8d10a2a86028c660355ab637cee9333d63d66b56f09d52a"}, - {file = "greenlet-2.0.2-cp35-cp35m-win_amd64.whl", hash = "sha256:4b58adb399c4d61d912c4c331984d60eb66565175cdf4a34792cd9600f21b394"}, - {file = "greenlet-2.0.2-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:703f18f3fda276b9a916f0934d2fb6d989bf0b4fb5a64825260eb9bfd52d78f0"}, - {file = "greenlet-2.0.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:32e5b64b148966d9cccc2c8d35a671409e45f195864560829f395a54226408d3"}, - {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2dd11f291565a81d71dab10b7033395b7a3a5456e637cf997a6f33ebdf06f8db"}, - {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0f72c9ddb8cd28532185f54cc1453f2c16fb417a08b53a855c4e6a418edd099"}, - {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd021c754b162c0fb55ad5d6b9d960db667faad0fa2ff25bb6e1301b0b6e6a75"}, - {file = "greenlet-2.0.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:3c9b12575734155d0c09d6c3e10dbd81665d5c18e1a7c6597df72fd05990c8cf"}, - {file = "greenlet-2.0.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b9ec052b06a0524f0e35bd8790686a1da006bd911dd1ef7d50b77bfbad74e292"}, - {file = "greenlet-2.0.2-cp36-cp36m-win32.whl", hash = "sha256:dbfcfc0218093a19c252ca8eb9aee3d29cfdcb586df21049b9d777fd32c14fd9"}, - {file = "greenlet-2.0.2-cp36-cp36m-win_amd64.whl", hash = "sha256:9f35ec95538f50292f6d8f2c9c9f8a3c6540bbfec21c9e5b4b751e0a7c20864f"}, - {file = "greenlet-2.0.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:d5508f0b173e6aa47273bdc0a0b5ba055b59662ba7c7ee5119528f466585526b"}, - {file = "greenlet-2.0.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1"}, - {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9c59a2120b55788e800d82dfa99b9e156ff8f2227f07c5e3012a45a399620b7"}, - {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2780572ec463d44c1d3ae850239508dbeb9fed38e294c68d19a24d925d9223ca"}, - {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:937e9020b514ceedb9c830c55d5c9872abc90f4b5862f89c0887033ae33c6f73"}, - {file = "greenlet-2.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:36abbf031e1c0f79dd5d596bfaf8e921c41df2bdf54ee1eed921ce1f52999a86"}, - {file = "greenlet-2.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:18e98fb3de7dba1c0a852731c3070cf022d14f0d68b4c87a19cc1016f3bb8b33"}, - {file = "greenlet-2.0.2-cp37-cp37m-win32.whl", hash = "sha256:3f6ea9bd35eb450837a3d80e77b517ea5bc56b4647f5502cd28de13675ee12f7"}, - {file = "greenlet-2.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:7492e2b7bd7c9b9916388d9df23fa49d9b88ac0640db0a5b4ecc2b653bf451e3"}, - {file = "greenlet-2.0.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:b864ba53912b6c3ab6bcb2beb19f19edd01a6bfcbdfe1f37ddd1778abfe75a30"}, - {file = "greenlet-2.0.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:ba2956617f1c42598a308a84c6cf021a90ff3862eddafd20c3333d50f0edb45b"}, - {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526"}, - {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8eab883b3b2a38cc1e050819ef06a7e6344d4a990d24d45bc6f2cf959045a45b"}, - {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acd2162a36d3de67ee896c43effcd5ee3de247eb00354db411feb025aa319857"}, - {file = "greenlet-2.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0bf60faf0bc2468089bdc5edd10555bab6e85152191df713e2ab1fcc86382b5a"}, - {file = "greenlet-2.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b0ef99cdbe2b682b9ccbb964743a6aca37905fda5e0452e5ee239b1654d37f2a"}, - {file = "greenlet-2.0.2-cp38-cp38-win32.whl", hash = "sha256:b80f600eddddce72320dbbc8e3784d16bd3fb7b517e82476d8da921f27d4b249"}, - {file = "greenlet-2.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:4d2e11331fc0c02b6e84b0d28ece3a36e0548ee1a1ce9ddde03752d9b79bba40"}, - {file = "greenlet-2.0.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:88d9ab96491d38a5ab7c56dd7a3cc37d83336ecc564e4e8816dbed12e5aaefc8"}, - {file = "greenlet-2.0.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:561091a7be172ab497a3527602d467e2b3fbe75f9e783d8b8ce403fa414f71a6"}, - {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:971ce5e14dc5e73715755d0ca2975ac88cfdaefcaab078a284fea6cfabf866df"}, - {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be4ed120b52ae4d974aa40215fcdfde9194d63541c7ded40ee12eb4dda57b76b"}, - {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94c817e84245513926588caf1152e3b559ff794d505555211ca041f032abbb6b"}, - {file = "greenlet-2.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1a819eef4b0e0b96bb0d98d797bef17dc1b4a10e8d7446be32d1da33e095dbb8"}, - {file = "greenlet-2.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7efde645ca1cc441d6dc4b48c0f7101e8d86b54c8530141b09fd31cef5149ec9"}, - {file = "greenlet-2.0.2-cp39-cp39-win32.whl", hash = "sha256:ea9872c80c132f4663822dd2a08d404073a5a9b5ba6155bea72fb2a79d1093b5"}, - {file = "greenlet-2.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:db1a39669102a1d8d12b57de2bb7e2ec9066a6f2b3da35ae511ff93b01b5d564"}, - {file = "greenlet-2.0.2.tar.gz", hash = "sha256:e7c8dc13af7db097bed64a051d2dd49e9f0af495c26995c00a9ee842690d34c0"}, +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617"}, + {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7"}, + {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6"}, + {file = "greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80"}, + {file = "greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a"}, + {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511"}, + {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395"}, + {file = "greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39"}, + {file = "greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9"}, + {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0"}, + {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942"}, + {file = "greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01"}, + {file = "greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e"}, + {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1"}, + {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c"}, + {file = "greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822"}, + {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01"}, + {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47da355d8687fd65240c364c90a31569a133b7b60de111c255ef5b606f2ae291"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98884ecf2ffb7d7fe6bd517e8eb99d31ff7855a840fa6d0d63cd07c037f6a981"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1d4aeb8891338e60d1ab6127af1fe45def5259def8094b9c7e34690c8858803"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db32b5348615a04b82240cc67983cb315309e88d444a288934ee6ceaebcad6cc"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dcc62f31eae24de7f8dce72134c8651c58000d3b1868e01392baea7c32c247de"}, + {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1d3755bcb2e02de341c55b4fca7a745a24a9e7212ac953f6b3a48d117d7257aa"}, + {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b8da394b34370874b4572676f36acabac172602abf054cbc4ac910219f3340af"}, + {file = "greenlet-3.1.1-cp37-cp37m-win32.whl", hash = "sha256:a0dfc6c143b519113354e780a50381508139b07d2177cb6ad6a08278ec655798"}, + {file = "greenlet-3.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54558ea205654b50c438029505def3834e80f0869a70fb15b871c29b4575ddef"}, + {file = "greenlet-3.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37b9de5a96111fc15418819ab4c4432e4f3c2ede61e660b1e33971eba26ef9ba"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1"}, + {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd"}, + {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7"}, + {file = "greenlet-3.1.1-cp38-cp38-win32.whl", hash = "sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef"}, + {file = "greenlet-3.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d"}, + {file = "greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c"}, + {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e"}, + {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e"}, + {file = "greenlet-3.1.1-cp39-cp39-win32.whl", hash = "sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c"}, + {file = "greenlet-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22"}, + {file = "greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467"}, ] [package.extras] -docs = ["Sphinx", "docutils (<0.18)"] +docs = ["Sphinx", "furo"] test = ["objgraph", "psutil"] [[package]] @@ -543,6 +593,7 @@ version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, @@ -554,6 +605,7 @@ version = "1.3.0" description = "Pythonic HTML generation/templating (no template files)" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "html5tagger-1.3.0-py3-none-any.whl", hash = "sha256:ce14313515edffec8ed8a36c5890d023922641171b4e6e5774ad1a74998f5351"}, {file = "html5tagger-1.3.0.tar.gz", hash = "sha256:84fa3dfb49e5c83b79bbd856ab7b1de8e2311c3bb46a8be925f119e3880a8da9"}, @@ -561,56 +613,59 @@ files = [ [[package]] name = "httptools" -version = "0.5.0" +version = "0.6.4" description = "A collection of framework independent HTTP protocol utils." optional = false -python-versions = ">=3.5.0" -files = [ - {file = "httptools-0.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8f470c79061599a126d74385623ff4744c4e0f4a0997a353a44923c0b561ee51"}, - {file = "httptools-0.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e90491a4d77d0cb82e0e7a9cb35d86284c677402e4ce7ba6b448ccc7325c5421"}, - {file = "httptools-0.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1d2357f791b12d86faced7b5736dea9ef4f5ecdc6c3f253e445ee82da579449"}, - {file = "httptools-0.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f90cd6fd97c9a1b7fe9215e60c3bd97336742a0857f00a4cb31547bc22560c2"}, - {file = "httptools-0.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5230a99e724a1bdbbf236a1b58d6e8504b912b0552721c7c6b8570925ee0ccde"}, - {file = "httptools-0.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3a47a34f6015dd52c9eb629c0f5a8a5193e47bf2a12d9a3194d231eaf1bc451a"}, - {file = "httptools-0.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:24bb4bb8ac3882f90aa95403a1cb48465de877e2d5298ad6ddcfdebec060787d"}, - {file = "httptools-0.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e67d4f8734f8054d2c4858570cc4b233bf753f56e85217de4dfb2495904cf02e"}, - {file = "httptools-0.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7e5eefc58d20e4c2da82c78d91b2906f1a947ef42bd668db05f4ab4201a99f49"}, - {file = "httptools-0.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0297822cea9f90a38df29f48e40b42ac3d48a28637368f3ec6d15eebefd182f9"}, - {file = "httptools-0.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:557be7fbf2bfa4a2ec65192c254e151684545ebab45eca5d50477d562c40f986"}, - {file = "httptools-0.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:54465401dbbec9a6a42cf737627fb0f014d50dc7365a6b6cd57753f151a86ff0"}, - {file = "httptools-0.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4d9ebac23d2de960726ce45f49d70eb5466725c0087a078866043dad115f850f"}, - {file = "httptools-0.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:e8a34e4c0ab7b1ca17b8763613783e2458e77938092c18ac919420ab8655c8c1"}, - {file = "httptools-0.5.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f659d7a48401158c59933904040085c200b4be631cb5f23a7d561fbae593ec1f"}, - {file = "httptools-0.5.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef1616b3ba965cd68e6f759eeb5d34fbf596a79e84215eeceebf34ba3f61fdc7"}, - {file = "httptools-0.5.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3625a55886257755cb15194efbf209584754e31d336e09e2ffe0685a76cb4b60"}, - {file = "httptools-0.5.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:72ad589ba5e4a87e1d404cc1cb1b5780bfcb16e2aec957b88ce15fe879cc08ca"}, - {file = "httptools-0.5.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:850fec36c48df5a790aa735417dca8ce7d4b48d59b3ebd6f83e88a8125cde324"}, - {file = "httptools-0.5.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f222e1e9d3f13b68ff8a835574eda02e67277d51631d69d7cf7f8e07df678c86"}, - {file = "httptools-0.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3cb8acf8f951363b617a8420768a9f249099b92e703c052f9a51b66342eea89b"}, - {file = "httptools-0.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:550059885dc9c19a072ca6d6735739d879be3b5959ec218ba3e013fd2255a11b"}, - {file = "httptools-0.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a04fe458a4597aa559b79c7f48fe3dceabef0f69f562daf5c5e926b153817281"}, - {file = "httptools-0.5.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d0c1044bce274ec6711f0770fd2d5544fe392591d204c68328e60a46f88843b"}, - {file = "httptools-0.5.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c6eeefd4435055a8ebb6c5cc36111b8591c192c56a95b45fe2af22d9881eee25"}, - {file = "httptools-0.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:5b65be160adcd9de7a7e6413a4966665756e263f0d5ddeffde277ffeee0576a5"}, - {file = "httptools-0.5.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fe9c766a0c35b7e3d6b6939393c8dfdd5da3ac5dec7f971ec9134f284c6c36d6"}, - {file = "httptools-0.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:85b392aba273566c3d5596a0a490978c085b79700814fb22bfd537d381dd230c"}, - {file = "httptools-0.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5e3088f4ed33947e16fd865b8200f9cfae1144f41b64a8cf19b599508e096bc"}, - {file = "httptools-0.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c2a56b6aad7cc8f5551d8e04ff5a319d203f9d870398b94702300de50190f63"}, - {file = "httptools-0.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9b571b281a19762adb3f48a7731f6842f920fa71108aff9be49888320ac3e24d"}, - {file = "httptools-0.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa47ffcf70ba6f7848349b8a6f9b481ee0f7637931d91a9860a1838bfc586901"}, - {file = "httptools-0.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:bede7ee075e54b9a5bde695b4fc8f569f30185891796b2e4e09e2226801d09bd"}, - {file = "httptools-0.5.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:64eba6f168803a7469866a9c9b5263a7463fa8b7a25b35e547492aa7322036b6"}, - {file = "httptools-0.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4b098e4bb1174096a93f48f6193e7d9aa7071506a5877da09a783509ca5fff42"}, - {file = "httptools-0.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9423a2de923820c7e82e18980b937893f4aa8251c43684fa1772e341f6e06887"}, - {file = "httptools-0.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca1b7becf7d9d3ccdbb2f038f665c0f4857e08e1d8481cbcc1a86a0afcfb62b2"}, - {file = "httptools-0.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:50d4613025f15f4b11f1c54bbed4761c0020f7f921b95143ad6d58c151198142"}, - {file = "httptools-0.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8ffce9d81c825ac1deaa13bc9694c0562e2840a48ba21cfc9f3b4c922c16f372"}, - {file = "httptools-0.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:1af91b3650ce518d226466f30bbba5b6376dbd3ddb1b2be8b0658c6799dd450b"}, - {file = "httptools-0.5.0.tar.gz", hash = "sha256:295874861c173f9101960bba332429bb77ed4dcd8cdf5cee9922eb00e4f6bc09"}, +python-versions = ">=3.8.0" +groups = ["main"] +files = [ + {file = "httptools-0.6.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3c73ce323711a6ffb0d247dcd5a550b8babf0f757e86a52558fe5b86d6fefcc0"}, + {file = "httptools-0.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:345c288418f0944a6fe67be8e6afa9262b18c7626c3ef3c28adc5eabc06a68da"}, + {file = "httptools-0.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deee0e3343f98ee8047e9f4c5bc7cedbf69f5734454a94c38ee829fb2d5fa3c1"}, + {file = "httptools-0.6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca80b7485c76f768a3bc83ea58373f8db7b015551117375e4918e2aa77ea9b50"}, + {file = "httptools-0.6.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:90d96a385fa941283ebd231464045187a31ad932ebfa541be8edf5b3c2328959"}, + {file = "httptools-0.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:59e724f8b332319e2875efd360e61ac07f33b492889284a3e05e6d13746876f4"}, + {file = "httptools-0.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:c26f313951f6e26147833fc923f78f95604bbec812a43e5ee37f26dc9e5a686c"}, + {file = "httptools-0.6.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f47f8ed67cc0ff862b84a1189831d1d33c963fb3ce1ee0c65d3b0cbe7b711069"}, + {file = "httptools-0.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0614154d5454c21b6410fdf5262b4a3ddb0f53f1e1721cfd59d55f32138c578a"}, + {file = "httptools-0.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8787367fbdfccae38e35abf7641dafc5310310a5987b689f4c32cc8cc3ee975"}, + {file = "httptools-0.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40b0f7fe4fd38e6a507bdb751db0379df1e99120c65fbdc8ee6c1d044897a636"}, + {file = "httptools-0.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40a5ec98d3f49904b9fe36827dcf1aadfef3b89e2bd05b0e35e94f97c2b14721"}, + {file = "httptools-0.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dacdd3d10ea1b4ca9df97a0a303cbacafc04b5cd375fa98732678151643d4988"}, + {file = "httptools-0.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:288cd628406cc53f9a541cfaf06041b4c71d751856bab45e3702191f931ccd17"}, + {file = "httptools-0.6.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:df017d6c780287d5c80601dafa31f17bddb170232d85c066604d8558683711a2"}, + {file = "httptools-0.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:85071a1e8c2d051b507161f6c3e26155b5c790e4e28d7f236422dbacc2a9cc44"}, + {file = "httptools-0.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69422b7f458c5af875922cdb5bd586cc1f1033295aa9ff63ee196a87519ac8e1"}, + {file = "httptools-0.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16e603a3bff50db08cd578d54f07032ca1631450ceb972c2f834c2b860c28ea2"}, + {file = "httptools-0.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec4f178901fa1834d4a060320d2f3abc5c9e39766953d038f1458cb885f47e81"}, + {file = "httptools-0.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb89ecf8b290f2e293325c646a211ff1c2493222798bb80a530c5e7502494f"}, + {file = "httptools-0.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:db78cb9ca56b59b016e64b6031eda5653be0589dba2b1b43453f6e8b405a0970"}, + {file = "httptools-0.6.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ade273d7e767d5fae13fa637f4d53b6e961fb7fd93c7797562663f0171c26660"}, + {file = "httptools-0.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:856f4bc0478ae143bad54a4242fccb1f3f86a6e1be5548fecfd4102061b3a083"}, + {file = "httptools-0.6.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:322d20ea9cdd1fa98bd6a74b77e2ec5b818abdc3d36695ab402a0de8ef2865a3"}, + {file = "httptools-0.6.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d87b29bd4486c0093fc64dea80231f7c7f7eb4dc70ae394d70a495ab8436071"}, + {file = "httptools-0.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:342dd6946aa6bda4b8f18c734576106b8a31f2fe31492881a9a160ec84ff4bd5"}, + {file = "httptools-0.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b36913ba52008249223042dca46e69967985fb4051951f94357ea681e1f5dc0"}, + {file = "httptools-0.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:28908df1b9bb8187393d5b5db91435ccc9c8e891657f9cbb42a2541b44c82fc8"}, + {file = "httptools-0.6.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d3f0d369e7ffbe59c4b6116a44d6a8eb4783aae027f2c0b366cf0aa964185dba"}, + {file = "httptools-0.6.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:94978a49b8f4569ad607cd4946b759d90b285e39c0d4640c6b36ca7a3ddf2efc"}, + {file = "httptools-0.6.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40dc6a8e399e15ea525305a2ddba998b0af5caa2566bcd79dcbe8948181eeaff"}, + {file = "httptools-0.6.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab9ba8dcf59de5181f6be44a77458e45a578fc99c31510b8c65b7d5acc3cf490"}, + {file = "httptools-0.6.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:fc411e1c0a7dcd2f902c7c48cf079947a7e65b5485dea9decb82b9105ca71a43"}, + {file = "httptools-0.6.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:d54efd20338ac52ba31e7da78e4a72570cf729fac82bc31ff9199bedf1dc7440"}, + {file = "httptools-0.6.4-cp38-cp38-win_amd64.whl", hash = "sha256:df959752a0c2748a65ab5387d08287abf6779ae9165916fe053e68ae1fbdc47f"}, + {file = "httptools-0.6.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:85797e37e8eeaa5439d33e556662cc370e474445d5fab24dcadc65a8ffb04003"}, + {file = "httptools-0.6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:db353d22843cf1028f43c3651581e4bb49374d85692a85f95f7b9a130e1b2cab"}, + {file = "httptools-0.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1ffd262a73d7c28424252381a5b854c19d9de5f56f075445d33919a637e3547"}, + {file = "httptools-0.6.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:703c346571fa50d2e9856a37d7cd9435a25e7fd15e236c397bf224afaa355fe9"}, + {file = "httptools-0.6.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:aafe0f1918ed07b67c1e838f950b1c1fabc683030477e60b335649b8020e1076"}, + {file = "httptools-0.6.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0e563e54979e97b6d13f1bbc05a96109923e76b901f786a5eae36e99c01237bd"}, + {file = "httptools-0.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:b799de31416ecc589ad79dd85a0b2657a8fe39327944998dea368c1d4c9e55e6"}, + {file = "httptools-0.6.4.tar.gz", hash = "sha256:4e93eee4add6493b59a5c514da98c939b244fce4a0d8879cd3f466562f4b7d5c"}, ] [package.extras] -test = ["Cython (>=0.29.24,<0.30.0)"] +test = ["Cython (>=0.29.24)"] [[package]] name = "idna" @@ -618,6 +673,7 @@ version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" +groups = ["main"] files = [ {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, @@ -629,6 +685,7 @@ version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["main"] files = [ {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, @@ -640,6 +697,8 @@ version = "6.6.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.7" +groups = ["main"] +markers = "python_version < \"3.10\"" files = [ {file = "importlib_metadata-6.6.0-py3-none-any.whl", hash = "sha256:43dd286a2cd8995d5eaef7fee2066340423b818ed3fd70adf0bad5f1fac53fed"}, {file = "importlib_metadata-6.6.0.tar.gz", hash = "sha256:92501cdf9cc66ebd3e612f1b4f0c0765dfa42f0fa38ffb319b6bd84dd675d705"}, @@ -659,6 +718,8 @@ version = "5.12.0" description = "Read resources from Python packages" optional = false python-versions = ">=3.7" +groups = ["main"] +markers = "python_version < \"3.10\"" files = [ {file = "importlib_resources-5.12.0-py3-none-any.whl", hash = "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a"}, {file = "importlib_resources-5.12.0.tar.gz", hash = "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6"}, @@ -673,13 +734,14 @@ testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-chec [[package]] name = "itsdangerous" -version = "2.1.2" +version = "2.2.0" description = "Safely pass data to untrusted environments and back." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "itsdangerous-2.1.2-py3-none-any.whl", hash = "sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44"}, - {file = "itsdangerous-2.1.2.tar.gz", hash = "sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a"}, + {file = "itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef"}, + {file = "itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173"}, ] [[package]] @@ -688,6 +750,7 @@ version = "3.1.2" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, @@ -701,13 +764,14 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jsonpatch" -version = "1.32" +version = "1.33" description = "Apply JSON-Patches (RFC 6902)" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" +groups = ["main"] files = [ - {file = "jsonpatch-1.32-py2.py3-none-any.whl", hash = "sha256:26ac385719ac9f54df8a2f0827bb8253aa3ea8ab7b3368457bcdb8c14595a397"}, - {file = "jsonpatch-1.32.tar.gz", hash = "sha256:b6ddfe6c3db30d81a96aaeceb6baf916094ffa23d7dd5fa2c13e13f8b6e600c2"}, + {file = "jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade"}, + {file = "jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c"}, ] [package.dependencies] @@ -715,13 +779,14 @@ jsonpointer = ">=1.9" [[package]] name = "jsonpointer" -version = "2.3" +version = "3.0.0" description = "Identify specific nodes in a JSON document (RFC 6901)" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.7" +groups = ["main"] files = [ - {file = "jsonpointer-2.3-py2.py3-none-any.whl", hash = "sha256:51801e558539b4e9cd268638c078c6c5746c9ac96bc38152d443400e4f3793e9"}, - {file = "jsonpointer-2.3.tar.gz", hash = "sha256:97cba51526c829282218feb99dab1b1e6bdf8efd1c43dc9d57be093c0d69c99a"}, + {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, + {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, ] [[package]] @@ -730,6 +795,7 @@ version = "1.4.4" description = "A fast implementation of the Cassowary constraint solver" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "kiwisolver-1.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2f5e60fabb7343a836360c4f0919b8cd0d6dbf08ad2ca6b9cf90bf0c76a3c4f6"}, {file = "kiwisolver-1.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:10ee06759482c78bdb864f4109886dff7b8a56529bc1609d4f1112b93fe6423c"}, @@ -807,6 +873,7 @@ version = "2.6.3" description = "Python LiveReload is an awesome tool for web developers" optional = false python-versions = "*" +groups = ["main"] files = [ {file = "livereload-2.6.3-py2.py3-none-any.whl", hash = "sha256:ad4ac6f53b2d62bb6ce1a5e6e96f1f00976a32348afedcb4b6d68df2a1d346e4"}, {file = "livereload-2.6.3.tar.gz", hash = "sha256:776f2f865e59fde56490a56bcc6773b6917366bce0c267c60ee8aaf1a0959869"}, @@ -818,95 +885,158 @@ tornado = {version = "*", markers = "python_version > \"2.7\""} [[package]] name = "lxml" -version = "4.9.2" +version = "5.3.0" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" -files = [ - {file = "lxml-4.9.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:76cf573e5a365e790396a5cc2b909812633409306c6531a6877c59061e42c4f2"}, - {file = "lxml-4.9.2-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b1f42b6921d0e81b1bcb5e395bc091a70f41c4d4e55ba99c6da2b31626c44892"}, - {file = "lxml-4.9.2-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:9f102706d0ca011de571de32c3247c6476b55bb6bc65a20f682f000b07a4852a"}, - {file = "lxml-4.9.2-cp27-cp27m-win32.whl", hash = "sha256:8d0b4612b66ff5d62d03bcaa043bb018f74dfea51184e53f067e6fdcba4bd8de"}, - {file = "lxml-4.9.2-cp27-cp27m-win_amd64.whl", hash = "sha256:4c8f293f14abc8fd3e8e01c5bd86e6ed0b6ef71936ded5bf10fe7a5efefbaca3"}, - {file = "lxml-4.9.2-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2899456259589aa38bfb018c364d6ae7b53c5c22d8e27d0ec7609c2a1ff78b50"}, - {file = "lxml-4.9.2-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6749649eecd6a9871cae297bffa4ee76f90b4504a2a2ab528d9ebe912b101975"}, - {file = "lxml-4.9.2-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:a08cff61517ee26cb56f1e949cca38caabe9ea9fbb4b1e10a805dc39844b7d5c"}, - {file = "lxml-4.9.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:85cabf64adec449132e55616e7ca3e1000ab449d1d0f9d7f83146ed5bdcb6d8a"}, - {file = "lxml-4.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:8340225bd5e7a701c0fa98284c849c9b9fc9238abf53a0ebd90900f25d39a4e4"}, - {file = "lxml-4.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:1ab8f1f932e8f82355e75dda5413a57612c6ea448069d4fb2e217e9a4bed13d4"}, - {file = "lxml-4.9.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:699a9af7dffaf67deeae27b2112aa06b41c370d5e7633e0ee0aea2e0b6c211f7"}, - {file = "lxml-4.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b9cc34af337a97d470040f99ba4282f6e6bac88407d021688a5d585e44a23184"}, - {file = "lxml-4.9.2-cp310-cp310-win32.whl", hash = "sha256:d02a5399126a53492415d4906ab0ad0375a5456cc05c3fc0fc4ca11771745cda"}, - {file = "lxml-4.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:a38486985ca49cfa574a507e7a2215c0c780fd1778bb6290c21193b7211702ab"}, - {file = "lxml-4.9.2-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:c83203addf554215463b59f6399835201999b5e48019dc17f182ed5ad87205c9"}, - {file = "lxml-4.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:2a87fa548561d2f4643c99cd13131acb607ddabb70682dcf1dff5f71f781a4bf"}, - {file = "lxml-4.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:d6b430a9938a5a5d85fc107d852262ddcd48602c120e3dbb02137c83d212b380"}, - {file = "lxml-4.9.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3efea981d956a6f7173b4659849f55081867cf897e719f57383698af6f618a92"}, - {file = "lxml-4.9.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:df0623dcf9668ad0445e0558a21211d4e9a149ea8f5666917c8eeec515f0a6d1"}, - {file = "lxml-4.9.2-cp311-cp311-win32.whl", hash = "sha256:da248f93f0418a9e9d94b0080d7ebc407a9a5e6d0b57bb30db9b5cc28de1ad33"}, - {file = "lxml-4.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:3818b8e2c4b5148567e1b09ce739006acfaa44ce3156f8cbbc11062994b8e8dd"}, - {file = "lxml-4.9.2-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ca989b91cf3a3ba28930a9fc1e9aeafc2a395448641df1f387a2d394638943b0"}, - {file = "lxml-4.9.2-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:822068f85e12a6e292803e112ab876bc03ed1f03dddb80154c395f891ca6b31e"}, - {file = "lxml-4.9.2-cp35-cp35m-win32.whl", hash = "sha256:be7292c55101e22f2a3d4d8913944cbea71eea90792bf914add27454a13905df"}, - {file = "lxml-4.9.2-cp35-cp35m-win_amd64.whl", hash = "sha256:998c7c41910666d2976928c38ea96a70d1aa43be6fe502f21a651e17483a43c5"}, - {file = "lxml-4.9.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:b26a29f0b7fc6f0897f043ca366142d2b609dc60756ee6e4e90b5f762c6adc53"}, - {file = "lxml-4.9.2-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:ab323679b8b3030000f2be63e22cdeea5b47ee0abd2d6a1dc0c8103ddaa56cd7"}, - {file = "lxml-4.9.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:689bb688a1db722485e4610a503e3e9210dcc20c520b45ac8f7533c837be76fe"}, - {file = "lxml-4.9.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:f49e52d174375a7def9915c9f06ec4e569d235ad428f70751765f48d5926678c"}, - {file = "lxml-4.9.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:36c3c175d34652a35475a73762b545f4527aec044910a651d2bf50de9c3352b1"}, - {file = "lxml-4.9.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a35f8b7fa99f90dd2f5dc5a9fa12332642f087a7641289ca6c40d6e1a2637d8e"}, - {file = "lxml-4.9.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:58bfa3aa19ca4c0f28c5dde0ff56c520fbac6f0daf4fac66ed4c8d2fb7f22e74"}, - {file = "lxml-4.9.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc718cd47b765e790eecb74d044cc8d37d58562f6c314ee9484df26276d36a38"}, - {file = "lxml-4.9.2-cp36-cp36m-win32.whl", hash = "sha256:d5bf6545cd27aaa8a13033ce56354ed9e25ab0e4ac3b5392b763d8d04b08e0c5"}, - {file = "lxml-4.9.2-cp36-cp36m-win_amd64.whl", hash = "sha256:3ab9fa9d6dc2a7f29d7affdf3edebf6ece6fb28a6d80b14c3b2fb9d39b9322c3"}, - {file = "lxml-4.9.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:05ca3f6abf5cf78fe053da9b1166e062ade3fa5d4f92b4ed688127ea7d7b1d03"}, - {file = "lxml-4.9.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:a5da296eb617d18e497bcf0a5c528f5d3b18dadb3619fbdadf4ed2356ef8d941"}, - {file = "lxml-4.9.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:04876580c050a8c5341d706dd464ff04fd597095cc8c023252566a8826505726"}, - {file = "lxml-4.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:c9ec3eaf616d67db0764b3bb983962b4f385a1f08304fd30c7283954e6a7869b"}, - {file = "lxml-4.9.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2a29ba94d065945944016b6b74e538bdb1751a1db6ffb80c9d3c2e40d6fa9894"}, - {file = "lxml-4.9.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a82d05da00a58b8e4c0008edbc8a4b6ec5a4bc1e2ee0fb6ed157cf634ed7fa45"}, - {file = "lxml-4.9.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:223f4232855ade399bd409331e6ca70fb5578efef22cf4069a6090acc0f53c0e"}, - {file = "lxml-4.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d17bc7c2ccf49c478c5bdd447594e82692c74222698cfc9b5daae7ae7e90743b"}, - {file = "lxml-4.9.2-cp37-cp37m-win32.whl", hash = "sha256:b64d891da92e232c36976c80ed7ebb383e3f148489796d8d31a5b6a677825efe"}, - {file = "lxml-4.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:a0a336d6d3e8b234a3aae3c674873d8f0e720b76bc1d9416866c41cd9500ffb9"}, - {file = "lxml-4.9.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:da4dd7c9c50c059aba52b3524f84d7de956f7fef88f0bafcf4ad7dde94a064e8"}, - {file = "lxml-4.9.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:821b7f59b99551c69c85a6039c65b75f5683bdc63270fec660f75da67469ca24"}, - {file = "lxml-4.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:e5168986b90a8d1f2f9dc1b841467c74221bd752537b99761a93d2d981e04889"}, - {file = "lxml-4.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:8e20cb5a47247e383cf4ff523205060991021233ebd6f924bca927fcf25cf86f"}, - {file = "lxml-4.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:13598ecfbd2e86ea7ae45ec28a2a54fb87ee9b9fdb0f6d343297d8e548392c03"}, - {file = "lxml-4.9.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:880bbbcbe2fca64e2f4d8e04db47bcdf504936fa2b33933efd945e1b429bea8c"}, - {file = "lxml-4.9.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7d2278d59425777cfcb19735018d897ca8303abe67cc735f9f97177ceff8027f"}, - {file = "lxml-4.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5344a43228767f53a9df6e5b253f8cdca7dfc7b7aeae52551958192f56d98457"}, - {file = "lxml-4.9.2-cp38-cp38-win32.whl", hash = "sha256:925073b2fe14ab9b87e73f9a5fde6ce6392da430f3004d8b72cc86f746f5163b"}, - {file = "lxml-4.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:9b22c5c66f67ae00c0199f6055705bc3eb3fcb08d03d2ec4059a2b1b25ed48d7"}, - {file = "lxml-4.9.2-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:5f50a1c177e2fa3ee0667a5ab79fdc6b23086bc8b589d90b93b4bd17eb0e64d1"}, - {file = "lxml-4.9.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:090c6543d3696cbe15b4ac6e175e576bcc3f1ccfbba970061b7300b0c15a2140"}, - {file = "lxml-4.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:63da2ccc0857c311d764e7d3d90f429c252e83b52d1f8f1d1fe55be26827d1f4"}, - {file = "lxml-4.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:5b4545b8a40478183ac06c073e81a5ce4cf01bf1734962577cf2bb569a5b3bbf"}, - {file = "lxml-4.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2e430cd2824f05f2d4f687701144556646bae8f249fd60aa1e4c768ba7018947"}, - {file = "lxml-4.9.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6804daeb7ef69e7b36f76caddb85cccd63d0c56dedb47555d2fc969e2af6a1a5"}, - {file = "lxml-4.9.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a6e441a86553c310258aca15d1c05903aaf4965b23f3bc2d55f200804e005ee5"}, - {file = "lxml-4.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ca34efc80a29351897e18888c71c6aca4a359247c87e0b1c7ada14f0ab0c0fb2"}, - {file = "lxml-4.9.2-cp39-cp39-win32.whl", hash = "sha256:6b418afe5df18233fc6b6093deb82a32895b6bb0b1155c2cdb05203f583053f1"}, - {file = "lxml-4.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:f1496ea22ca2c830cbcbd473de8f114a320da308438ae65abad6bab7867fe38f"}, - {file = "lxml-4.9.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:b264171e3143d842ded311b7dccd46ff9ef34247129ff5bf5066123c55c2431c"}, - {file = "lxml-4.9.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0dc313ef231edf866912e9d8f5a042ddab56c752619e92dfd3a2c277e6a7299a"}, - {file = "lxml-4.9.2-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:16efd54337136e8cd72fb9485c368d91d77a47ee2d42b057564aae201257d419"}, - {file = "lxml-4.9.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:0f2b1e0d79180f344ff9f321327b005ca043a50ece8713de61d1cb383fb8ac05"}, - {file = "lxml-4.9.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:7b770ed79542ed52c519119473898198761d78beb24b107acf3ad65deae61f1f"}, - {file = "lxml-4.9.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:efa29c2fe6b4fdd32e8ef81c1528506895eca86e1d8c4657fda04c9b3786ddf9"}, - {file = "lxml-4.9.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7e91ee82f4199af8c43d8158024cbdff3d931df350252288f0d4ce656df7f3b5"}, - {file = "lxml-4.9.2-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:b23e19989c355ca854276178a0463951a653309fb8e57ce674497f2d9f208746"}, - {file = "lxml-4.9.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:01d36c05f4afb8f7c20fd9ed5badca32a2029b93b1750f571ccc0b142531caf7"}, - {file = "lxml-4.9.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7b515674acfdcadb0eb5d00d8a709868173acece5cb0be3dd165950cbfdf5409"}, - {file = "lxml-4.9.2.tar.gz", hash = "sha256:2455cfaeb7ac70338b3257f41e21f0724f4b5b0c0e7702da67ee6c3640835b67"}, +python-versions = ">=3.6" +groups = ["main"] +files = [ + {file = "lxml-5.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:dd36439be765e2dde7660212b5275641edbc813e7b24668831a5c8ac91180656"}, + {file = "lxml-5.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ae5fe5c4b525aa82b8076c1a59d642c17b6e8739ecf852522c6321852178119d"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:501d0d7e26b4d261fca8132854d845e4988097611ba2531408ec91cf3fd9d20a"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb66442c2546446944437df74379e9cf9e9db353e61301d1a0e26482f43f0dd8"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e41506fec7a7f9405b14aa2d5c8abbb4dbbd09d88f9496958b6d00cb4d45330"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f7d4a670107d75dfe5ad080bed6c341d18c4442f9378c9f58e5851e86eb79965"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41ce1f1e2c7755abfc7e759dc34d7d05fd221723ff822947132dc934d122fe22"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:44264ecae91b30e5633013fb66f6ddd05c006d3e0e884f75ce0b4755b3e3847b"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_28_ppc64le.whl", hash = "sha256:3c174dc350d3ec52deb77f2faf05c439331d6ed5e702fc247ccb4e6b62d884b7"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_28_s390x.whl", hash = "sha256:2dfab5fa6a28a0b60a20638dc48e6343c02ea9933e3279ccb132f555a62323d8"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b1c8c20847b9f34e98080da785bb2336ea982e7f913eed5809e5a3c872900f32"}, + {file = "lxml-5.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2c86bf781b12ba417f64f3422cfc302523ac9cd1d8ae8c0f92a1c66e56ef2e86"}, + {file = "lxml-5.3.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c162b216070f280fa7da844531169be0baf9ccb17263cf5a8bf876fcd3117fa5"}, + {file = "lxml-5.3.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:36aef61a1678cb778097b4a6eeae96a69875d51d1e8f4d4b491ab3cfb54b5a03"}, + {file = "lxml-5.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f65e5120863c2b266dbcc927b306c5b78e502c71edf3295dfcb9501ec96e5fc7"}, + {file = "lxml-5.3.0-cp310-cp310-win32.whl", hash = "sha256:ef0c1fe22171dd7c7c27147f2e9c3e86f8bdf473fed75f16b0c2e84a5030ce80"}, + {file = "lxml-5.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:052d99051e77a4f3e8482c65014cf6372e61b0a6f4fe9edb98503bb5364cfee3"}, + {file = "lxml-5.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:74bcb423462233bc5d6066e4e98b0264e7c1bed7541fff2f4e34fe6b21563c8b"}, + {file = "lxml-5.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a3d819eb6f9b8677f57f9664265d0a10dd6551d227afb4af2b9cd7bdc2ccbf18"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b8f5db71b28b8c404956ddf79575ea77aa8b1538e8b2ef9ec877945b3f46442"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3406b63232fc7e9b8783ab0b765d7c59e7c59ff96759d8ef9632fca27c7ee4"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ecdd78ab768f844c7a1d4a03595038c166b609f6395e25af9b0f3f26ae1230f"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:168f2dfcfdedf611eb285efac1516c8454c8c99caf271dccda8943576b67552e"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa617107a410245b8660028a7483b68e7914304a6d4882b5ff3d2d3eb5948d8c"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:69959bd3167b993e6e710b99051265654133a98f20cec1d9b493b931942e9c16"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_28_ppc64le.whl", hash = "sha256:bd96517ef76c8654446fc3db9242d019a1bb5fe8b751ba414765d59f99210b79"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_28_s390x.whl", hash = "sha256:ab6dd83b970dc97c2d10bc71aa925b84788c7c05de30241b9e96f9b6d9ea3080"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:eec1bb8cdbba2925bedc887bc0609a80e599c75b12d87ae42ac23fd199445654"}, + {file = "lxml-5.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6a7095eeec6f89111d03dabfe5883a1fd54da319c94e0fb104ee8f23616b572d"}, + {file = "lxml-5.3.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:6f651ebd0b21ec65dfca93aa629610a0dbc13dbc13554f19b0113da2e61a4763"}, + {file = "lxml-5.3.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:f422a209d2455c56849442ae42f25dbaaba1c6c3f501d58761c619c7836642ec"}, + {file = "lxml-5.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:62f7fdb0d1ed2065451f086519865b4c90aa19aed51081979ecd05a21eb4d1be"}, + {file = "lxml-5.3.0-cp311-cp311-win32.whl", hash = "sha256:c6379f35350b655fd817cd0d6cbeef7f265f3ae5fedb1caae2eb442bbeae9ab9"}, + {file = "lxml-5.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:9c52100e2c2dbb0649b90467935c4b0de5528833c76a35ea1a2691ec9f1ee7a1"}, + {file = "lxml-5.3.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e99f5507401436fdcc85036a2e7dc2e28d962550afe1cbfc07c40e454256a859"}, + {file = "lxml-5.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:384aacddf2e5813a36495233b64cb96b1949da72bef933918ba5c84e06af8f0e"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:874a216bf6afaf97c263b56371434e47e2c652d215788396f60477540298218f"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65ab5685d56914b9a2a34d67dd5488b83213d680b0c5d10b47f81da5a16b0b0e"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aac0bbd3e8dd2d9c45ceb82249e8bdd3ac99131a32b4d35c8af3cc9db1657179"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b369d3db3c22ed14c75ccd5af429086f166a19627e84a8fdade3f8f31426e52a"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c24037349665434f375645fa9d1f5304800cec574d0310f618490c871fd902b3"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:62d172f358f33a26d6b41b28c170c63886742f5b6772a42b59b4f0fa10526cb1"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:c1f794c02903c2824fccce5b20c339a1a14b114e83b306ff11b597c5f71a1c8d"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:5d6a6972b93c426ace71e0be9a6f4b2cfae9b1baed2eed2006076a746692288c"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:3879cc6ce938ff4eb4900d901ed63555c778731a96365e53fadb36437a131a99"}, + {file = "lxml-5.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:74068c601baff6ff021c70f0935b0c7bc528baa8ea210c202e03757c68c5a4ff"}, + {file = "lxml-5.3.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ecd4ad8453ac17bc7ba3868371bffb46f628161ad0eefbd0a855d2c8c32dd81a"}, + {file = "lxml-5.3.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:7e2f58095acc211eb9d8b5771bf04df9ff37d6b87618d1cbf85f92399c98dae8"}, + {file = "lxml-5.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e63601ad5cd8f860aa99d109889b5ac34de571c7ee902d6812d5d9ddcc77fa7d"}, + {file = "lxml-5.3.0-cp312-cp312-win32.whl", hash = "sha256:17e8d968d04a37c50ad9c456a286b525d78c4a1c15dd53aa46c1d8e06bf6fa30"}, + {file = "lxml-5.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:c1a69e58a6bb2de65902051d57fde951febad631a20a64572677a1052690482f"}, + {file = "lxml-5.3.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8c72e9563347c7395910de6a3100a4840a75a6f60e05af5e58566868d5eb2d6a"}, + {file = "lxml-5.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e92ce66cd919d18d14b3856906a61d3f6b6a8500e0794142338da644260595cd"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d04f064bebdfef9240478f7a779e8c5dc32b8b7b0b2fc6a62e39b928d428e51"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c2fb570d7823c2bbaf8b419ba6e5662137f8166e364a8b2b91051a1fb40ab8b"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c120f43553ec759f8de1fee2f4794452b0946773299d44c36bfe18e83caf002"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:562e7494778a69086f0312ec9689f6b6ac1c6b65670ed7d0267e49f57ffa08c4"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:423b121f7e6fa514ba0c7918e56955a1d4470ed35faa03e3d9f0e3baa4c7e492"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:c00f323cc00576df6165cc9d21a4c21285fa6b9989c5c39830c3903dc4303ef3"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_28_ppc64le.whl", hash = "sha256:1fdc9fae8dd4c763e8a31e7630afef517eab9f5d5d31a278df087f307bf601f4"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_28_s390x.whl", hash = "sha256:658f2aa69d31e09699705949b5fc4719cbecbd4a97f9656a232e7d6c7be1a367"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:1473427aff3d66a3fa2199004c3e601e6c4500ab86696edffdbc84954c72d832"}, + {file = "lxml-5.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a87de7dd873bf9a792bf1e58b1c3887b9264036629a5bf2d2e6579fe8e73edff"}, + {file = "lxml-5.3.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:0d7b36afa46c97875303a94e8f3ad932bf78bace9e18e603f2085b652422edcd"}, + {file = "lxml-5.3.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:cf120cce539453ae086eacc0130a324e7026113510efa83ab42ef3fcfccac7fb"}, + {file = "lxml-5.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:df5c7333167b9674aa8ae1d4008fa4bc17a313cc490b2cca27838bbdcc6bb15b"}, + {file = "lxml-5.3.0-cp313-cp313-win32.whl", hash = "sha256:c802e1c2ed9f0c06a65bc4ed0189d000ada8049312cfeab6ca635e39c9608957"}, + {file = "lxml-5.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:406246b96d552e0503e17a1006fd27edac678b3fcc9f1be71a2f94b4ff61528d"}, + {file = "lxml-5.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:8f0de2d390af441fe8b2c12626d103540b5d850d585b18fcada58d972b74a74e"}, + {file = "lxml-5.3.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1afe0a8c353746e610bd9031a630a95bcfb1a720684c3f2b36c4710a0a96528f"}, + {file = "lxml-5.3.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56b9861a71575f5795bde89256e7467ece3d339c9b43141dbdd54544566b3b94"}, + {file = "lxml-5.3.0-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:9fb81d2824dff4f2e297a276297e9031f46d2682cafc484f49de182aa5e5df99"}, + {file = "lxml-5.3.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:2c226a06ecb8cdef28845ae976da407917542c5e6e75dcac7cc33eb04aaeb237"}, + {file = "lxml-5.3.0-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:7d3d1ca42870cdb6d0d29939630dbe48fa511c203724820fc0fd507b2fb46577"}, + {file = "lxml-5.3.0-cp36-cp36m-win32.whl", hash = "sha256:094cb601ba9f55296774c2d57ad68730daa0b13dc260e1f941b4d13678239e70"}, + {file = "lxml-5.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:eafa2c8658f4e560b098fe9fc54539f86528651f61849b22111a9b107d18910c"}, + {file = "lxml-5.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cb83f8a875b3d9b458cada4f880fa498646874ba4011dc974e071a0a84a1b033"}, + {file = "lxml-5.3.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25f1b69d41656b05885aa185f5fdf822cb01a586d1b32739633679699f220391"}, + {file = "lxml-5.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23e0553b8055600b3bf4a00b255ec5c92e1e4aebf8c2c09334f8368e8bd174d6"}, + {file = "lxml-5.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ada35dd21dc6c039259596b358caab6b13f4db4d4a7f8665764d616daf9cc1d"}, + {file = "lxml-5.3.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:81b4e48da4c69313192d8c8d4311e5d818b8be1afe68ee20f6385d0e96fc9512"}, + {file = "lxml-5.3.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:2bc9fd5ca4729af796f9f59cd8ff160fe06a474da40aca03fcc79655ddee1a8b"}, + {file = "lxml-5.3.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:07da23d7ee08577760f0a71d67a861019103e4812c87e2fab26b039054594cc5"}, + {file = "lxml-5.3.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:ea2e2f6f801696ad7de8aec061044d6c8c0dd4037608c7cab38a9a4d316bfb11"}, + {file = "lxml-5.3.0-cp37-cp37m-win32.whl", hash = "sha256:5c54afdcbb0182d06836cc3d1be921e540be3ebdf8b8a51ee3ef987537455f84"}, + {file = "lxml-5.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:f2901429da1e645ce548bf9171784c0f74f0718c3f6150ce166be39e4dd66c3e"}, + {file = "lxml-5.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c56a1d43b2f9ee4786e4658c7903f05da35b923fb53c11025712562d5cc02753"}, + {file = "lxml-5.3.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ee8c39582d2652dcd516d1b879451500f8db3fe3607ce45d7c5957ab2596040"}, + {file = "lxml-5.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fdf3a3059611f7585a78ee10399a15566356116a4288380921a4b598d807a22"}, + {file = "lxml-5.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:146173654d79eb1fc97498b4280c1d3e1e5d58c398fa530905c9ea50ea849b22"}, + {file = "lxml-5.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:0a7056921edbdd7560746f4221dca89bb7a3fe457d3d74267995253f46343f15"}, + {file = "lxml-5.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:9e4b47ac0f5e749cfc618efdf4726269441014ae1d5583e047b452a32e221920"}, + {file = "lxml-5.3.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f914c03e6a31deb632e2daa881fe198461f4d06e57ac3d0e05bbcab8eae01945"}, + {file = "lxml-5.3.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:213261f168c5e1d9b7535a67e68b1f59f92398dd17a56d934550837143f79c42"}, + {file = "lxml-5.3.0-cp38-cp38-win32.whl", hash = "sha256:218c1b2e17a710e363855594230f44060e2025b05c80d1f0661258142b2add2e"}, + {file = "lxml-5.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:315f9542011b2c4e1d280e4a20ddcca1761993dda3afc7a73b01235f8641e903"}, + {file = "lxml-5.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1ffc23010330c2ab67fac02781df60998ca8fe759e8efde6f8b756a20599c5de"}, + {file = "lxml-5.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2b3778cb38212f52fac9fe913017deea2fdf4eb1a4f8e4cfc6b009a13a6d3fcc"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b0c7a688944891086ba192e21c5229dea54382f4836a209ff8d0a660fac06be"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:747a3d3e98e24597981ca0be0fd922aebd471fa99d0043a3842d00cdcad7ad6a"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86a6b24b19eaebc448dc56b87c4865527855145d851f9fc3891673ff97950540"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b11a5d918a6216e521c715b02749240fb07ae5a1fefd4b7bf12f833bc8b4fe70"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68b87753c784d6acb8a25b05cb526c3406913c9d988d51f80adecc2b0775d6aa"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:109fa6fede314cc50eed29e6e56c540075e63d922455346f11e4d7a036d2b8cf"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_28_ppc64le.whl", hash = "sha256:02ced472497b8362c8e902ade23e3300479f4f43e45f4105c85ef43b8db85229"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_28_s390x.whl", hash = "sha256:6b038cc86b285e4f9fea2ba5ee76e89f21ed1ea898e287dc277a25884f3a7dfe"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:7437237c6a66b7ca341e868cda48be24b8701862757426852c9b3186de1da8a2"}, + {file = "lxml-5.3.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7f41026c1d64043a36fda21d64c5026762d53a77043e73e94b71f0521939cc71"}, + {file = "lxml-5.3.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:482c2f67761868f0108b1743098640fbb2a28a8e15bf3f47ada9fa59d9fe08c3"}, + {file = "lxml-5.3.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:1483fd3358963cc5c1c9b122c80606a3a79ee0875bcac0204149fa09d6ff2727"}, + {file = "lxml-5.3.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2dec2d1130a9cda5b904696cec33b2cfb451304ba9081eeda7f90f724097300a"}, + {file = "lxml-5.3.0-cp39-cp39-win32.whl", hash = "sha256:a0eabd0a81625049c5df745209dc7fcef6e2aea7793e5f003ba363610aa0a3ff"}, + {file = "lxml-5.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:89e043f1d9d341c52bf2af6d02e6adde62e0a46e6755d5eb60dc6e4f0b8aeca2"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7b1cd427cb0d5f7393c31b7496419da594fe600e6fdc4b105a54f82405e6626c"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51806cfe0279e06ed8500ce19479d757db42a30fd509940b1701be9c86a5ff9a"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee70d08fd60c9565ba8190f41a46a54096afa0eeb8f76bd66f2c25d3b1b83005"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8dc2c0395bea8254d8daebc76dcf8eb3a95ec2a46fa6fae5eaccee366bfe02ce"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6ba0d3dcac281aad8a0e5b14c7ed6f9fa89c8612b47939fc94f80b16e2e9bc83"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:6e91cf736959057f7aac7adfc83481e03615a8e8dd5758aa1d95ea69e8931dba"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:94d6c3782907b5e40e21cadf94b13b0842ac421192f26b84c45f13f3c9d5dc27"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c300306673aa0f3ed5ed9372b21867690a17dba38c68c44b287437c362ce486b"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78d9b952e07aed35fe2e1a7ad26e929595412db48535921c5013edc8aa4a35ce"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:01220dca0d066d1349bd6a1726856a78f7929f3878f7e2ee83c296c69495309e"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:2d9b8d9177afaef80c53c0a9e30fa252ff3036fb1c6494d427c066a4ce6a282f"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:20094fc3f21ea0a8669dc4c61ed7fa8263bd37d97d93b90f28fc613371e7a875"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ace2c2326a319a0bb8a8b0e5b570c764962e95818de9f259ce814ee666603f19"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92e67a0be1639c251d21e35fe74df6bcc40cba445c2cda7c4a967656733249e2"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd5350b55f9fecddc51385463a4f67a5da829bc741e38cf689f38ec9023f54ab"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c1fefd7e3d00921c44dc9ca80a775af49698bbfd92ea84498e56acffd4c5469"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:71a8dd38fbd2f2319136d4ae855a7078c69c9a38ae06e0c17c73fd70fc6caad8"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:97acf1e1fd66ab53dacd2c35b319d7e548380c2e9e8c54525c6e76d21b1ae3b1"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:68934b242c51eb02907c5b81d138cb977b2129a0a75a8f8b60b01cb8586c7b21"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b710bc2b8292966b23a6a0121f7a6c51d45d2347edcc75f016ac123b8054d3f2"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18feb4b93302091b1541221196a2155aa296c363fd233814fa11e181adebc52f"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:3eb44520c4724c2e1a57c0af33a379eee41792595023f367ba3952a2d96c2aab"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:609251a0ca4770e5a8768ff902aa02bf636339c5a93f9349b48eb1f606f7f3e9"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:516f491c834eb320d6c843156440fe7fc0d50b33e44387fcec5b02f0bc118a4c"}, + {file = "lxml-5.3.0.tar.gz", hash = "sha256:4e109ca30d1edec1ac60cdbe341905dc3b8f55b16855e03a54aaf59e51ec8c6f"}, ] [package.extras] cssselect = ["cssselect (>=0.7)"] +html-clean = ["lxml-html-clean"] html5 = ["html5lib"] htmlsoup = ["BeautifulSoup4"] -source = ["Cython (>=0.29.7)"] +source = ["Cython (>=3.0.11)"] [[package]] name = "markupsafe" @@ -914,6 +1044,7 @@ version = "2.0.1" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"}, {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38"}, @@ -992,6 +1123,7 @@ version = "3.7.1" description = "Python plotting package" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "matplotlib-3.7.1-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:95cbc13c1fc6844ab8812a525bbc237fa1470863ff3dace7352e910519e194b1"}, {file = "matplotlib-3.7.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:08308bae9e91aca1ec6fd6dda66237eef9f6294ddb17f0d0b3c863169bf82353"}, @@ -1050,93 +1182,116 @@ python-dateutil = ">=2.7" [[package]] name = "multidict" -version = "6.0.4" +version = "6.1.0" description = "multidict implementation" optional = false -python-versions = ">=3.7" -files = [ - {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8"}, - {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171"}, - {file = "multidict-6.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5"}, - {file = "multidict-6.0.4-cp310-cp310-win32.whl", hash = "sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8"}, - {file = "multidict-6.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461"}, - {file = "multidict-6.0.4-cp311-cp311-win32.whl", hash = "sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636"}, - {file = "multidict-6.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0"}, - {file = "multidict-6.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d"}, - {file = "multidict-6.0.4-cp37-cp37m-win32.whl", hash = "sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775"}, - {file = "multidict-6.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1"}, - {file = "multidict-6.0.4-cp38-cp38-win32.whl", hash = "sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779"}, - {file = "multidict-6.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95"}, - {file = "multidict-6.0.4-cp39-cp39-win32.whl", hash = "sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313"}, - {file = "multidict-6.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2"}, - {file = "multidict-6.0.4.tar.gz", hash = "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"}, +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7"}, + {file = "multidict-6.1.0-cp310-cp310-win32.whl", hash = "sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0"}, + {file = "multidict-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753"}, + {file = "multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80"}, + {file = "multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3"}, + {file = "multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133"}, + {file = "multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6"}, + {file = "multidict-6.1.0-cp313-cp313-win32.whl", hash = "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81"}, + {file = "multidict-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:db7457bac39421addd0c8449933ac32d8042aae84a14911a757ae6ca3eef1392"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d094ddec350a2fb899fec68d8353c78233debde9b7d8b4beeafa70825f1c281a"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5845c1fd4866bb5dd3125d89b90e57ed3138241540897de748cdf19de8a2fca2"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9079dfc6a70abe341f521f78405b8949f96db48da98aeb43f9907f342f627cdc"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3914f5aaa0f36d5d60e8ece6a308ee1c9784cd75ec8151062614657a114c4478"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c08be4f460903e5a9d0f76818db3250f12e9c344e79314d1d570fc69d7f4eae4"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d093be959277cb7dee84b801eb1af388b6ad3ca6a6b6bf1ed7585895789d027d"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3702ea6872c5a2a4eeefa6ffd36b042e9773f05b1f37ae3ef7264b1163c2dcf6"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2090f6a85cafc5b2db085124d752757c9d251548cedabe9bd31afe6363e0aff2"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:f67f217af4b1ff66c68a87318012de788dd95fcfeb24cc889011f4e1c7454dfd"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:189f652a87e876098bbc67b4da1049afb5f5dfbaa310dd67c594b01c10388db6"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:6bb5992037f7a9eff7991ebe4273ea7f51f1c1c511e6a2ce511d0e7bdb754492"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f4c2b9e770c4e393876e35a7046879d195cd123b4f116d299d442b335bcd"}, + {file = "multidict-6.1.0-cp38-cp38-win32.whl", hash = "sha256:e27bbb6d14416713a8bd7aaa1313c0fc8d44ee48d74497a0ff4c3a1b6ccb5167"}, + {file = "multidict-6.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:22f3105d4fb15c8f57ff3959a58fcab6ce36814486500cd7485651230ad4d4ef"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4e18b656c5e844539d506a0a06432274d7bd52a7487e6828c63a63d69185626c"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a185f876e69897a6f3325c3f19f26a297fa058c5e456bfcff8015e9a27e83ae1"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab7c4ceb38d91570a650dba194e1ca87c2b543488fe9309b4212694174fd539c"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e617fb6b0b6953fffd762669610c1c4ffd05632c138d61ac7e14ad187870669c"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16e5f4bf4e603eb1fdd5d8180f1a25f30056f22e55ce51fb3d6ad4ab29f7d96f"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c035da3f544b1882bac24115f3e2e8760f10a0107614fc9839fd232200b875"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:957cf8e4b6e123a9eea554fa7ebc85674674b713551de587eb318a2df3e00255"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:483a6aea59cb89904e1ceabd2b47368b5600fb7de78a6e4a2c2987b2d256cf30"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:87701f25a2352e5bf7454caa64757642734da9f6b11384c1f9d1a8e699758057"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:682b987361e5fd7a139ed565e30d81fd81e9629acc7d925a205366877d8c8657"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce2186a7df133a9c895dea3331ddc5ddad42cdd0d1ea2f0a51e5d161e4762f28"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9f636b730f7e8cb19feb87094949ba54ee5357440b9658b2a32a5ce4bce53972"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:73eae06aa53af2ea5270cc066dcaf02cc60d2994bbb2c4ef5764949257d10f43"}, + {file = "multidict-6.1.0-cp39-cp39-win32.whl", hash = "sha256:1ca0083e80e791cffc6efce7660ad24af66c8d4079d2a750b29001b53ff59ada"}, + {file = "multidict-6.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:aa466da5b15ccea564bdab9c89175c762bc12825f4659c11227f515cee76fa4a"}, + {file = "multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506"}, + {file = "multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a"}, ] +[package.dependencies] +typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} + [[package]] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." optional = false python-versions = ">=3.5" +groups = ["main"] files = [ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, @@ -1148,6 +1303,7 @@ version = "1.24.3" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "numpy-1.24.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3c1104d3c036fb81ab923f507536daedc718d0ad5a8707c6061cdfd6d184e570"}, {file = "numpy-1.24.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:202de8f38fc4a45a3eea4b63e2f376e5f2dc64ef0fa692838e31a808520efaf7"}, @@ -1185,6 +1341,7 @@ version = "23.1" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, @@ -1196,6 +1353,7 @@ version = "9.5.0" description = "Python Imaging Library (Fork)" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "Pillow-9.5.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:ace6ca218308447b9077c14ea4ef381ba0b67ee78d64046b3f19cf4e1139ad16"}, {file = "Pillow-9.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d3d403753c9d5adc04d4694d35cf0391f0f3d57c8e0030aac09d7678fa8030aa"}, @@ -1271,96 +1429,184 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa [[package]] name = "playwright" -version = "1.34.0" +version = "1.49.1" description = "A high-level API to automate web browsers" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "playwright-1.34.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:69bb9b3296e366a23a99277b4c7673cb54ce71a3f5d630f114f7701b61f98f25"}, - {file = "playwright-1.34.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:402d946631c8458436e099d7731bbf54cf79c9e62e3acae0ea8421e72616926b"}, - {file = "playwright-1.34.0-py3-none-macosx_11_0_universal2.whl", hash = "sha256:462251cda0fcbb273497d357dbe14b11e43ebceb0bac9b892beda041ff209aa9"}, - {file = "playwright-1.34.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:a8ba124ea302596a03a66993cd500484fb255cbc10fe0757fa4d49f974267a80"}, - {file = "playwright-1.34.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf0cb6aac49d24335fe361868aea72b11f276a95e7809f1a5d1c69b4120c46ac"}, - {file = "playwright-1.34.0-py3-none-win32.whl", hash = "sha256:c50fef189d87243cc09ae0feb8e417fbe434359ccbcc863fb19ba06d46d31c33"}, - {file = "playwright-1.34.0-py3-none-win_amd64.whl", hash = "sha256:42e16c930e1e910461f4c551a72fc1b900f37124431bf2b6a6d9ddae70042db4"}, + {file = "playwright-1.49.1-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:1041ffb45a0d0bc44d698d3a5aa3ac4b67c9bd03540da43a0b70616ad52592b8"}, + {file = "playwright-1.49.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:9f38ed3d0c1f4e0a6d1c92e73dd9a61f8855133249d6f0cec28648d38a7137be"}, + {file = "playwright-1.49.1-py3-none-macosx_11_0_universal2.whl", hash = "sha256:3be48c6d26dc819ca0a26567c1ae36a980a0303dcd4249feb6f59e115aaddfb8"}, + {file = "playwright-1.49.1-py3-none-manylinux1_x86_64.whl", hash = "sha256:753ca90ee31b4b03d165cfd36e477309ebf2b4381953f2a982ff612d85b147d2"}, + {file = "playwright-1.49.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd9bc8dab37aa25198a01f555f0a2e2c3813fe200fef018ac34dfe86b34994b9"}, + {file = "playwright-1.49.1-py3-none-win32.whl", hash = "sha256:43b304be67f096058e587dac453ece550eff87b8fbed28de30f4f022cc1745bb"}, + {file = "playwright-1.49.1-py3-none-win_amd64.whl", hash = "sha256:47b23cb346283278f5b4d1e1990bcb6d6302f80c0aa0ca93dd0601a1400191df"}, ] [package.dependencies] -greenlet = "2.0.2" -pyee = "9.0.4" +greenlet = "3.1.1" +pyee = "12.0.0" [[package]] name = "pydantic" -version = "1.10.8" -description = "Data validation and settings management using python type hints" +version = "2.10.5" +description = "Data validation using Python type hints" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "pydantic-1.10.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1243d28e9b05003a89d72e7915fdb26ffd1d39bdd39b00b7dbe4afae4b557f9d"}, - {file = "pydantic-1.10.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c0ab53b609c11dfc0c060d94335993cc2b95b2150e25583bec37a49b2d6c6c3f"}, - {file = "pydantic-1.10.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9613fadad06b4f3bc5db2653ce2f22e0de84a7c6c293909b48f6ed37b83c61f"}, - {file = "pydantic-1.10.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df7800cb1984d8f6e249351139667a8c50a379009271ee6236138a22a0c0f319"}, - {file = "pydantic-1.10.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0c6fafa0965b539d7aab0a673a046466d23b86e4b0e8019d25fd53f4df62c277"}, - {file = "pydantic-1.10.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e82d4566fcd527eae8b244fa952d99f2ca3172b7e97add0b43e2d97ee77f81ab"}, - {file = "pydantic-1.10.8-cp310-cp310-win_amd64.whl", hash = "sha256:ab523c31e22943713d80d8d342d23b6f6ac4b792a1e54064a8d0cf78fd64e800"}, - {file = "pydantic-1.10.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:666bdf6066bf6dbc107b30d034615d2627e2121506c555f73f90b54a463d1f33"}, - {file = "pydantic-1.10.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:35db5301b82e8661fa9c505c800d0990bc14e9f36f98932bb1d248c0ac5cada5"}, - {file = "pydantic-1.10.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90c1e29f447557e9e26afb1c4dbf8768a10cc676e3781b6a577841ade126b85"}, - {file = "pydantic-1.10.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93e766b4a8226e0708ef243e843105bf124e21331694367f95f4e3b4a92bbb3f"}, - {file = "pydantic-1.10.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:88f195f582851e8db960b4a94c3e3ad25692c1c1539e2552f3df7a9e972ef60e"}, - {file = "pydantic-1.10.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:34d327c81e68a1ecb52fe9c8d50c8a9b3e90d3c8ad991bfc8f953fb477d42fb4"}, - {file = "pydantic-1.10.8-cp311-cp311-win_amd64.whl", hash = "sha256:d532bf00f381bd6bc62cabc7d1372096b75a33bc197a312b03f5838b4fb84edd"}, - {file = "pydantic-1.10.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7d5b8641c24886d764a74ec541d2fc2c7fb19f6da2a4001e6d580ba4a38f7878"}, - {file = "pydantic-1.10.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b1f6cb446470b7ddf86c2e57cd119a24959af2b01e552f60705910663af09a4"}, - {file = "pydantic-1.10.8-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c33b60054b2136aef8cf190cd4c52a3daa20b2263917c49adad20eaf381e823b"}, - {file = "pydantic-1.10.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1952526ba40b220b912cdc43c1c32bcf4a58e3f192fa313ee665916b26befb68"}, - {file = "pydantic-1.10.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bb14388ec45a7a0dc429e87def6396f9e73c8c77818c927b6a60706603d5f2ea"}, - {file = "pydantic-1.10.8-cp37-cp37m-win_amd64.whl", hash = "sha256:16f8c3e33af1e9bb16c7a91fc7d5fa9fe27298e9f299cff6cb744d89d573d62c"}, - {file = "pydantic-1.10.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1ced8375969673929809d7f36ad322934c35de4af3b5e5b09ec967c21f9f7887"}, - {file = "pydantic-1.10.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:93e6bcfccbd831894a6a434b0aeb1947f9e70b7468f274154d03d71fabb1d7c6"}, - {file = "pydantic-1.10.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:191ba419b605f897ede9892f6c56fb182f40a15d309ef0142212200a10af4c18"}, - {file = "pydantic-1.10.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:052d8654cb65174d6f9490cc9b9a200083a82cf5c3c5d3985db765757eb3b375"}, - {file = "pydantic-1.10.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ceb6a23bf1ba4b837d0cfe378329ad3f351b5897c8d4914ce95b85fba96da5a1"}, - {file = "pydantic-1.10.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f2e754d5566f050954727c77f094e01793bcb5725b663bf628fa6743a5a9108"}, - {file = "pydantic-1.10.8-cp38-cp38-win_amd64.whl", hash = "sha256:6a82d6cda82258efca32b40040228ecf43a548671cb174a1e81477195ed3ed56"}, - {file = "pydantic-1.10.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e59417ba8a17265e632af99cc5f35ec309de5980c440c255ab1ca3ae96a3e0e"}, - {file = "pydantic-1.10.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:84d80219c3f8d4cad44575e18404099c76851bc924ce5ab1c4c8bb5e2a2227d0"}, - {file = "pydantic-1.10.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e4148e635994d57d834be1182a44bdb07dd867fa3c2d1b37002000646cc5459"}, - {file = "pydantic-1.10.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12f7b0bf8553e310e530e9f3a2f5734c68699f42218bf3568ef49cd9b0e44df4"}, - {file = "pydantic-1.10.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:42aa0c4b5c3025483240a25b09f3c09a189481ddda2ea3a831a9d25f444e03c1"}, - {file = "pydantic-1.10.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:17aef11cc1b997f9d574b91909fed40761e13fac438d72b81f902226a69dac01"}, - {file = "pydantic-1.10.8-cp39-cp39-win_amd64.whl", hash = "sha256:66a703d1983c675a6e0fed8953b0971c44dba48a929a2000a493c3772eb61a5a"}, - {file = "pydantic-1.10.8-py3-none-any.whl", hash = "sha256:7456eb22ed9aaa24ff3e7b4757da20d9e5ce2a81018c1b3ebd81a0b88a18f3b2"}, - {file = "pydantic-1.10.8.tar.gz", hash = "sha256:1410275520dfa70effadf4c21811d755e7ef9bb1f1d077a21958153a92c8d9ca"}, + {file = "pydantic-2.10.5-py3-none-any.whl", hash = "sha256:4dd4e322dbe55472cb7ca7e73f4b63574eecccf2835ffa2af9021ce113c83c53"}, + {file = "pydantic-2.10.5.tar.gz", hash = "sha256:278b38dbbaec562011d659ee05f63346951b3a248a6f3642e1bc68894ea2b4ff"}, ] [package.dependencies] -typing-extensions = ">=4.2.0" +annotated-types = ">=0.6.0" +pydantic-core = "2.27.2" +typing-extensions = ">=4.12.2" [package.extras] -dotenv = ["python-dotenv (>=0.10.4)"] -email = ["email-validator (>=1.0.3)"] +email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata"] + +[[package]] +name = "pydantic-core" +version = "2.27.2" +description = "Core functionality for Pydantic validation and serialization" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"}, + {file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af"}, + {file = "pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4"}, + {file = "pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0"}, + {file = "pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b"}, + {file = "pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b"}, + {file = "pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b"}, + {file = "pydantic_core-2.27.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506"}, + {file = "pydantic_core-2.27.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da"}, + {file = "pydantic_core-2.27.2-cp38-cp38-win32.whl", hash = "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b"}, + {file = "pydantic_core-2.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad"}, + {file = "pydantic_core-2.27.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993"}, + {file = "pydantic_core-2.27.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96"}, + {file = "pydantic_core-2.27.2-cp39-cp39-win32.whl", hash = "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e"}, + {file = "pydantic_core-2.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35"}, + {file = "pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pyee" -version = "9.0.4" -description = "A port of node.js's EventEmitter to python." +version = "12.0.0" +description = "A rough port of Node.js's EventEmitter to Python with a few tricks of its own" optional = false -python-versions = "*" +python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "pyee-9.0.4-py2.py3-none-any.whl", hash = "sha256:9f066570130c554e9cc12de5a9d86f57c7ee47fece163bbdaa3e9c933cfbdfa5"}, - {file = "pyee-9.0.4.tar.gz", hash = "sha256:2770c4928abc721f46b705e6a72b0c59480c4a69c9a83ca0b00bb994f1ea4b32"}, + {file = "pyee-12.0.0-py3-none-any.whl", hash = "sha256:7b14b74320600049ccc7d0e0b1becd3b4bd0a03c745758225e31a59f4095c990"}, + {file = "pyee-12.0.0.tar.gz", hash = "sha256:c480603f4aa2927d4766eb41fa82793fe60a82cbfdb8d688e0d08c55a534e145"}, ] [package.dependencies] typing-extensions = "*" +[package.extras] +dev = ["black", "build", "flake8", "flake8-black", "isort", "jupyter-console", "mkdocs", "mkdocs-include-markdown-plugin", "mkdocstrings[python]", "pytest", "pytest-asyncio", "pytest-trio", "sphinx", "toml", "tox", "trio", "trio", "trio-typing", "twine", "twisted", "validate-pyproject[all]"] + [[package]] name = "pygments" version = "2.15.1" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "Pygments-2.15.1-py3-none-any.whl", hash = "sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1"}, {file = "Pygments-2.15.1.tar.gz", hash = "sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c"}, @@ -1375,6 +1621,7 @@ version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" optional = false python-versions = ">=3.6.8" +groups = ["main"] files = [ {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, @@ -1389,6 +1636,7 @@ version = "2.8.2" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main"] files = [ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, @@ -1399,13 +1647,14 @@ six = ">=1.5" [[package]] name = "python-dotenv" -version = "1.0.0" +version = "1.0.1" description = "Read key-value pairs from a .env file and set them as environment variables" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"}, - {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"}, + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, ] [package.extras] @@ -1413,59 +1662,74 @@ cli = ["click (>=5.0)"] [[package]] name = "pyyaml" -version = "6.0" +version = "6.0.2" description = "YAML parser and emitter for Python" optional = false -python-versions = ">=3.6" -files = [ - {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, - {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, - {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, - {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, - {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, - {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, - {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, - {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, - {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, - {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, - {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, - {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, - {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, - {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, - {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, - {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, - {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, - {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] [[package]] name = "reactpy" -version = "1.0.0" -description = "Reactive user interfaces with pure Python" +version = "1.1.0" +description = "It's React, but in Python." optional = false python-versions = ">=3.9" +groups = ["main"] files = [] develop = false @@ -1473,36 +1737,39 @@ develop = false anyio = ">=3" asgiref = ">=3" colorlog = ">=6" -fastapi = {version = ">=0.63.0", optional = true, markers = "extra == \"fastapi\""} +exceptiongroup = ">=1.0" +fastapi = {version = ">=0.63.0", optional = true, markers = "extra == \"all\""} fastjsonschema = ">=2.14.5" -flask = {version = "*", optional = true, markers = "extra == \"flask\""} -flask-cors = {version = "*", optional = true, markers = "extra == \"flask\""} -flask-sock = {version = "*", optional = true, markers = "extra == \"flask\""} +flask = {version = "*", optional = true, markers = "extra == \"all\""} +flask-cors = {version = "*", optional = true, markers = "extra == \"all\""} +flask-sock = {version = "*", optional = true, markers = "extra == \"all\""} jsonpatch = ">=1.32" lxml = ">=4" -markupsafe = {version = ">=1.1.1,<2.1", optional = true, markers = "extra == \"flask\""} +markupsafe = {version = ">=1.1.1,<2.1", optional = true, markers = "extra == \"all\""} mypy-extensions = ">=0.4.3" -playwright = {version = "*", optional = true, markers = "extra == \"testing\""} +playwright = {version = "*", optional = true, markers = "extra == \"all\""} requests = ">=2" -sanic = {version = ">=21", optional = true, markers = "extra == \"sanic\""} -sanic-cors = {version = "*", optional = true, markers = "extra == \"sanic\""} -starlette = {version = ">=0.13.6", optional = true, markers = "extra == \"starlette\""} -tornado = {version = "*", optional = true, markers = "extra == \"tornado\""} +sanic = {version = ">=21", optional = true, markers = "extra == \"all\""} +sanic-cors = {version = "*", optional = true, markers = "extra == \"all\""} +setuptools = {version = "*", optional = true, markers = "extra == \"all\""} +starlette = {version = ">=0.13.6", optional = true, markers = "extra == \"all\""} +tornado = {version = "*", optional = true, markers = "extra == \"all\""} +tracerite = {version = ">=1.1.1", optional = true, markers = "extra == \"all\""} typing-extensions = ">=3.10" -uvicorn = {version = ">=0.19.0", extras = ["standard"], optional = true, markers = "extra == \"fastapi\" or extra == \"sanic\" or extra == \"starlette\""} +uvicorn = {version = ">=0.19.0", extras = ["standard"], optional = true, markers = "extra == \"all\""} [package.extras] -all = ["reactpy[fastapi,flask,sanic,starlette,testing,tornado]"] +all = ["fastapi (>=0.63.0)", "flask", "flask-cors", "flask-sock", "markupsafe (>=1.1.1,<2.1)", "playwright", "sanic (>=21)", "sanic-cors", "setuptools", "starlette (>=0.13.6)", "tornado", "tracerite (>=1.1.1)", "uvicorn[standard] (>=0.19.0)"] fastapi = ["fastapi (>=0.63.0)", "uvicorn[standard] (>=0.19.0)"] flask = ["flask", "flask-cors", "flask-sock", "markupsafe (>=1.1.1,<2.1)"] -sanic = ["sanic (>=21)", "sanic-cors", "uvicorn[standard] (>=0.19.0)"] +sanic = ["sanic (>=21)", "sanic-cors", "setuptools", "tracerite (>=1.1.1)", "uvicorn[standard] (>=0.19.0)"] starlette = ["starlette (>=0.13.6)", "uvicorn[standard] (>=0.19.0)"] testing = ["playwright"] tornado = ["tornado"] [package.source] type = "directory" -url = "../src/py/reactpy" +url = ".." [[package]] name = "requests" @@ -1510,6 +1777,7 @@ version = "2.31.0" description = "Python HTTP for Humans." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, @@ -1527,13 +1795,14 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "sanic" -version = "23.3.0" +version = "24.12.0" description = "A web server and web framework that's written to go fast. Build fast. Run fast." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "sanic-23.3.0-py3-none-any.whl", hash = "sha256:7cafbd63da9c6c6d8aeb8cb4304addf8a274352ab812014386c63e55f474fbee"}, - {file = "sanic-23.3.0.tar.gz", hash = "sha256:b80ebc5c38c983cb45ae5ecc7a669a54c823ec1dff297fbd5f817b1e9e9e49af"}, + {file = "sanic-24.12.0-py3-none-any.whl", hash = "sha256:3c2a01ec0b6c5926e3efe34eac1b497d31ed989038fe213eb25ad0c98687d388"}, + {file = "sanic-24.12.0.tar.gz", hash = "sha256:09c23aa917616c1e60e44c66dfd7582cb9fd6503f78298c309945909f5839836"}, ] [package.dependencies] @@ -1541,19 +1810,21 @@ aiofiles = ">=0.6.0" html5tagger = ">=1.2.1" httptools = ">=0.0.10" multidict = ">=5.0,<7.0" -sanic-routing = ">=22.8.0" +sanic-routing = ">=23.12.0" +setuptools = ">=70.1.0" tracerite = ">=1.0.0" +typing-extensions = ">=4.4.0" ujson = {version = ">=1.35", markers = "sys_platform != \"win32\" and implementation_name == \"cpython\""} uvloop = {version = ">=0.15.0", markers = "sys_platform != \"win32\" and implementation_name == \"cpython\""} websockets = ">=10.0" [package.extras] -all = ["bandit", "beautifulsoup4", "black", "chardet (==3.*)", "coverage", "cryptography", "docutils", "enum-tools[sphinx]", "flake8", "isort (>=5.0.0)", "m2r2", "mistune (<2.0.0)", "mypy (>=0.901,<0.910)", "pygments", "pytest (==7.1.*)", "pytest-benchmark", "pytest-sanic", "sanic-testing (>=23.3.0)", "slotscheck (>=0.8.0,<1)", "sphinx (>=2.1.2)", "sphinx-rtd-theme (>=0.4.3)", "towncrier", "tox", "types-ujson", "uvicorn (<0.15.0)"] -dev = ["bandit", "beautifulsoup4", "black", "chardet (==3.*)", "coverage", "cryptography", "docutils", "flake8", "isort (>=5.0.0)", "mypy (>=0.901,<0.910)", "pygments", "pytest (==7.1.*)", "pytest-benchmark", "pytest-sanic", "sanic-testing (>=23.3.0)", "slotscheck (>=0.8.0,<1)", "towncrier", "tox", "types-ujson", "uvicorn (<0.15.0)"] -docs = ["docutils", "enum-tools[sphinx]", "m2r2", "mistune (<2.0.0)", "pygments", "sphinx (>=2.1.2)", "sphinx-rtd-theme (>=0.4.3)"] +all = ["autodocsumm (>=0.2.11)", "bandit", "beautifulsoup4", "chardet (==3.*)", "coverage", "cryptography", "docutils", "enum-tools[sphinx]", "m2r2", "mistune (<2.0.0)", "mypy", "pygments", "pytest (>=8.2.2)", "pytest-benchmark", "pytest-sanic", "ruff", "sanic-testing (>=23.6.0)", "slotscheck (>=0.8.0,<1)", "sphinx (>=2.1.2)", "sphinx_rtd_theme (>=0.4.3)", "towncrier", "tox", "types-ujson", "uvicorn"] +dev = ["bandit", "beautifulsoup4", "chardet (==3.*)", "coverage", "cryptography", "docutils", "mypy", "pygments", "pytest (>=8.2.2)", "pytest-benchmark", "pytest-sanic", "ruff", "sanic-testing (>=23.6.0)", "slotscheck (>=0.8.0,<1)", "towncrier", "tox", "types-ujson", "uvicorn"] +docs = ["autodocsumm (>=0.2.11)", "docutils", "enum-tools[sphinx]", "m2r2", "mistune (<2.0.0)", "pygments", "sphinx (>=2.1.2)", "sphinx_rtd_theme (>=0.4.3)"] ext = ["sanic-ext"] http3 = ["aioquic"] -test = ["bandit", "beautifulsoup4", "black", "chardet (==3.*)", "coverage", "docutils", "flake8", "isort (>=5.0.0)", "mypy (>=0.901,<0.910)", "pygments", "pytest (==7.1.*)", "pytest-benchmark", "pytest-sanic", "sanic-testing (>=23.3.0)", "slotscheck (>=0.8.0,<1)", "types-ujson", "uvicorn (<0.15.0)"] +test = ["bandit", "beautifulsoup4", "chardet (==3.*)", "coverage", "docutils", "mypy", "pygments", "pytest (>=8.2.2)", "pytest-benchmark", "pytest-sanic", "ruff", "sanic-testing (>=23.6.0)", "slotscheck (>=0.8.0,<1)", "types-ujson", "uvicorn"] [[package]] name = "sanic-cors" @@ -1561,6 +1832,7 @@ version = "2.2.0" description = "A Sanic extension adding a decorator for CORS support. Based on flask-cors by Cory Dolphin." optional = false python-versions = "*" +groups = ["main"] files = [ {file = "Sanic-Cors-2.2.0.tar.gz", hash = "sha256:f8d7515da4c8b837871d422c66314c4b5704396a78894b59c50e26aa72a95873"}, {file = "Sanic_Cors-2.2.0-py2.py3-none-any.whl", hash = "sha256:c3b133ff1f0bb609a53db35f727f5c371dc4ebeb6be4cc2c37c19dd8b9301115"}, @@ -1572,35 +1844,63 @@ sanic = ">=21.9.3" [[package]] name = "sanic-routing" -version = "22.8.0" +version = "23.12.0" description = "Core routing component for Sanic" optional = false python-versions = "*" +groups = ["main"] files = [ - {file = "sanic-routing-22.8.0.tar.gz", hash = "sha256:305729b4e0bf01f074044a2a315ff401fa7eeffb009eec1d2c81d35e1038ddfc"}, - {file = "sanic_routing-22.8.0-py3-none-any.whl", hash = "sha256:9a928ed9e19a36bc019223be90a5da0ab88cdd76b101e032510b6a7073c017e9"}, + {file = "sanic-routing-23.12.0.tar.gz", hash = "sha256:1dcadc62c443e48c852392dba03603f9862b6197fc4cba5bbefeb1ace0848b04"}, + {file = "sanic_routing-23.12.0-py3-none-any.whl", hash = "sha256:1558a72afcb9046ed3134a5edae02fc1552cff08f0fff2e8d5de0877ea43ed73"}, ] +[[package]] +name = "setuptools" +version = "75.8.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "setuptools-75.8.0-py3-none-any.whl", hash = "sha256:e3982f444617239225d675215d51f6ba05f845d4eec313da4418fdbb56fb27e3"}, + {file = "setuptools-75.8.0.tar.gz", hash = "sha256:c5afc8f407c626b8313a86e10311dd3f661c6cd9c09d4bf8c15c0e11f9f2b0e6"}, +] + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.8.0)"] +core = ["importlib_metadata (>=6)", "jaraco.collections", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib_metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.14.*)", "pytest-mypy"] + [[package]] name = "simple-websocket" -version = "0.10.0" +version = "1.1.0" description = "Simple WebSocket server and client for Python" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ - {file = "simple-websocket-0.10.0.tar.gz", hash = "sha256:82c0b0b1006d5490f09ff66392394d90dd758285635edad241e093e9a8abd3eb"}, - {file = "simple_websocket-0.10.0-py3-none-any.whl", hash = "sha256:fc1bc56c393a187e7268f8ab99da1a8e8da9b5dfb7769a2f3b8dada00067745b"}, + {file = "simple_websocket-1.1.0-py3-none-any.whl", hash = "sha256:4af6069630a38ed6c561010f0e11a5bc0d4ca569b36306eb257cd9a192497c8c"}, + {file = "simple_websocket-1.1.0.tar.gz", hash = "sha256:7939234e7aa067c534abdab3a9ed933ec9ce4691b0713c78acb195560aa52ae4"}, ] [package.dependencies] wsproto = "*" +[package.extras] +dev = ["flake8", "pytest", "pytest-cov", "tox"] +docs = ["sphinx"] + [[package]] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +groups = ["main"] files = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, @@ -1608,13 +1908,14 @@ files = [ [[package]] name = "sniffio" -version = "1.3.0" +version = "1.3.1" description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ - {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"}, - {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"}, + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, ] [[package]] @@ -1623,6 +1924,7 @@ version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." optional = false python-versions = "*" +groups = ["main"] files = [ {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, @@ -1634,6 +1936,7 @@ version = "2.4.1" description = "A modern CSS selector implementation for Beautiful Soup." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "soupsieve-2.4.1-py3-none-any.whl", hash = "sha256:1c1bfee6819544a3447586c889157365a27e10d88cde3ad3da0cf0ddf646feb8"}, {file = "soupsieve-2.4.1.tar.gz", hash = "sha256:89d12b2d5dfcd2c9e8c22326da9d9aa9cb3dfab0a83a024f05704076ee8d35ea"}, @@ -1645,6 +1948,7 @@ version = "4.5.0" description = "Python documentation generator" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "Sphinx-4.5.0-py3-none-any.whl", hash = "sha256:ebf612653238bcc8f4359627a9b7ce44ede6fdd75d9d30f68255c7383d3a6226"}, {file = "Sphinx-4.5.0.tar.gz", hash = "sha256:7bf8ca9637a4ee15af412d1a1d9689fec70523a68ca9bb9127c2f3eeb344e2e6"}, @@ -1680,6 +1984,7 @@ version = "2021.3.14" description = "Rebuild Sphinx documentation on changes, with live-reload in the browser." optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "sphinx-autobuild-2021.3.14.tar.gz", hash = "sha256:de1ca3b66e271d2b5b5140c35034c89e47f263f2cd5db302c9217065f7443f05"}, {file = "sphinx_autobuild-2021.3.14-py3-none-any.whl", hash = "sha256:8fe8cbfdb75db04475232f05187c776f46f6e9e04cacf1e49ce81bdac649ccac"}, @@ -1699,6 +2004,7 @@ version = "1.19.1" description = "Type hints (PEP 484) support for the Sphinx autodoc extension" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "sphinx_autodoc_typehints-1.19.1-py3-none-any.whl", hash = "sha256:9be46aeeb1b315eb5df1f3a7cb262149895d16c7d7dcd77b92513c3c3a1e85e6"}, {file = "sphinx_autodoc_typehints-1.19.1.tar.gz", hash = "sha256:6c841db55e0e9be0483ff3962a2152b60e79306f4288d8c4e7e86ac84486a5ea"}, @@ -1717,6 +2023,7 @@ version = "0.5.2" description = "Add a copy button to each of your code cells." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "sphinx-copybutton-0.5.2.tar.gz", hash = "sha256:4cf17c82fb9646d1bc9ca92ac280813a3b605d8c421225fd9913154103ee1fbd"}, {file = "sphinx_copybutton-0.5.2-py3-none-any.whl", hash = "sha256:fb543fd386d917746c9a2c50360c7905b605726b9355cd26e9974857afeae06e"}, @@ -1735,6 +2042,7 @@ version = "0.4.1" description = "A sphinx extension for designing beautiful, view size responsive web components." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "sphinx_design-0.4.1-py3-none-any.whl", hash = "sha256:23bf5705eb31296d4451f68b0222a698a8a84396ffe8378dfd9319ba7ab8efd9"}, {file = "sphinx_design-0.4.1.tar.gz", hash = "sha256:5b6418ba4a2dc3d83592ea0ff61a52a891fe72195a4c3a18b2fa1c7668ce4708"}, @@ -1758,6 +2066,7 @@ version = "0.1.2" description = "Handles redirects for moved pages in Sphinx documentation projects" optional = false python-versions = ">=3.5" +groups = ["main"] files = [ {file = "sphinx_reredirects-0.1.2-py3-none-any.whl", hash = "sha256:3a22161771aadd448bb608a4fe7277252182a337af53c18372b7104531d71489"}, {file = "sphinx_reredirects-0.1.2.tar.gz", hash = "sha256:a0e7213304759b01edc22f032f1715a1c61176fc8f167164e7a52b9feec9ac64"}, @@ -1772,6 +2081,7 @@ version = "0.1.0" description = "Better python object resolution in Sphinx" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "sphinx_resolve_py_references-0.1.0-py2.py3-none-any.whl", hash = "sha256:ccf44a6b62d75c3a568285f4e1815734088c1a7cab7bbb7935bb22fbf0d78bc2"}, {file = "sphinx_resolve_py_references-0.1.0.tar.gz", hash = "sha256:0f87c06b29ec128964aee2e40d170d1d3c0e5f4955b2618a89ca724f42385372"}, @@ -1786,6 +2096,7 @@ version = "1.0.4" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "sphinxcontrib-applehelp-1.0.4.tar.gz", hash = "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e"}, {file = "sphinxcontrib_applehelp-1.0.4-py3-none-any.whl", hash = "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228"}, @@ -1801,6 +2112,7 @@ version = "1.0.2" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." optional = false python-versions = ">=3.5" +groups = ["main"] files = [ {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, @@ -1816,6 +2128,7 @@ version = "2.0.1" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "sphinxcontrib-htmlhelp-2.0.1.tar.gz", hash = "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff"}, {file = "sphinxcontrib_htmlhelp-2.0.1-py3-none-any.whl", hash = "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903"}, @@ -1831,6 +2144,7 @@ version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" optional = false python-versions = ">=3.5" +groups = ["main"] files = [ {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, @@ -1845,6 +2159,7 @@ version = "1.0.3" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." optional = false python-versions = ">=3.5" +groups = ["main"] files = [ {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, @@ -1860,6 +2175,7 @@ version = "1.1.5" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." optional = false python-versions = ">=3.5" +groups = ["main"] files = [ {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, @@ -1875,6 +2191,7 @@ version = "0.8.2" description = "Sphinx Extension to enable OGP support" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "sphinxext-opengraph-0.8.2.tar.gz", hash = "sha256:45a693b6704052c426576f0a1f630649c55b4188bc49eb63e9587e24a923db39"}, {file = "sphinxext_opengraph-0.8.2-py3-none-any.whl", hash = "sha256:6a05bdfe5176d9dd0a1d58a504f17118362ab976631213cd36fb44c4c40544c9"}, @@ -1886,13 +2203,14 @@ sphinx = ">=4.0" [[package]] name = "starlette" -version = "0.27.0" +version = "0.41.3" description = "The little ASGI library that shines." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "starlette-0.27.0-py3-none-any.whl", hash = "sha256:918416370e846586541235ccd38a474c08b80443ed31c578a418e2209b3eef91"}, - {file = "starlette-0.27.0.tar.gz", hash = "sha256:6a6b0d042acb8d469a01eba54e9cda6cbd24ac602c4cd016723117d6a7e73b75"}, + {file = "starlette-0.41.3-py3-none-any.whl", hash = "sha256:44cedb2b7c77a9de33a8b74b2b90e9f50d11fcf25d8270ea525ad71a25374ff7"}, + {file = "starlette-0.41.3.tar.gz", hash = "sha256:0e4ab3d16522a255be6b28260b938eae2482f98ce5cc934cb08dce8dc3ba5835"}, ] [package.dependencies] @@ -1900,7 +2218,7 @@ anyio = ">=3.4.0,<5" typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] -full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart", "pyyaml"] +full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] [[package]] name = "tornado" @@ -1908,6 +2226,7 @@ version = "6.3.2" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." optional = false python-versions = ">= 3.8" +groups = ["main"] files = [ {file = "tornado-6.3.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:c367ab6c0393d71171123ca5515c61ff62fe09024fa6bf299cd1339dc9456829"}, {file = "tornado-6.3.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b46a6ab20f5c7c1cb949c72c1994a4585d2eaa0be4853f50a03b5031e964fc7c"}, @@ -1924,13 +2243,14 @@ files = [ [[package]] name = "tracerite" -version = "1.1.0" +version = "1.1.1" description = "Human-readable HTML tracebacks for Python exceptions" optional = false python-versions = "*" +groups = ["main"] files = [ - {file = "tracerite-1.1.0-py3-none-any.whl", hash = "sha256:4cccac04db05eeeabda45e72b57199e147fa2f73cf64d89cfd625df321bd2ab6"}, - {file = "tracerite-1.1.0.tar.gz", hash = "sha256:041dab8fd4bb405f73506293ac7438a2d311e5f9044378ba7d9a6540392f9e4b"}, + {file = "tracerite-1.1.1-py3-none-any.whl", hash = "sha256:3a787a9ecb1a136ea9ce17e6328e414ec414a4f644130af4e1e330bec2dece29"}, + {file = "tracerite-1.1.1.tar.gz", hash = "sha256:6400a35a187747189e4bb8d4a8e471bd86d14dbdcc94bcad23f4eda023f41356"}, ] [package.dependencies] @@ -1938,87 +2258,103 @@ html5tagger = ">=1.2.1" [[package]] name = "typing-extensions" -version = "4.6.3" -description = "Backported and Experimental Type Hints for Python 3.7+" +version = "4.12.2" +description = "Backported and Experimental Type Hints for Python 3.8+" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "typing_extensions-4.6.3-py3-none-any.whl", hash = "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26"}, - {file = "typing_extensions-4.6.3.tar.gz", hash = "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5"}, + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] name = "ujson" -version = "5.7.0" +version = "5.10.0" description = "Ultra fast JSON encoder and decoder for Python" optional = false -python-versions = ">=3.7" -files = [ - {file = "ujson-5.7.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5eba5e69e4361ac3a311cf44fa71bc619361b6e0626768a494771aacd1c2f09b"}, - {file = "ujson-5.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aae4d9e1b4c7b61780f0a006c897a4a1904f862fdab1abb3ea8f45bd11aa58f3"}, - {file = "ujson-5.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2e43ccdba1cb5c6d3448eadf6fc0dae7be6c77e357a3abc968d1b44e265866d"}, - {file = "ujson-5.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54384ce4920a6d35fa9ea8e580bc6d359e3eb961fa7e43f46c78e3ed162d56ff"}, - {file = "ujson-5.7.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24ad1aa7fc4e4caa41d3d343512ce68e41411fb92adf7f434a4d4b3749dc8f58"}, - {file = "ujson-5.7.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:afff311e9f065a8f03c3753db7011bae7beb73a66189c7ea5fcb0456b7041ea4"}, - {file = "ujson-5.7.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6e80f0d03e7e8646fc3d79ed2d875cebd4c83846e129737fdc4c2532dbd43d9e"}, - {file = "ujson-5.7.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:137831d8a0db302fb6828ee21c67ad63ac537bddc4376e1aab1c8573756ee21c"}, - {file = "ujson-5.7.0-cp310-cp310-win32.whl", hash = "sha256:7df3fd35ebc14dafeea031038a99232b32f53fa4c3ecddb8bed132a43eefb8ad"}, - {file = "ujson-5.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:af4639f684f425177d09ae409c07602c4096a6287027469157bfb6f83e01448b"}, - {file = "ujson-5.7.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9b0f2680ce8a70f77f5d70aaf3f013d53e6af6d7058727a35d8ceb4a71cdd4e9"}, - {file = "ujson-5.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:67a19fd8e7d8cc58a169bea99fed5666023adf707a536d8f7b0a3c51dd498abf"}, - {file = "ujson-5.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6abb8e6d8f1ae72f0ed18287245f5b6d40094e2656d1eab6d99d666361514074"}, - {file = "ujson-5.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8cd622c069368d5074bd93817b31bdb02f8d818e57c29e206f10a1f9c6337dd"}, - {file = "ujson-5.7.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:14f9082669f90e18e64792b3fd0bf19f2b15e7fe467534a35ea4b53f3bf4b755"}, - {file = "ujson-5.7.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d7ff6ebb43bc81b057724e89550b13c9a30eda0f29c2f506f8b009895438f5a6"}, - {file = "ujson-5.7.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f7f241488879d91a136b299e0c4ce091996c684a53775e63bb442d1a8e9ae22a"}, - {file = "ujson-5.7.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5593263a7fcfb934107444bcfba9dde8145b282de0ee9f61e285e59a916dda0f"}, - {file = "ujson-5.7.0-cp311-cp311-win32.whl", hash = "sha256:26c2b32b489c393106e9cb68d0a02e1a7b9d05a07429d875c46b94ee8405bdb7"}, - {file = "ujson-5.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:ed24406454bb5a31df18f0a423ae14beb27b28cdfa34f6268e7ebddf23da807e"}, - {file = "ujson-5.7.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:18679484e3bf9926342b1c43a3bd640f93a9eeeba19ef3d21993af7b0c44785d"}, - {file = "ujson-5.7.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ee295761e1c6c30400641f0a20d381633d7622633cdf83a194f3c876a0e4b7e"}, - {file = "ujson-5.7.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b738282e12a05f400b291966630a98d622da0938caa4bc93cf65adb5f4281c60"}, - {file = "ujson-5.7.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00343501dbaa5172e78ef0e37f9ebd08040110e11c12420ff7c1f9f0332d939e"}, - {file = "ujson-5.7.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c0d1f7c3908357ee100aa64c4d1cf91edf99c40ac0069422a4fd5fd23b263263"}, - {file = "ujson-5.7.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a5d2f44331cf04689eafac7a6596c71d6657967c07ac700b0ae1c921178645da"}, - {file = "ujson-5.7.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:16b2254a77b310f118717715259a196662baa6b1f63b1a642d12ab1ff998c3d7"}, - {file = "ujson-5.7.0-cp37-cp37m-win32.whl", hash = "sha256:6faf46fa100b2b89e4db47206cf8a1ffb41542cdd34dde615b2fc2288954f194"}, - {file = "ujson-5.7.0-cp37-cp37m-win_amd64.whl", hash = "sha256:ff0004c3f5a9a6574689a553d1b7819d1a496b4f005a7451f339dc2d9f4cf98c"}, - {file = "ujson-5.7.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:75204a1dd7ec6158c8db85a2f14a68d2143503f4bafb9a00b63fe09d35762a5e"}, - {file = "ujson-5.7.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7312731c7826e6c99cdd3ac503cd9acd300598e7a80bcf41f604fee5f49f566c"}, - {file = "ujson-5.7.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b9dc5a90e2149643df7f23634fe202fed5ebc787a2a1be95cf23632b4d90651"}, - {file = "ujson-5.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6a6961fc48821d84b1198a09516e396d56551e910d489692126e90bf4887d29"}, - {file = "ujson-5.7.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b01a9af52a0d5c46b2c68e3f258fdef2eacaa0ce6ae3e9eb97983f5b1166edb6"}, - {file = "ujson-5.7.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7316d3edeba8a403686cdcad4af737b8415493101e7462a70ff73dd0609eafc"}, - {file = "ujson-5.7.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4ee997799a23227e2319a3f8817ce0b058923dbd31904761b788dc8f53bd3e30"}, - {file = "ujson-5.7.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dda9aa4c33435147262cd2ea87c6b7a1ca83ba9b3933ff7df34e69fee9fced0c"}, - {file = "ujson-5.7.0-cp38-cp38-win32.whl", hash = "sha256:bea8d30e362180aafecabbdcbe0e1f0b32c9fa9e39c38e4af037b9d3ca36f50c"}, - {file = "ujson-5.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:c96e3b872bf883090ddf32cc41957edf819c5336ab0007d0cf3854e61841726d"}, - {file = "ujson-5.7.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6411aea4c94a8e93c2baac096fbf697af35ba2b2ed410b8b360b3c0957a952d3"}, - {file = "ujson-5.7.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3d3b3499c55911f70d4e074c626acdb79a56f54262c3c83325ffb210fb03e44d"}, - {file = "ujson-5.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:341f891d45dd3814d31764626c55d7ab3fd21af61fbc99d070e9c10c1190680b"}, - {file = "ujson-5.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f242eec917bafdc3f73a1021617db85f9958df80f267db69c76d766058f7b19"}, - {file = "ujson-5.7.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c3af9f9f22a67a8c9466a32115d9073c72a33ae627b11de6f592df0ee09b98b6"}, - {file = "ujson-5.7.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4a3d794afbf134df3056a813e5c8a935208cddeae975bd4bc0ef7e89c52f0ce0"}, - {file = "ujson-5.7.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:800bf998e78dae655008dd10b22ca8dc93bdcfcc82f620d754a411592da4bbf2"}, - {file = "ujson-5.7.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b5ac3d5c5825e30b438ea92845380e812a476d6c2a1872b76026f2e9d8060fc2"}, - {file = "ujson-5.7.0-cp39-cp39-win32.whl", hash = "sha256:cd90027e6d93e8982f7d0d23acf88c896d18deff1903dd96140613389b25c0dd"}, - {file = "ujson-5.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:523ee146cdb2122bbd827f4dcc2a8e66607b3f665186bce9e4f78c9710b6d8ab"}, - {file = "ujson-5.7.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e87cec407ec004cf1b04c0ed7219a68c12860123dfb8902ef880d3d87a71c172"}, - {file = "ujson-5.7.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bab10165db6a7994e67001733f7f2caf3400b3e11538409d8756bc9b1c64f7e8"}, - {file = "ujson-5.7.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b522be14a28e6ac1cf818599aeff1004a28b42df4ed4d7bc819887b9dac915fc"}, - {file = "ujson-5.7.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7592f40175c723c032cdbe9fe5165b3b5903604f774ab0849363386e99e1f253"}, - {file = "ujson-5.7.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ed22f9665327a981f288a4f758a432824dc0314e4195a0eaeb0da56a477da94d"}, - {file = "ujson-5.7.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:adf445a49d9a97a5a4c9bb1d652a1528de09dd1c48b29f79f3d66cea9f826bf6"}, - {file = "ujson-5.7.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64772a53f3c4b6122ed930ae145184ebaed38534c60f3d859d8c3f00911eb122"}, - {file = "ujson-5.7.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35209cb2c13fcb9d76d249286105b4897b75a5e7f0efb0c0f4b90f222ce48910"}, - {file = "ujson-5.7.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:90712dfc775b2c7a07d4d8e059dd58636bd6ff1776d79857776152e693bddea6"}, - {file = "ujson-5.7.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:0e4e8981c6e7e9e637e637ad8ffe948a09e5434bc5f52ecbb82b4b4cfc092bfb"}, - {file = "ujson-5.7.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:581c945b811a3d67c27566539bfcb9705ea09cb27c4be0002f7a553c8886b817"}, - {file = "ujson-5.7.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d36a807a24c7d44f71686685ae6fbc8793d784bca1adf4c89f5f780b835b6243"}, - {file = "ujson-5.7.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b4257307e3662aa65e2644a277ca68783c5d51190ed9c49efebdd3cbfd5fa44"}, - {file = "ujson-5.7.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea7423d8a2f9e160c5e011119741682414c5b8dce4ae56590a966316a07a4618"}, - {file = "ujson-5.7.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4c592eb91a5968058a561d358d0fef59099ed152cfb3e1cd14eee51a7a93879e"}, - {file = "ujson-5.7.0.tar.gz", hash = "sha256:e788e5d5dcae8f6118ac9b45d0b891a0d55f7ac480eddcb7f07263f2bcf37b23"}, +python-versions = ">=3.8" +groups = ["main"] +markers = "sys_platform != \"win32\" and implementation_name == \"cpython\"" +files = [ + {file = "ujson-5.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2601aa9ecdbee1118a1c2065323bda35e2c5a2cf0797ef4522d485f9d3ef65bd"}, + {file = "ujson-5.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:348898dd702fc1c4f1051bc3aacbf894caa0927fe2c53e68679c073375f732cf"}, + {file = "ujson-5.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22cffecf73391e8abd65ef5f4e4dd523162a3399d5e84faa6aebbf9583df86d6"}, + {file = "ujson-5.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26b0e2d2366543c1bb4fbd457446f00b0187a2bddf93148ac2da07a53fe51569"}, + {file = "ujson-5.10.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:caf270c6dba1be7a41125cd1e4fc7ba384bf564650beef0df2dd21a00b7f5770"}, + {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a245d59f2ffe750446292b0094244df163c3dc96b3ce152a2c837a44e7cda9d1"}, + {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:94a87f6e151c5f483d7d54ceef83b45d3a9cca7a9cb453dbdbb3f5a6f64033f5"}, + {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:29b443c4c0a113bcbb792c88bea67b675c7ca3ca80c3474784e08bba01c18d51"}, + {file = "ujson-5.10.0-cp310-cp310-win32.whl", hash = "sha256:c18610b9ccd2874950faf474692deee4223a994251bc0a083c114671b64e6518"}, + {file = "ujson-5.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:924f7318c31874d6bb44d9ee1900167ca32aa9b69389b98ecbde34c1698a250f"}, + {file = "ujson-5.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00"}, + {file = "ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126"}, + {file = "ujson-5.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8"}, + {file = "ujson-5.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:129e39af3a6d85b9c26d5577169c21d53821d8cf68e079060602e861c6e5da1b"}, + {file = "ujson-5.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9"}, + {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7ec0ca8c415e81aa4123501fee7f761abf4b7f386aad348501a26940beb1860f"}, + {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab13a2a9e0b2865a6c6db9271f4b46af1c7476bfd51af1f64585e919b7c07fd4"}, + {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:57aaf98b92d72fc70886b5a0e1a1ca52c2320377360341715dd3933a18e827b1"}, + {file = "ujson-5.10.0-cp311-cp311-win32.whl", hash = "sha256:2987713a490ceb27edff77fb184ed09acdc565db700ee852823c3dc3cffe455f"}, + {file = "ujson-5.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f00ea7e00447918ee0eff2422c4add4c5752b1b60e88fcb3c067d4a21049a720"}, + {file = "ujson-5.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5"}, + {file = "ujson-5.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e"}, + {file = "ujson-5.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043"}, + {file = "ujson-5.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1"}, + {file = "ujson-5.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3"}, + {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21"}, + {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2"}, + {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e"}, + {file = "ujson-5.10.0-cp312-cp312-win32.whl", hash = "sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e"}, + {file = "ujson-5.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc"}, + {file = "ujson-5.10.0-cp313-cp313-macosx_10_9_x86_64.whl", hash = "sha256:618efd84dc1acbd6bff8eaa736bb6c074bfa8b8a98f55b61c38d4ca2c1f7f287"}, + {file = "ujson-5.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38d5d36b4aedfe81dfe251f76c0467399d575d1395a1755de391e58985ab1c2e"}, + {file = "ujson-5.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67079b1f9fb29ed9a2914acf4ef6c02844b3153913eb735d4bf287ee1db6e557"}, + {file = "ujson-5.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7d0e0ceeb8fe2468c70ec0c37b439dd554e2aa539a8a56365fd761edb418988"}, + {file = "ujson-5.10.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:59e02cd37bc7c44d587a0ba45347cc815fb7a5fe48de16bf05caa5f7d0d2e816"}, + {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2a890b706b64e0065f02577bf6d8ca3b66c11a5e81fb75d757233a38c07a1f20"}, + {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:621e34b4632c740ecb491efc7f1fcb4f74b48ddb55e65221995e74e2d00bbff0"}, + {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b9500e61fce0cfc86168b248104e954fead61f9be213087153d272e817ec7b4f"}, + {file = "ujson-5.10.0-cp313-cp313-win32.whl", hash = "sha256:4c4fc16f11ac1612f05b6f5781b384716719547e142cfd67b65d035bd85af165"}, + {file = "ujson-5.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:4573fd1695932d4f619928fd09d5d03d917274381649ade4328091ceca175539"}, + {file = "ujson-5.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a984a3131da7f07563057db1c3020b1350a3e27a8ec46ccbfbf21e5928a43050"}, + {file = "ujson-5.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:73814cd1b9db6fc3270e9d8fe3b19f9f89e78ee9d71e8bd6c9a626aeaeaf16bd"}, + {file = "ujson-5.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61e1591ed9376e5eddda202ec229eddc56c612b61ac6ad07f96b91460bb6c2fb"}, + {file = "ujson-5.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2c75269f8205b2690db4572a4a36fe47cd1338e4368bc73a7a0e48789e2e35a"}, + {file = "ujson-5.10.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7223f41e5bf1f919cd8d073e35b229295aa8e0f7b5de07ed1c8fddac63a6bc5d"}, + {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d4dc2fd6b3067c0782e7002ac3b38cf48608ee6366ff176bbd02cf969c9c20fe"}, + {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:232cc85f8ee3c454c115455195a205074a56ff42608fd6b942aa4c378ac14dd7"}, + {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:cc6139531f13148055d691e442e4bc6601f6dba1e6d521b1585d4788ab0bfad4"}, + {file = "ujson-5.10.0-cp38-cp38-win32.whl", hash = "sha256:e7ce306a42b6b93ca47ac4a3b96683ca554f6d35dd8adc5acfcd55096c8dfcb8"}, + {file = "ujson-5.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:e82d4bb2138ab05e18f089a83b6564fee28048771eb63cdecf4b9b549de8a2cc"}, + {file = "ujson-5.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dfef2814c6b3291c3c5f10065f745a1307d86019dbd7ea50e83504950136ed5b"}, + {file = "ujson-5.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4734ee0745d5928d0ba3a213647f1c4a74a2a28edc6d27b2d6d5bd9fa4319e27"}, + {file = "ujson-5.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d47ebb01bd865fdea43da56254a3930a413f0c5590372a1241514abae8aa7c76"}, + {file = "ujson-5.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dee5e97c2496874acbf1d3e37b521dd1f307349ed955e62d1d2f05382bc36dd5"}, + {file = "ujson-5.10.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7490655a2272a2d0b072ef16b0b58ee462f4973a8f6bbe64917ce5e0a256f9c0"}, + {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ba17799fcddaddf5c1f75a4ba3fd6441f6a4f1e9173f8a786b42450851bd74f1"}, + {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:2aff2985cef314f21d0fecc56027505804bc78802c0121343874741650a4d3d1"}, + {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ad88ac75c432674d05b61184178635d44901eb749786c8eb08c102330e6e8996"}, + {file = "ujson-5.10.0-cp39-cp39-win32.whl", hash = "sha256:2544912a71da4ff8c4f7ab5606f947d7299971bdd25a45e008e467ca638d13c9"}, + {file = "ujson-5.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:3ff201d62b1b177a46f113bb43ad300b424b7847f9c5d38b1b4ad8f75d4a282a"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5b6fee72fa77dc172a28f21693f64d93166534c263adb3f96c413ccc85ef6e64"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:61d0af13a9af01d9f26d2331ce49bb5ac1fb9c814964018ac8df605b5422dcb3"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecb24f0bdd899d368b715c9e6664166cf694d1e57be73f17759573a6986dd95a"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fbd8fd427f57a03cff3ad6574b5e299131585d9727c8c366da4624a9069ed746"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:beeaf1c48e32f07d8820c705ff8e645f8afa690cca1544adba4ebfa067efdc88"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:baed37ea46d756aca2955e99525cc02d9181de67f25515c468856c38d52b5f3b"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7663960f08cd5a2bb152f5ee3992e1af7690a64c0e26d31ba7b3ff5b2ee66337"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:d8640fb4072d36b08e95a3a380ba65779d356b2fee8696afeb7794cf0902d0a1"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78778a3aa7aafb11e7ddca4e29f46bc5139131037ad628cc10936764282d6753"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0111b27f2d5c820e7f2dbad7d48e3338c824e7ac4d2a12da3dc6061cc39c8e6"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:c66962ca7565605b355a9ed478292da628b8f18c0f2793021ca4425abf8b01e5"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ba43cc34cce49cf2d4bc76401a754a81202d8aa926d0e2b79f0ee258cb15d3a4"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ac56eb983edce27e7f51d05bc8dd820586c6e6be1c5216a6809b0c668bb312b8"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f44bd4b23a0e723bf8b10628288c2c7c335161d6840013d4d5de20e48551773b"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c10f4654e5326ec14a46bcdeb2b685d4ada6911050aa8baaf3501e57024b804"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0de4971a89a762398006e844ae394bd46991f7c385d7a6a3b93ba229e6dac17e"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:e1402f0564a97d2a52310ae10a64d25bcef94f8dd643fcf5d310219d915484f7"}, + {file = "ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1"}, ] [[package]] @@ -2027,6 +2363,7 @@ version = "2.0.2" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "urllib3-2.0.2-py3-none-any.whl", hash = "sha256:d055c2f9d38dc53c808f6fdc8eab7360b6fdbbde02340ed25cfbcd817c62469e"}, {file = "urllib3-2.0.2.tar.gz", hash = "sha256:61717a1095d7e155cdb737ac7bb2f4324a858a1e2e6466f6d03ff630ca68d3cc"}, @@ -2040,102 +2377,163 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "uvicorn" -version = "0.22.0" +version = "0.34.0" description = "The lightning-fast ASGI server." optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "uvicorn-0.22.0-py3-none-any.whl", hash = "sha256:e9434d3bbf05f310e762147f769c9f21235ee118ba2d2bf1155a7196448bd996"}, - {file = "uvicorn-0.22.0.tar.gz", hash = "sha256:79277ae03db57ce7d9aa0567830bbb51d7a612f54d6e1e3e92da3ef24c2c8ed8"}, + {file = "uvicorn-0.34.0-py3-none-any.whl", hash = "sha256:023dc038422502fa28a09c7a30bf2b6991512da7dcdb8fd35fe57cfc154126f4"}, + {file = "uvicorn-0.34.0.tar.gz", hash = "sha256:404051050cd7e905de2c9a7e61790943440b3416f49cb409f965d9dcd0fa73e9"}, ] [package.dependencies] click = ">=7.0" colorama = {version = ">=0.4", optional = true, markers = "sys_platform == \"win32\" and extra == \"standard\""} h11 = ">=0.8" -httptools = {version = ">=0.5.0", optional = true, markers = "extra == \"standard\""} +httptools = {version = ">=0.6.3", optional = true, markers = "extra == \"standard\""} python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""} +typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "(sys_platform != \"win32\" and sys_platform != \"cygwin\") and platform_python_implementation != \"PyPy\" and extra == \"standard\""} watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} websockets = {version = ">=10.4", optional = true, markers = "extra == \"standard\""} [package.extras] -standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] +standard = ["colorama (>=0.4)", "httptools (>=0.6.3)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] [[package]] name = "uvloop" -version = "0.17.0" +version = "0.21.0" description = "Fast implementation of asyncio event loop on top of libuv" optional = false -python-versions = ">=3.7" -files = [ - {file = "uvloop-0.17.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ce9f61938d7155f79d3cb2ffa663147d4a76d16e08f65e2c66b77bd41b356718"}, - {file = "uvloop-0.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:68532f4349fd3900b839f588972b3392ee56042e440dd5873dfbbcd2cc67617c"}, - {file = "uvloop-0.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0949caf774b9fcefc7c5756bacbbbd3fc4c05a6b7eebc7c7ad6f825b23998d6d"}, - {file = "uvloop-0.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff3d00b70ce95adce264462c930fbaecb29718ba6563db354608f37e49e09024"}, - {file = "uvloop-0.17.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a5abddb3558d3f0a78949c750644a67be31e47936042d4f6c888dd6f3c95f4aa"}, - {file = "uvloop-0.17.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8efcadc5a0003d3a6e887ccc1fb44dec25594f117a94e3127954c05cf144d811"}, - {file = "uvloop-0.17.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3378eb62c63bf336ae2070599e49089005771cc651c8769aaad72d1bd9385a7c"}, - {file = "uvloop-0.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6aafa5a78b9e62493539456f8b646f85abc7093dd997f4976bb105537cf2635e"}, - {file = "uvloop-0.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c686a47d57ca910a2572fddfe9912819880b8765e2f01dc0dd12a9bf8573e539"}, - {file = "uvloop-0.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:864e1197139d651a76c81757db5eb199db8866e13acb0dfe96e6fc5d1cf45fc4"}, - {file = "uvloop-0.17.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2a6149e1defac0faf505406259561bc14b034cdf1d4711a3ddcdfbaa8d825a05"}, - {file = "uvloop-0.17.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6708f30db9117f115eadc4f125c2a10c1a50d711461699a0cbfaa45b9a78e376"}, - {file = "uvloop-0.17.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:23609ca361a7fc587031429fa25ad2ed7242941adec948f9d10c045bfecab06b"}, - {file = "uvloop-0.17.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2deae0b0fb00a6af41fe60a675cec079615b01d68beb4cc7b722424406b126a8"}, - {file = "uvloop-0.17.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45cea33b208971e87a31c17622e4b440cac231766ec11e5d22c76fab3bf9df62"}, - {file = "uvloop-0.17.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9b09e0f0ac29eee0451d71798878eae5a4e6a91aa275e114037b27f7db72702d"}, - {file = "uvloop-0.17.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:dbbaf9da2ee98ee2531e0c780455f2841e4675ff580ecf93fe5c48fe733b5667"}, - {file = "uvloop-0.17.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a4aee22ece20958888eedbad20e4dbb03c37533e010fb824161b4f05e641f738"}, - {file = "uvloop-0.17.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:307958f9fc5c8bb01fad752d1345168c0abc5d62c1b72a4a8c6c06f042b45b20"}, - {file = "uvloop-0.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ebeeec6a6641d0adb2ea71dcfb76017602ee2bfd8213e3fcc18d8f699c5104f"}, - {file = "uvloop-0.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1436c8673c1563422213ac6907789ecb2b070f5939b9cbff9ef7113f2b531595"}, - {file = "uvloop-0.17.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8887d675a64cfc59f4ecd34382e5b4f0ef4ae1da37ed665adba0c2badf0d6578"}, - {file = "uvloop-0.17.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3db8de10ed684995a7f34a001f15b374c230f7655ae840964d51496e2f8a8474"}, - {file = "uvloop-0.17.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7d37dccc7ae63e61f7b96ee2e19c40f153ba6ce730d8ba4d3b4e9738c1dccc1b"}, - {file = "uvloop-0.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cbbe908fda687e39afd6ea2a2f14c2c3e43f2ca88e3a11964b297822358d0e6c"}, - {file = "uvloop-0.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d97672dc709fa4447ab83276f344a165075fd9f366a97b712bdd3fee05efae8"}, - {file = "uvloop-0.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1e507c9ee39c61bfddd79714e4f85900656db1aec4d40c6de55648e85c2799c"}, - {file = "uvloop-0.17.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c092a2c1e736086d59ac8e41f9c98f26bbf9b9222a76f21af9dfe949b99b2eb9"}, - {file = "uvloop-0.17.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:30babd84706115626ea78ea5dbc7dd8d0d01a2e9f9b306d24ca4ed5796c66ded"}, - {file = "uvloop-0.17.0.tar.gz", hash = "sha256:0ddf6baf9cf11a1a22c71487f39f15b2cf78eb5bde7e5b45fbb99e8a9d91b9e1"}, +python-versions = ">=3.8.0" +groups = ["main"] +markers = "implementation_name == \"cpython\" and sys_platform != \"win32\" or (sys_platform != \"win32\" and sys_platform != \"cygwin\") and platform_python_implementation != \"PyPy\"" +files = [ + {file = "uvloop-0.21.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ec7e6b09a6fdded42403182ab6b832b71f4edaf7f37a9a0e371a01db5f0cb45f"}, + {file = "uvloop-0.21.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:196274f2adb9689a289ad7d65700d37df0c0930fd8e4e743fa4834e850d7719d"}, + {file = "uvloop-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f38b2e090258d051d68a5b14d1da7203a3c3677321cf32a95a6f4db4dd8b6f26"}, + {file = "uvloop-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87c43e0f13022b998eb9b973b5e97200c8b90823454d4bc06ab33829e09fb9bb"}, + {file = "uvloop-0.21.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:10d66943def5fcb6e7b37310eb6b5639fd2ccbc38df1177262b0640c3ca68c1f"}, + {file = "uvloop-0.21.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:67dd654b8ca23aed0a8e99010b4c34aca62f4b7fce88f39d452ed7622c94845c"}, + {file = "uvloop-0.21.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c0f3fa6200b3108919f8bdabb9a7f87f20e7097ea3c543754cabc7d717d95cf8"}, + {file = "uvloop-0.21.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0878c2640cf341b269b7e128b1a5fed890adc4455513ca710d77d5e93aa6d6a0"}, + {file = "uvloop-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9fb766bb57b7388745d8bcc53a359b116b8a04c83a2288069809d2b3466c37e"}, + {file = "uvloop-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a375441696e2eda1c43c44ccb66e04d61ceeffcd76e4929e527b7fa401b90fb"}, + {file = "uvloop-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:baa0e6291d91649c6ba4ed4b2f982f9fa165b5bbd50a9e203c416a2797bab3c6"}, + {file = "uvloop-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4509360fcc4c3bd2c70d87573ad472de40c13387f5fda8cb58350a1d7475e58d"}, + {file = "uvloop-0.21.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:359ec2c888397b9e592a889c4d72ba3d6befba8b2bb01743f72fffbde663b59c"}, + {file = "uvloop-0.21.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7089d2dc73179ce5ac255bdf37c236a9f914b264825fdaacaded6990a7fb4c2"}, + {file = "uvloop-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa4dcdbd9ae0a372f2167a207cd98c9f9a1ea1188a8a526431eef2f8116cc8d"}, + {file = "uvloop-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86975dca1c773a2c9864f4c52c5a55631038e387b47eaf56210f873887b6c8dc"}, + {file = "uvloop-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:461d9ae6660fbbafedd07559c6a2e57cd553b34b0065b6550685f6653a98c1cb"}, + {file = "uvloop-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:183aef7c8730e54c9a3ee3227464daed66e37ba13040bb3f350bc2ddc040f22f"}, + {file = "uvloop-0.21.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:bfd55dfcc2a512316e65f16e503e9e450cab148ef11df4e4e679b5e8253a5281"}, + {file = "uvloop-0.21.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:787ae31ad8a2856fc4e7c095341cccc7209bd657d0e71ad0dc2ea83c4a6fa8af"}, + {file = "uvloop-0.21.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ee4d4ef48036ff6e5cfffb09dd192c7a5027153948d85b8da7ff705065bacc6"}, + {file = "uvloop-0.21.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3df876acd7ec037a3d005b3ab85a7e4110422e4d9c1571d4fc89b0fc41b6816"}, + {file = "uvloop-0.21.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd53ecc9a0f3d87ab847503c2e1552b690362e005ab54e8a48ba97da3924c0dc"}, + {file = "uvloop-0.21.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a5c39f217ab3c663dc699c04cbd50c13813e31d917642d459fdcec07555cc553"}, + {file = "uvloop-0.21.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:17df489689befc72c39a08359efac29bbee8eee5209650d4b9f34df73d22e414"}, + {file = "uvloop-0.21.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bc09f0ff191e61c2d592a752423c767b4ebb2986daa9ed62908e2b1b9a9ae206"}, + {file = "uvloop-0.21.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0ce1b49560b1d2d8a2977e3ba4afb2414fb46b86a1b64056bc4ab929efdafbe"}, + {file = "uvloop-0.21.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e678ad6fe52af2c58d2ae3c73dc85524ba8abe637f134bf3564ed07f555c5e79"}, + {file = "uvloop-0.21.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:460def4412e473896ef179a1671b40c039c7012184b627898eea5072ef6f017a"}, + {file = "uvloop-0.21.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:10da8046cc4a8f12c91a1c39d1dd1585c41162a15caaef165c2174db9ef18bdc"}, + {file = "uvloop-0.21.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c097078b8031190c934ed0ebfee8cc5f9ba9642e6eb88322b9958b649750f72b"}, + {file = "uvloop-0.21.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:46923b0b5ee7fc0020bef24afe7836cb068f5050ca04caf6b487c513dc1a20b2"}, + {file = "uvloop-0.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53e420a3afe22cdcf2a0f4846e377d16e718bc70103d7088a4f7623567ba5fb0"}, + {file = "uvloop-0.21.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88cb67cdbc0e483da00af0b2c3cdad4b7c61ceb1ee0f33fe00e09c81e3a6cb75"}, + {file = "uvloop-0.21.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:221f4f2a1f46032b403bf3be628011caf75428ee3cc204a22addf96f586b19fd"}, + {file = "uvloop-0.21.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2d1f581393673ce119355d56da84fe1dd9d2bb8b3d13ce792524e1607139feff"}, + {file = "uvloop-0.21.0.tar.gz", hash = "sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3"}, ] [package.extras] -dev = ["Cython (>=0.29.32,<0.30.0)", "Sphinx (>=4.1.2,<4.2.0)", "aiohttp", "flake8 (>=3.9.2,<3.10.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=22.0.0,<22.1.0)", "pycodestyle (>=2.7.0,<2.8.0)", "pytest (>=3.6.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] +dev = ["Cython (>=3.0,<4.0)", "setuptools (>=60)"] docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] -test = ["Cython (>=0.29.32,<0.30.0)", "aiohttp", "flake8 (>=3.9.2,<3.10.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=22.0.0,<22.1.0)", "pycodestyle (>=2.7.0,<2.8.0)"] +test = ["aiohttp (>=3.10.5)", "flake8 (>=5.0,<6.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=23.0.0,<23.1.0)", "pycodestyle (>=2.9.0,<2.10.0)"] [[package]] name = "watchfiles" -version = "0.19.0" +version = "1.0.4" description = "Simple, modern and high performance file watching and code reload in python." optional = false -python-versions = ">=3.7" -files = [ - {file = "watchfiles-0.19.0-cp37-abi3-macosx_10_7_x86_64.whl", hash = "sha256:91633e64712df3051ca454ca7d1b976baf842d7a3640b87622b323c55f3345e7"}, - {file = "watchfiles-0.19.0-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:b6577b8c6c8701ba8642ea9335a129836347894b666dd1ec2226830e263909d3"}, - {file = "watchfiles-0.19.0-cp37-abi3-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:18b28f6ad871b82df9542ff958d0c86bb0d8310bb09eb8e87d97318a3b5273af"}, - {file = "watchfiles-0.19.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fac19dc9cbc34052394dbe81e149411a62e71999c0a19e1e09ce537867f95ae0"}, - {file = "watchfiles-0.19.0-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:09ea3397aecbc81c19ed7f025e051a7387feefdb789cf768ff994c1228182fda"}, - {file = "watchfiles-0.19.0-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c0376deac92377817e4fb8f347bf559b7d44ff556d9bc6f6208dd3f79f104aaf"}, - {file = "watchfiles-0.19.0-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c75eff897786ee262c9f17a48886f4e98e6cfd335e011c591c305e5d083c056"}, - {file = "watchfiles-0.19.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb5d45c4143c1dd60f98a16187fd123eda7248f84ef22244818c18d531a249d1"}, - {file = "watchfiles-0.19.0-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:79c533ff593db861ae23436541f481ec896ee3da4e5db8962429b441bbaae16e"}, - {file = "watchfiles-0.19.0-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:3d7d267d27aceeeaa3de0dd161a0d64f0a282264d592e335fff7958cc0cbae7c"}, - {file = "watchfiles-0.19.0-cp37-abi3-win32.whl", hash = "sha256:176a9a7641ec2c97b24455135d58012a5be5c6217fc4d5fef0b2b9f75dbf5154"}, - {file = "watchfiles-0.19.0-cp37-abi3-win_amd64.whl", hash = "sha256:945be0baa3e2440151eb3718fd8846751e8b51d8de7b884c90b17d271d34cae8"}, - {file = "watchfiles-0.19.0-cp37-abi3-win_arm64.whl", hash = "sha256:0089c6dc24d436b373c3c57657bf4f9a453b13767150d17284fc6162b2791911"}, - {file = "watchfiles-0.19.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:cae3dde0b4b2078f31527acff6f486e23abed307ba4d3932466ba7cdd5ecec79"}, - {file = "watchfiles-0.19.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:7f3920b1285a7d3ce898e303d84791b7bf40d57b7695ad549dc04e6a44c9f120"}, - {file = "watchfiles-0.19.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9afd0d69429172c796164fd7fe8e821ade9be983f51c659a38da3faaaaac44dc"}, - {file = "watchfiles-0.19.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68dce92b29575dda0f8d30c11742a8e2b9b8ec768ae414b54f7453f27bdf9545"}, - {file = "watchfiles-0.19.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:5569fc7f967429d4bc87e355cdfdcee6aabe4b620801e2cf5805ea245c06097c"}, - {file = "watchfiles-0.19.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:5471582658ea56fca122c0f0d0116a36807c63fefd6fdc92c71ca9a4491b6b48"}, - {file = "watchfiles-0.19.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b538014a87f94d92f98f34d3e6d2635478e6be6423a9ea53e4dd96210065e193"}, - {file = "watchfiles-0.19.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20b44221764955b1e703f012c74015306fb7e79a00c15370785f309b1ed9aa8d"}, - {file = "watchfiles-0.19.0.tar.gz", hash = "sha256:d9b073073e048081e502b6c6b0b88714c026a1a4c890569238d04aca5f9ca74b"}, +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "watchfiles-1.0.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:ba5bb3073d9db37c64520681dd2650f8bd40902d991e7b4cfaeece3e32561d08"}, + {file = "watchfiles-1.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9f25d0ba0fe2b6d2c921cf587b2bf4c451860086534f40c384329fb96e2044d1"}, + {file = "watchfiles-1.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47eb32ef8c729dbc4f4273baece89398a4d4b5d21a1493efea77a17059f4df8a"}, + {file = "watchfiles-1.0.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:076f293100db3b0b634514aa0d294b941daa85fc777f9c698adb1009e5aca0b1"}, + {file = "watchfiles-1.0.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1eacd91daeb5158c598fe22d7ce66d60878b6294a86477a4715154990394c9b3"}, + {file = "watchfiles-1.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:13c2ce7b72026cfbca120d652f02c7750f33b4c9395d79c9790b27f014c8a5a2"}, + {file = "watchfiles-1.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:90192cdc15ab7254caa7765a98132a5a41471cf739513cc9bcf7d2ffcc0ec7b2"}, + {file = "watchfiles-1.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:278aaa395f405972e9f523bd786ed59dfb61e4b827856be46a42130605fd0899"}, + {file = "watchfiles-1.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a462490e75e466edbb9fc4cd679b62187153b3ba804868452ef0577ec958f5ff"}, + {file = "watchfiles-1.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8d0d0630930f5cd5af929040e0778cf676a46775753e442a3f60511f2409f48f"}, + {file = "watchfiles-1.0.4-cp310-cp310-win32.whl", hash = "sha256:cc27a65069bcabac4552f34fd2dce923ce3fcde0721a16e4fb1b466d63ec831f"}, + {file = "watchfiles-1.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:8b1f135238e75d075359cf506b27bf3f4ca12029c47d3e769d8593a2024ce161"}, + {file = "watchfiles-1.0.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:2a9f93f8439639dc244c4d2902abe35b0279102bca7bbcf119af964f51d53c19"}, + {file = "watchfiles-1.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9eea33ad8c418847dd296e61eb683cae1c63329b6d854aefcd412e12d94ee235"}, + {file = "watchfiles-1.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:31f1a379c9dcbb3f09cf6be1b7e83b67c0e9faabed0471556d9438a4a4e14202"}, + {file = "watchfiles-1.0.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ab594e75644421ae0a2484554832ca5895f8cab5ab62de30a1a57db460ce06c6"}, + {file = "watchfiles-1.0.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc2eb5d14a8e0d5df7b36288979176fbb39672d45184fc4b1c004d7c3ce29317"}, + {file = "watchfiles-1.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f68d8e9d5a321163ddacebe97091000955a1b74cd43724e346056030b0bacee"}, + {file = "watchfiles-1.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f9ce064e81fe79faa925ff03b9f4c1a98b0bbb4a1b8c1b015afa93030cb21a49"}, + {file = "watchfiles-1.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b77d5622ac5cc91d21ae9c2b284b5d5c51085a0bdb7b518dba263d0af006132c"}, + {file = "watchfiles-1.0.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1941b4e39de9b38b868a69b911df5e89dc43767feeda667b40ae032522b9b5f1"}, + {file = "watchfiles-1.0.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4f8c4998506241dedf59613082d1c18b836e26ef2a4caecad0ec41e2a15e4226"}, + {file = "watchfiles-1.0.4-cp311-cp311-win32.whl", hash = "sha256:4ebbeca9360c830766b9f0df3640b791be569d988f4be6c06d6fae41f187f105"}, + {file = "watchfiles-1.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:05d341c71f3d7098920f8551d4df47f7b57ac5b8dad56558064c3431bdfc0b74"}, + {file = "watchfiles-1.0.4-cp311-cp311-win_arm64.whl", hash = "sha256:32b026a6ab64245b584acf4931fe21842374da82372d5c039cba6bf99ef722f3"}, + {file = "watchfiles-1.0.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:229e6ec880eca20e0ba2f7e2249c85bae1999d330161f45c78d160832e026ee2"}, + {file = "watchfiles-1.0.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5717021b199e8353782dce03bd8a8f64438832b84e2885c4a645f9723bf656d9"}, + {file = "watchfiles-1.0.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0799ae68dfa95136dde7c472525700bd48777875a4abb2ee454e3ab18e9fc712"}, + {file = "watchfiles-1.0.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:43b168bba889886b62edb0397cab5b6490ffb656ee2fcb22dec8bfeb371a9e12"}, + {file = "watchfiles-1.0.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb2c46e275fbb9f0c92e7654b231543c7bbfa1df07cdc4b99fa73bedfde5c844"}, + {file = "watchfiles-1.0.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:857f5fc3aa027ff5e57047da93f96e908a35fe602d24f5e5d8ce64bf1f2fc733"}, + {file = "watchfiles-1.0.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55ccfd27c497b228581e2838d4386301227fc0cb47f5a12923ec2fe4f97b95af"}, + {file = "watchfiles-1.0.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c11ea22304d17d4385067588123658e9f23159225a27b983f343fcffc3e796a"}, + {file = "watchfiles-1.0.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:74cb3ca19a740be4caa18f238298b9d472c850f7b2ed89f396c00a4c97e2d9ff"}, + {file = "watchfiles-1.0.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c7cce76c138a91e720d1df54014a047e680b652336e1b73b8e3ff3158e05061e"}, + {file = "watchfiles-1.0.4-cp312-cp312-win32.whl", hash = "sha256:b045c800d55bc7e2cadd47f45a97c7b29f70f08a7c2fa13241905010a5493f94"}, + {file = "watchfiles-1.0.4-cp312-cp312-win_amd64.whl", hash = "sha256:c2acfa49dd0ad0bf2a9c0bb9a985af02e89345a7189be1efc6baa085e0f72d7c"}, + {file = "watchfiles-1.0.4-cp312-cp312-win_arm64.whl", hash = "sha256:22bb55a7c9e564e763ea06c7acea24fc5d2ee5dfc5dafc5cfbedfe58505e9f90"}, + {file = "watchfiles-1.0.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:8012bd820c380c3d3db8435e8cf7592260257b378b649154a7948a663b5f84e9"}, + {file = "watchfiles-1.0.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:aa216f87594f951c17511efe5912808dfcc4befa464ab17c98d387830ce07b60"}, + {file = "watchfiles-1.0.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62c9953cf85529c05b24705639ffa390f78c26449e15ec34d5339e8108c7c407"}, + {file = "watchfiles-1.0.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7cf684aa9bba4cd95ecb62c822a56de54e3ae0598c1a7f2065d51e24637a3c5d"}, + {file = "watchfiles-1.0.4-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f44a39aee3cbb9b825285ff979ab887a25c5d336e5ec3574f1506a4671556a8d"}, + {file = "watchfiles-1.0.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38320582736922be8c865d46520c043bff350956dfc9fbaee3b2df4e1740a4b"}, + {file = "watchfiles-1.0.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39f4914548b818540ef21fd22447a63e7be6e24b43a70f7642d21f1e73371590"}, + {file = "watchfiles-1.0.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f12969a3765909cf5dc1e50b2436eb2c0e676a3c75773ab8cc3aa6175c16e902"}, + {file = "watchfiles-1.0.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:0986902677a1a5e6212d0c49b319aad9cc48da4bd967f86a11bde96ad9676ca1"}, + {file = "watchfiles-1.0.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:308ac265c56f936636e3b0e3f59e059a40003c655228c131e1ad439957592303"}, + {file = "watchfiles-1.0.4-cp313-cp313-win32.whl", hash = "sha256:aee397456a29b492c20fda2d8961e1ffb266223625346ace14e4b6d861ba9c80"}, + {file = "watchfiles-1.0.4-cp313-cp313-win_amd64.whl", hash = "sha256:d6097538b0ae5c1b88c3b55afa245a66793a8fec7ada6755322e465fb1a0e8cc"}, + {file = "watchfiles-1.0.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:d3452c1ec703aa1c61e15dfe9d482543e4145e7c45a6b8566978fbb044265a21"}, + {file = "watchfiles-1.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7b75fee5a16826cf5c46fe1c63116e4a156924d668c38b013e6276f2582230f0"}, + {file = "watchfiles-1.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e997802d78cdb02623b5941830ab06f8860038faf344f0d288d325cc9c5d2ff"}, + {file = "watchfiles-1.0.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e0611d244ce94d83f5b9aff441ad196c6e21b55f77f3c47608dcf651efe54c4a"}, + {file = "watchfiles-1.0.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9745a4210b59e218ce64c91deb599ae8775c8a9da4e95fb2ee6fe745fc87d01a"}, + {file = "watchfiles-1.0.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4810ea2ae622add560f4aa50c92fef975e475f7ac4900ce5ff5547b2434642d8"}, + {file = "watchfiles-1.0.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:740d103cd01458f22462dedeb5a3382b7f2c57d07ff033fbc9465919e5e1d0f3"}, + {file = "watchfiles-1.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdbd912a61543a36aef85e34f212e5d2486e7c53ebfdb70d1e0b060cc50dd0bf"}, + {file = "watchfiles-1.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0bc80d91ddaf95f70258cf78c471246846c1986bcc5fd33ccc4a1a67fcb40f9a"}, + {file = "watchfiles-1.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ab0311bb2ffcd9f74b6c9de2dda1612c13c84b996d032cd74799adb656af4e8b"}, + {file = "watchfiles-1.0.4-cp39-cp39-win32.whl", hash = "sha256:02a526ee5b5a09e8168314c905fc545c9bc46509896ed282aeb5a8ba9bd6ca27"}, + {file = "watchfiles-1.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:a5ae5706058b27c74bac987d615105da17724172d5aaacc6c362a40599b6de43"}, + {file = "watchfiles-1.0.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cdcc92daeae268de1acf5b7befcd6cfffd9a047098199056c72e4623f531de18"}, + {file = "watchfiles-1.0.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d8d3d9203705b5797f0af7e7e5baa17c8588030aaadb7f6a86107b7247303817"}, + {file = "watchfiles-1.0.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bdef5a1be32d0b07dcea3318a0be95d42c98ece24177820226b56276e06b63b0"}, + {file = "watchfiles-1.0.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:342622287b5604ddf0ed2d085f3a589099c9ae8b7331df3ae9845571586c4f3d"}, + {file = "watchfiles-1.0.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9fe37a2de80aa785d340f2980276b17ef697ab8db6019b07ee4fd28a8359d2f3"}, + {file = "watchfiles-1.0.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:9d1ef56b56ed7e8f312c934436dea93bfa3e7368adfcf3df4c0da6d4de959a1e"}, + {file = "watchfiles-1.0.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95b42cac65beae3a362629950c444077d1b44f1790ea2772beaea95451c086bb"}, + {file = "watchfiles-1.0.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e0227b8ed9074c6172cf55d85b5670199c99ab11fd27d2c473aa30aec67ee42"}, + {file = "watchfiles-1.0.4.tar.gz", hash = "sha256:6ba473efd11062d73e4f00c2b730255f9c1bdd73cd5f9fe5b5da8dbd4a717205"}, ] [package.dependencies] @@ -2143,81 +2541,81 @@ anyio = ">=3.0.0" [[package]] name = "websockets" -version = "11.0.3" +version = "14.2" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" optional = false -python-versions = ">=3.7" -files = [ - {file = "websockets-11.0.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3ccc8a0c387629aec40f2fc9fdcb4b9d5431954f934da3eaf16cdc94f67dbfac"}, - {file = "websockets-11.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d67ac60a307f760c6e65dad586f556dde58e683fab03323221a4e530ead6f74d"}, - {file = "websockets-11.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:84d27a4832cc1a0ee07cdcf2b0629a8a72db73f4cf6de6f0904f6661227f256f"}, - {file = "websockets-11.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffd7dcaf744f25f82190856bc26ed81721508fc5cbf2a330751e135ff1283564"}, - {file = "websockets-11.0.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7622a89d696fc87af8e8d280d9b421db5133ef5b29d3f7a1ce9f1a7bf7fcfa11"}, - {file = "websockets-11.0.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bceab846bac555aff6427d060f2fcfff71042dba6f5fca7dc4f75cac815e57ca"}, - {file = "websockets-11.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:54c6e5b3d3a8936a4ab6870d46bdd6ec500ad62bde9e44462c32d18f1e9a8e54"}, - {file = "websockets-11.0.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:41f696ba95cd92dc047e46b41b26dd24518384749ed0d99bea0a941ca87404c4"}, - {file = "websockets-11.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:86d2a77fd490ae3ff6fae1c6ceaecad063d3cc2320b44377efdde79880e11526"}, - {file = "websockets-11.0.3-cp310-cp310-win32.whl", hash = "sha256:2d903ad4419f5b472de90cd2d40384573b25da71e33519a67797de17ef849b69"}, - {file = "websockets-11.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:1d2256283fa4b7f4c7d7d3e84dc2ece74d341bce57d5b9bf385df109c2a1a82f"}, - {file = "websockets-11.0.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e848f46a58b9fcf3d06061d17be388caf70ea5b8cc3466251963c8345e13f7eb"}, - {file = "websockets-11.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aa5003845cdd21ac0dc6c9bf661c5beddd01116f6eb9eb3c8e272353d45b3288"}, - {file = "websockets-11.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b58cbf0697721120866820b89f93659abc31c1e876bf20d0b3d03cef14faf84d"}, - {file = "websockets-11.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:660e2d9068d2bedc0912af508f30bbeb505bbbf9774d98def45f68278cea20d3"}, - {file = "websockets-11.0.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c1f0524f203e3bd35149f12157438f406eff2e4fb30f71221c8a5eceb3617b6b"}, - {file = "websockets-11.0.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:def07915168ac8f7853812cc593c71185a16216e9e4fa886358a17ed0fd9fcf6"}, - {file = "websockets-11.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b30c6590146e53149f04e85a6e4fcae068df4289e31e4aee1fdf56a0dead8f97"}, - {file = "websockets-11.0.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:619d9f06372b3a42bc29d0cd0354c9bb9fb39c2cbc1a9c5025b4538738dbffaf"}, - {file = "websockets-11.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:01f5567d9cf6f502d655151645d4e8b72b453413d3819d2b6f1185abc23e82dd"}, - {file = "websockets-11.0.3-cp311-cp311-win32.whl", hash = "sha256:e1459677e5d12be8bbc7584c35b992eea142911a6236a3278b9b5ce3326f282c"}, - {file = "websockets-11.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:e7837cb169eca3b3ae94cc5787c4fed99eef74c0ab9506756eea335e0d6f3ed8"}, - {file = "websockets-11.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9f59a3c656fef341a99e3d63189852be7084c0e54b75734cde571182c087b152"}, - {file = "websockets-11.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2529338a6ff0eb0b50c7be33dc3d0e456381157a31eefc561771ee431134a97f"}, - {file = "websockets-11.0.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34fd59a4ac42dff6d4681d8843217137f6bc85ed29722f2f7222bd619d15e95b"}, - {file = "websockets-11.0.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:332d126167ddddec94597c2365537baf9ff62dfcc9db4266f263d455f2f031cb"}, - {file = "websockets-11.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6505c1b31274723ccaf5f515c1824a4ad2f0d191cec942666b3d0f3aa4cb4007"}, - {file = "websockets-11.0.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f467ba0050b7de85016b43f5a22b46383ef004c4f672148a8abf32bc999a87f0"}, - {file = "websockets-11.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9d9acd80072abcc98bd2c86c3c9cd4ac2347b5a5a0cae7ed5c0ee5675f86d9af"}, - {file = "websockets-11.0.3-cp37-cp37m-win32.whl", hash = "sha256:e590228200fcfc7e9109509e4d9125eace2042fd52b595dd22bbc34bb282307f"}, - {file = "websockets-11.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:b16fff62b45eccb9c7abb18e60e7e446998093cdcb50fed33134b9b6878836de"}, - {file = "websockets-11.0.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fb06eea71a00a7af0ae6aefbb932fb8a7df3cb390cc217d51a9ad7343de1b8d0"}, - {file = "websockets-11.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8a34e13a62a59c871064dfd8ffb150867e54291e46d4a7cf11d02c94a5275bae"}, - {file = "websockets-11.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4841ed00f1026dfbced6fca7d963c4e7043aa832648671b5138008dc5a8f6d99"}, - {file = "websockets-11.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a073fc9ab1c8aff37c99f11f1641e16da517770e31a37265d2755282a5d28aa"}, - {file = "websockets-11.0.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:68b977f21ce443d6d378dbd5ca38621755f2063d6fdb3335bda981d552cfff86"}, - {file = "websockets-11.0.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1a99a7a71631f0efe727c10edfba09ea6bee4166a6f9c19aafb6c0b5917d09c"}, - {file = "websockets-11.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:bee9fcb41db2a23bed96c6b6ead6489702c12334ea20a297aa095ce6d31370d0"}, - {file = "websockets-11.0.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4b253869ea05a5a073ebfdcb5cb3b0266a57c3764cf6fe114e4cd90f4bfa5f5e"}, - {file = "websockets-11.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1553cb82942b2a74dd9b15a018dce645d4e68674de2ca31ff13ebc2d9f283788"}, - {file = "websockets-11.0.3-cp38-cp38-win32.whl", hash = "sha256:f61bdb1df43dc9c131791fbc2355535f9024b9a04398d3bd0684fc16ab07df74"}, - {file = "websockets-11.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:03aae4edc0b1c68498f41a6772d80ac7c1e33c06c6ffa2ac1c27a07653e79d6f"}, - {file = "websockets-11.0.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:777354ee16f02f643a4c7f2b3eff8027a33c9861edc691a2003531f5da4f6bc8"}, - {file = "websockets-11.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8c82f11964f010053e13daafdc7154ce7385ecc538989a354ccc7067fd7028fd"}, - {file = "websockets-11.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3580dd9c1ad0701169e4d6fc41e878ffe05e6bdcaf3c412f9d559389d0c9e016"}, - {file = "websockets-11.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f1a3f10f836fab6ca6efa97bb952300b20ae56b409414ca85bff2ad241d2a61"}, - {file = "websockets-11.0.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df41b9bc27c2c25b486bae7cf42fccdc52ff181c8c387bfd026624a491c2671b"}, - {file = "websockets-11.0.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:279e5de4671e79a9ac877427f4ac4ce93751b8823f276b681d04b2156713b9dd"}, - {file = "websockets-11.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1fdf26fa8a6a592f8f9235285b8affa72748dc12e964a5518c6c5e8f916716f7"}, - {file = "websockets-11.0.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:69269f3a0b472e91125b503d3c0b3566bda26da0a3261c49f0027eb6075086d1"}, - {file = "websockets-11.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:97b52894d948d2f6ea480171a27122d77af14ced35f62e5c892ca2fae9344311"}, - {file = "websockets-11.0.3-cp39-cp39-win32.whl", hash = "sha256:c7f3cb904cce8e1be667c7e6fef4516b98d1a6a0635a58a57528d577ac18a128"}, - {file = "websockets-11.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c792ea4eabc0159535608fc5658a74d1a81020eb35195dd63214dcf07556f67e"}, - {file = "websockets-11.0.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:f2e58f2c36cc52d41f2659e4c0cbf7353e28c8c9e63e30d8c6d3494dc9fdedcf"}, - {file = "websockets-11.0.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de36fe9c02995c7e6ae6efe2e205816f5f00c22fd1fbf343d4d18c3d5ceac2f5"}, - {file = "websockets-11.0.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0ac56b661e60edd453585f4bd68eb6a29ae25b5184fd5ba51e97652580458998"}, - {file = "websockets-11.0.3-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e052b8467dd07d4943936009f46ae5ce7b908ddcac3fda581656b1b19c083d9b"}, - {file = "websockets-11.0.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:42cc5452a54a8e46a032521d7365da775823e21bfba2895fb7b77633cce031bb"}, - {file = "websockets-11.0.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e6316827e3e79b7b8e7d8e3b08f4e331af91a48e794d5d8b099928b6f0b85f20"}, - {file = "websockets-11.0.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8531fdcad636d82c517b26a448dcfe62f720e1922b33c81ce695d0edb91eb931"}, - {file = "websockets-11.0.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c114e8da9b475739dde229fd3bc6b05a6537a88a578358bc8eb29b4030fac9c9"}, - {file = "websockets-11.0.3-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e063b1865974611313a3849d43f2c3f5368093691349cf3c7c8f8f75ad7cb280"}, - {file = "websockets-11.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:92b2065d642bf8c0a82d59e59053dd2fdde64d4ed44efe4870fa816c1232647b"}, - {file = "websockets-11.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0ee68fe502f9031f19d495dae2c268830df2760c0524cbac5d759921ba8c8e82"}, - {file = "websockets-11.0.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcacf2c7a6c3a84e720d1bb2b543c675bf6c40e460300b628bab1b1efc7c034c"}, - {file = "websockets-11.0.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b67c6f5e5a401fc56394f191f00f9b3811fe843ee93f4a70df3c389d1adf857d"}, - {file = "websockets-11.0.3-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d5023a4b6a5b183dc838808087033ec5df77580485fc533e7dab2567851b0a4"}, - {file = "websockets-11.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ed058398f55163a79bb9f06a90ef9ccc063b204bb346c4de78efc5d15abfe602"}, - {file = "websockets-11.0.3-py3-none-any.whl", hash = "sha256:6681ba9e7f8f3b19440921e99efbb40fc89f26cd71bf539e45d8c8a25c976dc6"}, - {file = "websockets-11.0.3.tar.gz", hash = "sha256:88fc51d9a26b10fc331be344f1781224a375b78488fc343620184e95a4b27016"}, +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "websockets-14.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e8179f95323b9ab1c11723e5d91a89403903f7b001828161b480a7810b334885"}, + {file = "websockets-14.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0d8c3e2cdb38f31d8bd7d9d28908005f6fa9def3324edb9bf336d7e4266fd397"}, + {file = "websockets-14.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:714a9b682deb4339d39ffa674f7b674230227d981a37d5d174a4a83e3978a610"}, + {file = "websockets-14.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2e53c72052f2596fb792a7acd9704cbc549bf70fcde8a99e899311455974ca3"}, + {file = "websockets-14.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3fbd68850c837e57373d95c8fe352203a512b6e49eaae4c2f4088ef8cf21980"}, + {file = "websockets-14.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b27ece32f63150c268593d5fdb82819584831a83a3f5809b7521df0685cd5d8"}, + {file = "websockets-14.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4daa0faea5424d8713142b33825fff03c736f781690d90652d2c8b053345b0e7"}, + {file = "websockets-14.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:bc63cee8596a6ec84d9753fd0fcfa0452ee12f317afe4beae6b157f0070c6c7f"}, + {file = "websockets-14.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7a570862c325af2111343cc9b0257b7119b904823c675b22d4ac547163088d0d"}, + {file = "websockets-14.2-cp310-cp310-win32.whl", hash = "sha256:75862126b3d2d505e895893e3deac0a9339ce750bd27b4ba515f008b5acf832d"}, + {file = "websockets-14.2-cp310-cp310-win_amd64.whl", hash = "sha256:cc45afb9c9b2dc0852d5c8b5321759cf825f82a31bfaf506b65bf4668c96f8b2"}, + {file = "websockets-14.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3bdc8c692c866ce5fefcaf07d2b55c91d6922ac397e031ef9b774e5b9ea42166"}, + {file = "websockets-14.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c93215fac5dadc63e51bcc6dceca72e72267c11def401d6668622b47675b097f"}, + {file = "websockets-14.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1c9b6535c0e2cf8a6bf938064fb754aaceb1e6a4a51a80d884cd5db569886910"}, + {file = "websockets-14.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a52a6d7cf6938e04e9dceb949d35fbdf58ac14deea26e685ab6368e73744e4c"}, + {file = "websockets-14.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9f05702e93203a6ff5226e21d9b40c037761b2cfb637187c9802c10f58e40473"}, + {file = "websockets-14.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22441c81a6748a53bfcb98951d58d1af0661ab47a536af08920d129b4d1c3473"}, + {file = "websockets-14.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd9b868d78b194790e6236d9cbc46d68aba4b75b22497eb4ab64fa640c3af56"}, + {file = "websockets-14.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1a5a20d5843886d34ff8c57424cc65a1deda4375729cbca4cb6b3353f3ce4142"}, + {file = "websockets-14.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:34277a29f5303d54ec6468fb525d99c99938607bc96b8d72d675dee2b9f5bf1d"}, + {file = "websockets-14.2-cp311-cp311-win32.whl", hash = "sha256:02687db35dbc7d25fd541a602b5f8e451a238ffa033030b172ff86a93cb5dc2a"}, + {file = "websockets-14.2-cp311-cp311-win_amd64.whl", hash = "sha256:862e9967b46c07d4dcd2532e9e8e3c2825e004ffbf91a5ef9dde519ee2effb0b"}, + {file = "websockets-14.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1f20522e624d7ffbdbe259c6b6a65d73c895045f76a93719aa10cd93b3de100c"}, + {file = "websockets-14.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:647b573f7d3ada919fd60e64d533409a79dcf1ea21daeb4542d1d996519ca967"}, + {file = "websockets-14.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6af99a38e49f66be5a64b1e890208ad026cda49355661549c507152113049990"}, + {file = "websockets-14.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:091ab63dfc8cea748cc22c1db2814eadb77ccbf82829bac6b2fbe3401d548eda"}, + {file = "websockets-14.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b374e8953ad477d17e4851cdc66d83fdc2db88d9e73abf755c94510ebddceb95"}, + {file = "websockets-14.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a39d7eceeea35db85b85e1169011bb4321c32e673920ae9c1b6e0978590012a3"}, + {file = "websockets-14.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0a6f3efd47ffd0d12080594f434faf1cd2549b31e54870b8470b28cc1d3817d9"}, + {file = "websockets-14.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:065ce275e7c4ffb42cb738dd6b20726ac26ac9ad0a2a48e33ca632351a737267"}, + {file = "websockets-14.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e9d0e53530ba7b8b5e389c02282f9d2aa47581514bd6049d3a7cffe1385cf5fe"}, + {file = "websockets-14.2-cp312-cp312-win32.whl", hash = "sha256:20e6dd0984d7ca3037afcb4494e48c74ffb51e8013cac71cf607fffe11df7205"}, + {file = "websockets-14.2-cp312-cp312-win_amd64.whl", hash = "sha256:44bba1a956c2c9d268bdcdf234d5e5ff4c9b6dc3e300545cbe99af59dda9dcce"}, + {file = "websockets-14.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6f1372e511c7409a542291bce92d6c83320e02c9cf392223272287ce55bc224e"}, + {file = "websockets-14.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4da98b72009836179bb596a92297b1a61bb5a830c0e483a7d0766d45070a08ad"}, + {file = "websockets-14.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8a86a269759026d2bde227652b87be79f8a734e582debf64c9d302faa1e9f03"}, + {file = "websockets-14.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:86cf1aaeca909bf6815ea714d5c5736c8d6dd3a13770e885aafe062ecbd04f1f"}, + {file = "websockets-14.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9b0f6c3ba3b1240f602ebb3971d45b02cc12bd1845466dd783496b3b05783a5"}, + {file = "websockets-14.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:669c3e101c246aa85bc8534e495952e2ca208bd87994650b90a23d745902db9a"}, + {file = "websockets-14.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eabdb28b972f3729348e632ab08f2a7b616c7e53d5414c12108c29972e655b20"}, + {file = "websockets-14.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2066dc4cbcc19f32c12a5a0e8cc1b7ac734e5b64ac0a325ff8353451c4b15ef2"}, + {file = "websockets-14.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ab95d357cd471df61873dadf66dd05dd4709cae001dd6342edafc8dc6382f307"}, + {file = "websockets-14.2-cp313-cp313-win32.whl", hash = "sha256:a9e72fb63e5f3feacdcf5b4ff53199ec8c18d66e325c34ee4c551ca748623bbc"}, + {file = "websockets-14.2-cp313-cp313-win_amd64.whl", hash = "sha256:b439ea828c4ba99bb3176dc8d9b933392a2413c0f6b149fdcba48393f573377f"}, + {file = "websockets-14.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7cd5706caec1686c5d233bc76243ff64b1c0dc445339bd538f30547e787c11fe"}, + {file = "websockets-14.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ec607328ce95a2f12b595f7ae4c5d71bf502212bddcea528290b35c286932b12"}, + {file = "websockets-14.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:da85651270c6bfb630136423037dd4975199e5d4114cae6d3066641adcc9d1c7"}, + {file = "websockets-14.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3ecadc7ce90accf39903815697917643f5b7cfb73c96702318a096c00aa71f5"}, + {file = "websockets-14.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1979bee04af6a78608024bad6dfcc0cc930ce819f9e10342a29a05b5320355d0"}, + {file = "websockets-14.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dddacad58e2614a24938a50b85969d56f88e620e3f897b7d80ac0d8a5800258"}, + {file = "websockets-14.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:89a71173caaf75fa71a09a5f614f450ba3ec84ad9fca47cb2422a860676716f0"}, + {file = "websockets-14.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:6af6a4b26eea4fc06c6818a6b962a952441e0e39548b44773502761ded8cc1d4"}, + {file = "websockets-14.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:80c8efa38957f20bba0117b48737993643204645e9ec45512579132508477cfc"}, + {file = "websockets-14.2-cp39-cp39-win32.whl", hash = "sha256:2e20c5f517e2163d76e2729104abc42639c41cf91f7b1839295be43302713661"}, + {file = "websockets-14.2-cp39-cp39-win_amd64.whl", hash = "sha256:b4c8cef610e8d7c70dea92e62b6814a8cd24fbd01d7103cc89308d2bfe1659ef"}, + {file = "websockets-14.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:d7d9cafbccba46e768be8a8ad4635fa3eae1ffac4c6e7cb4eb276ba41297ed29"}, + {file = "websockets-14.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c76193c1c044bd1e9b3316dcc34b174bbf9664598791e6fb606d8d29000e070c"}, + {file = "websockets-14.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd475a974d5352390baf865309fe37dec6831aafc3014ffac1eea99e84e83fc2"}, + {file = "websockets-14.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2c6c0097a41968b2e2b54ed3424739aab0b762ca92af2379f152c1aef0187e1c"}, + {file = "websockets-14.2-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d7ff794c8b36bc402f2e07c0b2ceb4a2424147ed4785ff03e2a7af03711d60a"}, + {file = "websockets-14.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:dec254fcabc7bd488dab64846f588fc5b6fe0d78f641180030f8ea27b76d72c3"}, + {file = "websockets-14.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:bbe03eb853e17fd5b15448328b4ec7fb2407d45fb0245036d06a3af251f8e48f"}, + {file = "websockets-14.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a3c4aa3428b904d5404a0ed85f3644d37e2cb25996b7f096d77caeb0e96a3b42"}, + {file = "websockets-14.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:577a4cebf1ceaf0b65ffc42c54856214165fb8ceeba3935852fc33f6b0c55e7f"}, + {file = "websockets-14.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad1c1d02357b7665e700eca43a31d52814ad9ad9b89b58118bdabc365454b574"}, + {file = "websockets-14.2-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f390024a47d904613577df83ba700bd189eedc09c57af0a904e5c39624621270"}, + {file = "websockets-14.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3c1426c021c38cf92b453cdf371228d3430acd775edee6bac5a4d577efc72365"}, + {file = "websockets-14.2-py3-none-any.whl", hash = "sha256:7a6ceec4ea84469f15cf15807a747e9efe57e369c384fa86e022b3bea679b79b"}, + {file = "websockets-14.2.tar.gz", hash = "sha256:5059ed9c54945efb321f097084b4c7e52c246f2c869815876a69d1efc4ad6eb5"}, ] [[package]] @@ -2226,6 +2624,7 @@ version = "2.1.2" description = "The comprehensive WSGI web application library." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "Werkzeug-2.1.2-py3-none-any.whl", hash = "sha256:72a4b735692dd3135217911cbeaa1be5fa3f62bffb8745c5215420a03dc55255"}, {file = "Werkzeug-2.1.2.tar.gz", hash = "sha256:1ce08e8093ed67d638d63879fd1ba3735817f7a80de3674d293f5984f25fb6e6"}, @@ -2240,6 +2639,7 @@ version = "1.2.0" description = "WebSockets state-machine based protocol implementation" optional = false python-versions = ">=3.7.0" +groups = ["main"] files = [ {file = "wsproto-1.2.0-py3-none-any.whl", hash = "sha256:b9acddd652b585d75b20477888c56642fdade28bdfd3579aa24a4d2c037dd736"}, {file = "wsproto-1.2.0.tar.gz", hash = "sha256:ad565f26ecb92588a3e43bc3d96164de84cd9902482b130d0ddbaa9664a85065"}, @@ -2254,6 +2654,8 @@ version = "3.15.0" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.7" +groups = ["main"] +markers = "python_version < \"3.10\"" files = [ {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"}, {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"}, @@ -2264,6 +2666,6 @@ docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [metadata] -lock-version = "2.0" +lock-version = "2.1" python-versions = "^3.9" -content-hash = "629118cfac10f1dab4c39c6ccd50bd69ca68a7fc05dd2baf1d020082d6b19e4e" +content-hash = "ce11f3670471f6ab3537180188001140700188469fbc1a03a25a630b2c6abbef" diff --git a/docs/pyproject.toml b/docs/pyproject.toml index f47b0e944..3be4b4a8a 100644 --- a/docs/pyproject.toml +++ b/docs/pyproject.toml @@ -7,8 +7,8 @@ readme = "README.md" [tool.poetry.dependencies] python = "^3.9" -reactpy = { path = "../src/py/reactpy", extras = ["starlette", "sanic", "fastapi", "flask", "tornado", "testing"], develop = false } furo = "2022.04.07" +reactpy = { path = "..", extras = ["all"], develop = false } sphinx = "*" sphinx-autodoc-typehints = "*" sphinx-copybutton = "*" diff --git a/docs/source/_custom_js/package-lock.json b/docs/source/_custom_js/package-lock.json index 98cbb7014..d027dd11c 100644 --- a/docs/source/_custom_js/package-lock.json +++ b/docs/source/_custom_js/package-lock.json @@ -60,21 +60,20 @@ } }, "../../../src/js/packages/@reactpy/client": { - "version": "0.3.1", + "version": "0.3.2", "license": "MIT", "dependencies": { - "event-to-object": "^0.1.2", - "json-pointer": "^0.6.2" + "json-pointer": "^0.6.2", + "preact": "^10.25.4" }, "devDependencies": { "@types/json-pointer": "^1.0.31", "@types/react": "^17.0", "@types/react-dom": "^17.0", - "typescript": "^4.9.5" + "typescript": "^5.7.3" }, "peerDependencies": { - "react": ">=16 <18", - "react-dom": ">=16 <18" + "event-to-object": "<1.0.0" } }, "node_modules/@reactpy/client": { @@ -458,9 +457,9 @@ "@types/json-pointer": "^1.0.31", "@types/react": "^17.0", "@types/react-dom": "^17.0", - "event-to-object": "^0.1.2", "json-pointer": "^0.6.2", - "typescript": "^4.9.5" + "preact": "^10.25.4", + "typescript": "^5.7.3" } }, "@rollup/plugin-commonjs": { diff --git a/docs/source/_exts/autogen_api_docs.py b/docs/source/_exts/autogen_api_docs.py index b95d85a99..4aecb30bd 100644 --- a/docs/source/_exts/autogen_api_docs.py +++ b/docs/source/_exts/autogen_api_docs.py @@ -8,7 +8,7 @@ HERE = Path(__file__).parent SRC = HERE.parent.parent.parent / "src" -PYTHON_PACKAGE = SRC / "py" / "reactpy" / "reactpy" +PYTHON_PACKAGE = SRC / "reactpy" AUTO_DIR = HERE.parent / "_auto" AUTO_DIR.mkdir(exist_ok=True) diff --git a/pyproject.toml b/pyproject.toml index 530d1a388..a40e260b3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -132,20 +132,39 @@ cov = ["test-cov {args}", "cov-report"] [tool.hatch.envs.default.env-vars] REACTPY_DEBUG_MODE = "1" +####################################### +# >>> Hatch Documentation Scripts <<< # +####################################### +[tool.hatch.envs.docs] +template = "docs" +dependencies = ["poetry"] +detached = true + +[tool.hatch.envs.docs.scripts] +build = [ + "cd docs && poetry install", + "cd docs && poetry run sphinx-build -a -T -W --keep-going -b doctest source build", +] +docker_build = [ + "hatch run docs:build", + "cd docs && docker build . --file ./docs/Dockerfile --tag reactpy-docs:latest", +] +check = [ + "cd docs && poetry install", + "cd docs && poetry run sphinx-build -a -T -W --keep-going -b doctest source build", + "cd docs && docker build . --file docs/Dockerfile", +] + ################################ # >>> Hatch Python Scripts <<< # ################################ -[tool.hatch.envs.lint] +[tool.hatch.envs.python] extra-dependencies = [ - "black==24.1.1", - "ruff==0.0.278", - "flake8==7.0.0", + "ruff", "toml", - "flake8-pyproject", - "mypy", - "types-toml", "mypy==1.8", + "types-toml", "types-click", "types-tornado", "types-flask", @@ -153,8 +172,8 @@ extra-dependencies = [ ] [tool.hatch.envs.python.scripts] -# TODO: Replace mypy with pylint -type_check = "mypy --strict src/reactpy" +# TODO: Replace mypy with pyright +check = ["mypy --strict src/reactpy", "hatch fmt src/reactpy --check"] ############################ # >>> Hatch JS Scripts <<< # @@ -236,7 +255,7 @@ omit = ["reactpy/__main__.py"] [tool.ruff] target-version = "py39" line-length = 88 -select = [ +lint.select = [ "A", "ARG", "B", @@ -250,7 +269,6 @@ select = [ # "FBT", "I", "ICN", - "ISC", "N", "PLC", "PLE", @@ -265,7 +283,7 @@ select = [ "W", "YTT", ] -ignore = [ +lint.ignore = [ # TODO: turn this on later "N802", "N806", # allow TitleCase functions/variables @@ -299,22 +317,22 @@ ignore = [ "PLR0913", "PLR0915", ] -unfixable = [ +lint.unfixable = [ # Don't touch unused imports "F401", ] -[tool.ruff.isort] +[tool.ruff.lint.isort] known-first-party = ["reactpy"] -[tool.ruff.flake8-tidy-imports] +[tool.ruff.lint.flake8-tidy-imports] ban-relative-imports = "all" [tool.flake8] select = ["RPY"] # only need to check with reactpy-flake8 exclude = ["**/node_modules/*", ".eggs/*", ".tox/*", "**/venv/*"] -[tool.ruff.per-file-ignores] +[tool.ruff.lint.per-file-ignores] # Tests can use magic values, assertions, and relative imports "**/tests/**/*" = ["PLR2004", "S101", "TID252"] "docs/**/*.py" = [ diff --git a/src/reactpy/_console/rewrite_camel_case_props.py b/src/reactpy/_console/rewrite_camel_case_props.py index d706adecf..12c96c4f3 100644 --- a/src/reactpy/_console/rewrite_camel_case_props.py +++ b/src/reactpy/_console/rewrite_camel_case_props.py @@ -2,7 +2,6 @@ import ast import re -import sys from copy import copy from keyword import kwlist from pathlib import Path @@ -23,9 +22,6 @@ @click.argument("paths", nargs=-1, type=click.Path(exists=True)) def rewrite_camel_case_props(paths: list[str]) -> None: """Rewrite camelCase props to snake_case""" - if sys.version_info < (3, 9): # nocov - msg = "This command requires Python>=3.9" - raise RuntimeError(msg) for p in map(Path, paths): for f in [p] if p.is_file() else p.rglob("*.py"): diff --git a/src/reactpy/_console/rewrite_keys.py b/src/reactpy/_console/rewrite_keys.py index 08db9e227..6f7a42f1e 100644 --- a/src/reactpy/_console/rewrite_keys.py +++ b/src/reactpy/_console/rewrite_keys.py @@ -1,7 +1,6 @@ from __future__ import annotations import ast -import sys from pathlib import Path import click @@ -45,9 +44,6 @@ def rewrite_keys(paths: list[str]) -> None: just above its changes. As such it requires manual intervention to put those comments back in their original location. """ - if sys.version_info < (3, 9): # nocov - msg = "This command requires Python>=3.9" - raise RuntimeError(msg) for p in map(Path, paths): for f in [p] if p.is_file() else p.rglob("*.py"): diff --git a/src/reactpy/_warnings.py b/src/reactpy/_warnings.py index c4520604d..dc6d2fa1f 100644 --- a/src/reactpy/_warnings.py +++ b/src/reactpy/_warnings.py @@ -13,7 +13,7 @@ def warn(*args: Any, **kwargs: Any) -> Any: if TYPE_CHECKING: - warn = _warn # noqa: F811 + warn = _warn def _frame_depth_in_module() -> int: diff --git a/src/reactpy/backend/tornado.py b/src/reactpy/backend/tornado.py index bd339c5b9..e585553e8 100644 --- a/src/reactpy/backend/tornado.py +++ b/src/reactpy/backend/tornado.py @@ -162,7 +162,7 @@ def _setup_single_view_dispatcher_route( ] -class IndexHandler(RequestHandler): +class IndexHandler(RequestHandler): # type: ignore _index_html: str def initialize(self, index_html: str) -> None: @@ -172,7 +172,7 @@ async def get(self, _: str) -> None: self.finish(self._index_html) -class ModelStreamHandler(WebSocketHandler): +class ModelStreamHandler(WebSocketHandler): # type: ignore """A web-socket handler that serves up a new model stream to each new client""" _dispatch_future: Future[None] @@ -202,7 +202,7 @@ async def recv() -> Any: value=Connection( scope=_FAKE_WSGI_CONTAINER.environ(self.request), location=Location( - pathname=f"/{path[len(self._url_prefix):]}", + pathname=f"/{path[len(self._url_prefix) :]}", search=( f"?{self.request.query}" if self.request.query diff --git a/src/reactpy/core/component.py b/src/reactpy/core/component.py index f825aac71..19eb99a94 100644 --- a/src/reactpy/core/component.py +++ b/src/reactpy/core/component.py @@ -8,7 +8,7 @@ def component( - function: Callable[..., ComponentType | VdomDict | str | None] + function: Callable[..., ComponentType | VdomDict | str | None], ) -> Callable[..., Component]: """A decorator for defining a new component. diff --git a/src/reactpy/core/events.py b/src/reactpy/core/events.py index 2a193ec6b..e906cefe8 100644 --- a/src/reactpy/core/events.py +++ b/src/reactpy/core/events.py @@ -48,8 +48,8 @@ def event( .. code-block:: python @event(stop_propagation=True, prevent_default=True) - def my_callback(*data): - ... + def my_callback(*data): ... + element = reactpy.html.button({"onClick": my_callback}) diff --git a/src/reactpy/core/vdom.py b/src/reactpy/core/vdom.py index e494b5269..dfff32805 100644 --- a/src/reactpy/core/vdom.py +++ b/src/reactpy/core/vdom.py @@ -282,7 +282,7 @@ def separate_attributes_and_children( def separate_attributes_and_event_handlers( - attributes: Mapping[str, Any] + attributes: Mapping[str, Any], ) -> tuple[dict[str, Any], EventHandlerDict]: separated_attributes = {} separated_event_handlers: dict[str, EventHandlerType] = {} @@ -295,8 +295,7 @@ def separate_attributes_and_event_handlers( elif ( # isinstance check on protocols is slow - use function attr pre-check as a # quick filter before actually performing slow EventHandlerType type check - hasattr(v, "function") - and isinstance(v, EventHandlerType) + hasattr(v, "function") and isinstance(v, EventHandlerType) ): handler = v else: diff --git a/src/reactpy/html.py b/src/reactpy/html.py index 22d318639..941af949f 100644 --- a/src/reactpy/html.py +++ b/src/reactpy/html.py @@ -458,6 +458,7 @@ def _script( .. code-block:: python import json + my_script = html.script(f"console.log({json.dumps(user_bio)});") This would prevent the injection of Javascript code by escaping the ``user_bio`` diff --git a/src/reactpy/testing/backend.py b/src/reactpy/testing/backend.py index b699f3071..3f56a5ecb 100644 --- a/src/reactpy/testing/backend.py +++ b/src/reactpy/testing/backend.py @@ -174,18 +174,22 @@ def _hotswap(update_on_change: bool = False) -> tuple[_MountFunc, ComponentConst show, root = reactpy.hotswap() PerClientStateServer(root).run_in_thread("localhost", 8765) + @reactpy.component def DivOne(self): return {"tagName": "div", "children": [1]} + show(DivOne) # displaying the output now will show DivOne + @reactpy.component def DivTwo(self): return {"tagName": "div", "children": [2]} + show(DivTwo) # displaying the output now will show DivTwo diff --git a/tests/test_console/test_rewrite_camel_case_props.py b/tests/test_console/test_rewrite_camel_case_props.py index ca928cf3b..af3a5dd4b 100644 --- a/tests/test_console/test_rewrite_camel_case_props.py +++ b/tests/test_console/test_rewrite_camel_case_props.py @@ -1,4 +1,3 @@ -import sys from pathlib import Path from textwrap import dedent @@ -10,9 +9,6 @@ rewrite_camel_case_props, ) -if sys.version_info < (3, 9): - pytestmark = pytest.mark.skip(reason="ast.unparse is Python>=3.9") - def test_rewrite_camel_case_props_declarations(tmp_path): runner = CliRunner() diff --git a/tests/test_console/test_rewrite_keys.py b/tests/test_console/test_rewrite_keys.py index 95c49a019..01feb34c3 100644 --- a/tests/test_console/test_rewrite_keys.py +++ b/tests/test_console/test_rewrite_keys.py @@ -1,4 +1,3 @@ -import sys from pathlib import Path from textwrap import dedent @@ -7,9 +6,6 @@ from reactpy._console.rewrite_keys import generate_rewrite, rewrite_keys -if sys.version_info < (3, 9): - pytestmark = pytest.mark.skip(reason="ast.unparse is Python>=3.9") - def test_rewrite_key_declarations(tmp_path): runner = CliRunner() From 77f41d357cfeed772b4cefce6e7c33b5cc11a243 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Sun, 19 Jan 2025 21:15:46 -0800 Subject: [PATCH 18/30] reduce coverage percent --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a40e260b3..37ec9aa80 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -240,7 +240,7 @@ parallel = false omit = ["reactpy/__init__.py"] [tool.coverage.report] -fail_under = 100 +fail_under = 95 show_missing = true skip_covered = true sort = "Name" From 288dde59cbe2253b65eb1a4762762e694a0868a2 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Sun, 19 Jan 2025 21:55:12 -0800 Subject: [PATCH 19/30] attempt some CI fixes --- pyproject.toml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 37ec9aa80..9de7656d5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -152,7 +152,7 @@ docker_build = [ check = [ "cd docs && poetry install", "cd docs && poetry run sphinx-build -a -T -W --keep-going -b doctest source build", - "cd docs && docker build . --file docs/Dockerfile", + "cd docs && docker build . --file Dockerfile", ] ################################ @@ -184,6 +184,7 @@ detached = true [tool.hatch.envs.javascript.scripts] check = [ + 'hatch run javascript:build', 'bun install --cwd "src/js"', 'bun run --cwd "src/js" lint', 'bun run --cwd "src/js/packages/event-to-object" checkTypes', @@ -192,7 +193,7 @@ check = [ ] fix = ['bun install --cwd "src/js"', 'bun run --cwd "src/js" format'] test = [ - 'bun install --cwd "src/js"', + 'hatch run javascript:build_event_to_object', 'bun run --cwd "src/js/packages/event-to-object" test', ] build = [ From 0bf34a3f2b4f7e756da1dc1a1beee5a79e508c83 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Sun, 19 Jan 2025 22:56:30 -0800 Subject: [PATCH 20/30] docs serve cmd --- pyproject.toml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 9de7656d5..8a85f44a6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -154,6 +154,10 @@ check = [ "cd docs && poetry run sphinx-build -a -T -W --keep-going -b doctest source build", "cd docs && docker build . --file Dockerfile", ] +serve = [ + "cd docs && poetry install", + "cd docs && poetry run python main.py --watch=../src/ --ignore=**/_auto/* --ignore=**/custom.js --ignore=**/node_modules/* --ignore=**/package-lock.json -a -E -b html source build", +] ################################ # >>> Hatch Python Scripts <<< # From 1d824a6bca16ca89412a8758dcb67f34dc0859c8 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Sun, 19 Jan 2025 23:40:12 -0800 Subject: [PATCH 21/30] Attempt fixes for docker build --- docs/Dockerfile | 11 +++++------ pyproject.toml | 4 ++-- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/docs/Dockerfile b/docs/Dockerfile index 7a5d49b7b..cf388c8e3 100644 --- a/docs/Dockerfile +++ b/docs/Dockerfile @@ -5,10 +5,9 @@ RUN apt-get update # Install NodeJS # -------------- -RUN curl -SLO https://deb.nodesource.com/nsolid_setup_deb.sh -RUN chmod 500 nsolid_setup_deb.sh -RUN ./nsolid_setup_deb.sh 20 -RUN apt-get install nodejs -y +RUN curl -fsSL https://deb.nodesource.com/setup_20.x -o nodesource_setup.sh +RUN bash nodesource_setup.sh +RUN apt-get install -y nodejs # Install Poetry # -------------- @@ -36,7 +35,7 @@ RUN sphinx-build -v -W -b html source build # Define Entrypoint # ----------------- -ENV PORT 5000 +ENV PORT=5000 ENV REACTPY_DEBUG_MODE=1 ENV REACTPY_CHECK_VDOM_SPEC=0 -CMD python main.py +CMD ["python", "main.py"] diff --git a/pyproject.toml b/pyproject.toml index 8a85f44a6..35fb596fb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -147,12 +147,12 @@ build = [ ] docker_build = [ "hatch run docs:build", - "cd docs && docker build . --file ./docs/Dockerfile --tag reactpy-docs:latest", + "docker build . --file ./docs/Dockerfile --tag reactpy-docs:latest", ] check = [ "cd docs && poetry install", "cd docs && poetry run sphinx-build -a -T -W --keep-going -b doctest source build", - "cd docs && docker build . --file Dockerfile", + "docker build . --file ./docs/Dockerfile", ] serve = [ "cd docs && poetry install", From c33b8432e326eb695f3731d0169026e62736238f Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Mon, 20 Jan 2025 00:43:42 -0800 Subject: [PATCH 22/30] Attempt at fixing poetry install --- docs/Dockerfile | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/Dockerfile b/docs/Dockerfile index cf388c8e3..67d797890 100644 --- a/docs/Dockerfile +++ b/docs/Dockerfile @@ -5,9 +5,10 @@ RUN apt-get update # Install NodeJS # -------------- -RUN curl -fsSL https://deb.nodesource.com/setup_20.x -o nodesource_setup.sh -RUN bash nodesource_setup.sh -RUN apt-get install -y nodejs +RUN curl -SLO https://deb.nodesource.com/nsolid_setup_deb.sh +RUN chmod 500 nsolid_setup_deb.sh +RUN ./nsolid_setup_deb.sh 20 +RUN apt-get install nodejs -y # Install Poetry # -------------- @@ -29,8 +30,8 @@ COPY branding ./branding # Install and Build Docs # ---------------------- -WORKDIR /app/docs -RUN poetry install +WORKDIR /app/docs/ +RUN poetry install -v RUN sphinx-build -v -W -b html source build # Define Entrypoint From 00797390dc2fe939942e05293e4474b431aeec99 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Mon, 20 Jan 2025 00:51:22 -0800 Subject: [PATCH 23/30] copy more stuff --- docs/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/Dockerfile b/docs/Dockerfile index 67d797890..8d242019f 100644 --- a/docs/Dockerfile +++ b/docs/Dockerfile @@ -24,6 +24,8 @@ RUN pip install --upgrade pip # Copy Files # ---------- COPY LICENSE ./ +COPY README.md ./ +COPY pyproject.toml ./ COPY src ./src COPY docs ./docs COPY branding ./branding From 4f9e6443947c6175dfbf5eee86bf16fdfe03f892 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Mon, 20 Jan 2025 00:55:28 -0800 Subject: [PATCH 24/30] fix hatch dep for docker --- docs/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Dockerfile b/docs/Dockerfile index 8d242019f..5b5161ba0 100644 --- a/docs/Dockerfile +++ b/docs/Dockerfile @@ -12,7 +12,7 @@ RUN apt-get install nodejs -y # Install Poetry # -------------- -RUN pip install poetry +RUN pip install --upgrade poetry hatch uv # Create/Activate Python Venv # --------------------------- From 51e67f82fb8810dcd402e3e67c2c6b94f3e2b12d Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Mon, 20 Jan 2025 00:59:27 -0800 Subject: [PATCH 25/30] Install bun in docker image --- docs/Dockerfile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/Dockerfile b/docs/Dockerfile index 5b5161ba0..5a6e8dfea 100644 --- a/docs/Dockerfile +++ b/docs/Dockerfile @@ -5,21 +5,21 @@ RUN apt-get update # Install NodeJS # -------------- -RUN curl -SLO https://deb.nodesource.com/nsolid_setup_deb.sh +RUN curl -fsSL https://deb.nodesource.com/nsolid_setup_deb.sh RUN chmod 500 nsolid_setup_deb.sh RUN ./nsolid_setup_deb.sh 20 RUN apt-get install nodejs -y -# Install Poetry -# -------------- -RUN pip install --upgrade poetry hatch uv - # Create/Activate Python Venv # --------------------------- ENV VIRTUAL_ENV=/opt/venv RUN python3 -m venv $VIRTUAL_ENV ENV PATH="$VIRTUAL_ENV/bin:$PATH" -RUN pip install --upgrade pip + +# Install Python Build +# --------------------------- +RUN pip install --upgrade pip poetry hatch uv +RUN curl -fsSL https://bun.sh/install | bash # Copy Files # ---------- From d35bc3d7f5e1ba33c60c2e838557e2b45b67d0da Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Mon, 20 Jan 2025 01:10:52 -0800 Subject: [PATCH 26/30] Try removing nsolid --- docs/Dockerfile | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/Dockerfile b/docs/Dockerfile index 5a6e8dfea..e3ffba9e5 100644 --- a/docs/Dockerfile +++ b/docs/Dockerfile @@ -5,10 +5,9 @@ RUN apt-get update # Install NodeJS # -------------- -RUN curl -fsSL https://deb.nodesource.com/nsolid_setup_deb.sh -RUN chmod 500 nsolid_setup_deb.sh -RUN ./nsolid_setup_deb.sh 20 -RUN apt-get install nodejs -y +RUN curl -fsSL https://deb.nodesource.com/setup_23.x -o nodesource_setup.sh +RUN bash nodesource_setup.sh +RUN apt-get install -y nodejs # Create/Activate Python Venv # --------------------------- From 7e5da83e0e181e3f4b0ab00155b714aa0422cbf2 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Mon, 20 Jan 2025 02:14:21 -0800 Subject: [PATCH 27/30] Switch docs to use bun --- docs/Dockerfile | 11 +- docs/source/_custom_js/README.md | 2 +- docs/source/_custom_js/bun.lockb | Bin 0 -> 14956 bytes docs/source/_custom_js/package-lock.json | 765 ----------------------- docs/source/_exts/build_custom_js.py | 4 +- pyproject.toml | 4 + 6 files changed, 10 insertions(+), 776 deletions(-) create mode 100644 docs/source/_custom_js/bun.lockb delete mode 100644 docs/source/_custom_js/package-lock.json diff --git a/docs/Dockerfile b/docs/Dockerfile index e3ffba9e5..98df7bbb6 100644 --- a/docs/Dockerfile +++ b/docs/Dockerfile @@ -3,22 +3,17 @@ WORKDIR /app/ RUN apt-get update -# Install NodeJS -# -------------- -RUN curl -fsSL https://deb.nodesource.com/setup_23.x -o nodesource_setup.sh -RUN bash nodesource_setup.sh -RUN apt-get install -y nodejs - # Create/Activate Python Venv # --------------------------- ENV VIRTUAL_ENV=/opt/venv RUN python3 -m venv $VIRTUAL_ENV ENV PATH="$VIRTUAL_ENV/bin:$PATH" -# Install Python Build -# --------------------------- +# Install Python Build Dependencies +# --------------------------------- RUN pip install --upgrade pip poetry hatch uv RUN curl -fsSL https://bun.sh/install | bash +ENV PATH="/root/.bun/bin:$PATH" # Copy Files # ---------- diff --git a/docs/source/_custom_js/README.md b/docs/source/_custom_js/README.md index 4d5d75dc2..ef30b9a76 100644 --- a/docs/source/_custom_js/README.md +++ b/docs/source/_custom_js/README.md @@ -3,7 +3,7 @@ Build the javascript with ``` -npm run build +bun run build ``` This will drop a javascript bundle into `../_static/custom.js` diff --git a/docs/source/_custom_js/bun.lockb b/docs/source/_custom_js/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..39e1393c33b8165f67ab06900647a529d92e1fc4 GIT binary patch literal 14956 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 <18", - "react-dom": ">=16 <18" - } - }, - "../../../src/client/packages/client": { - "name": "@reactpy/client", - "version": "0.2.0", - "extraneous": true, - "license": "MIT", - "dependencies": { - "event-to-object": "^0.1.0", - "json-pointer": "^0.6.2" - }, - "devDependencies": { - "@types/json-pointer": "^1.0.31", - "@types/react": "^17.0", - "@types/react-dom": "^17.0", - "prettier": "^3.0.0-alpha.6", - "typescript": "^4.9.5" - }, - "peerDependencies": { - "react": ">=16 <18", - "react-dom": ">=16 <18" - } - }, - "../../../src/js/packages/@reactpy/client": { - "version": "0.3.2", - "license": "MIT", - "dependencies": { - "json-pointer": "^0.6.2", - "preact": "^10.25.4" - }, - "devDependencies": { - "@types/json-pointer": "^1.0.31", - "@types/react": "^17.0", - "@types/react-dom": "^17.0", - "typescript": "^5.7.3" - }, - "peerDependencies": { - "event-to-object": "<1.0.0" - } - }, - "node_modules/@reactpy/client": { - "resolved": "../../../src/js/packages/@reactpy/client", - "link": true - }, - "node_modules/@rollup/plugin-commonjs": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", - "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "commondir": "^1.0.1", - "estree-walker": "^2.0.1", - "glob": "^7.1.6", - "is-reference": "^1.2.1", - "magic-string": "^0.25.7", - "resolve": "^1.17.0" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^2.38.3" - } - }, - "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.1.tgz", - "integrity": "sha512-6QKtRevXLrmEig9UiMYt2fSvee9TyltGRfw+qSs6xjUnxwjOzTOqy+/Lpxsgjb8mJn1EQNbCDAvt89O4uzL5kw==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "rollup": "^2.42.0" - } - }, - "node_modules/@rollup/plugin-node-resolve/node_modules/@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@rollup/plugin-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-3.0.0.tgz", - "integrity": "sha512-3c7JCbMuYXM4PbPWT4+m/4Y6U60SgsnDT/cCyAyUKwFHg7pTSfsSQzIpETha3a3ig6OdOKzZz87D9ZXIK3qsDg==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "magic-string": "^0.25.7" - }, - "peerDependencies": { - "rollup": "^1.20.0 || ^2.0.0" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@rollup/pluginutils/node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, - "node_modules/@rollup/pluginutils/node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - }, - "node_modules/@types/estree": { - "version": "0.0.48", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.48.tgz", - "integrity": "sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==", - "dev": true - }, - "node_modules/@types/node": { - "version": "15.12.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz", - "integrity": "sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww==", - "dev": true - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", - "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "node_modules/is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "dev": true, - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.4" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/prettier": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.1.tgz", - "integrity": "sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/rollup": { - "version": "2.52.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.52.1.tgz", - "integrity": "sha512-/SPqz8UGnp4P1hq6wc9gdTqA2bXQXGx13TtoL03GBm6qGRI6Hm3p4Io7GeiHNLl0BsQAne1JNYY+q/apcY933w==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - } - }, - "dependencies": { - "@reactpy/client": { - "version": "file:../../../src/js/packages/@reactpy/client", - "requires": { - "@types/json-pointer": "^1.0.31", - "@types/react": "^17.0", - "@types/react-dom": "^17.0", - "json-pointer": "^0.6.2", - "preact": "^10.25.4", - "typescript": "^5.7.3" - } - }, - "@rollup/plugin-commonjs": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", - "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "commondir": "^1.0.1", - "estree-walker": "^2.0.1", - "glob": "^7.1.6", - "is-reference": "^1.2.1", - "magic-string": "^0.25.7", - "resolve": "^1.17.0" - }, - "dependencies": { - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - } - } - }, - "@rollup/plugin-node-resolve": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.1.tgz", - "integrity": "sha512-6QKtRevXLrmEig9UiMYt2fSvee9TyltGRfw+qSs6xjUnxwjOzTOqy+/Lpxsgjb8mJn1EQNbCDAvt89O4uzL5kw==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - }, - "dependencies": { - "@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "requires": { - "@types/node": "*" - } - } - } - }, - "@rollup/plugin-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-3.0.0.tgz", - "integrity": "sha512-3c7JCbMuYXM4PbPWT4+m/4Y6U60SgsnDT/cCyAyUKwFHg7pTSfsSQzIpETha3a3ig6OdOKzZz87D9ZXIK3qsDg==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "magic-string": "^0.25.7" - } - }, - "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "dependencies": { - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - } - } - }, - "@types/estree": { - "version": "0.0.48", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.48.tgz", - "integrity": "sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==", - "dev": true - }, - "@types/node": { - "version": "15.12.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz", - "integrity": "sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "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" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "is-core-module": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", - "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "dev": true, - "requires": { - "@types/estree": "*" - } - }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - }, - "prettier": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.1.tgz", - "integrity": "sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA==", - "dev": true - }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "rollup": { - "version": "2.52.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.52.1.tgz", - "integrity": "sha512-/SPqz8UGnp4P1hq6wc9gdTqA2bXQXGx13TtoL03GBm6qGRI6Hm3p4Io7GeiHNLl0BsQAne1JNYY+q/apcY933w==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - } - } -} diff --git a/docs/source/_exts/build_custom_js.py b/docs/source/_exts/build_custom_js.py index 97857ba74..a12c5c7f7 100644 --- a/docs/source/_exts/build_custom_js.py +++ b/docs/source/_exts/build_custom_js.py @@ -8,5 +8,5 @@ def setup(app: Sphinx) -> None: - subprocess.run("npm install", cwd=CUSTOM_JS_DIR, shell=True) # noqa S607 - subprocess.run("npm run build", cwd=CUSTOM_JS_DIR, shell=True) # noqa S607 + subprocess.run("bun install", cwd=CUSTOM_JS_DIR, shell=True) # noqa S607 + subprocess.run("bun run build", cwd=CUSTOM_JS_DIR, shell=True) # noqa S607 diff --git a/pyproject.toml b/pyproject.toml index 35fb596fb..8514d4eaf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -149,6 +149,10 @@ docker_build = [ "hatch run docs:build", "docker build . --file ./docs/Dockerfile --tag reactpy-docs:latest", ] +docker_serve = [ + "hatch run docs:docker_build", + "docker run --rm -p 5000:5000 reactpy-docs:latest", +] check = [ "cd docs && poetry install", "cd docs && poetry run sphinx-build -a -T -W --keep-going -b doctest source build", From c0bf3ec70883df61e376f9ec6e451a0a48604692 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Mon, 20 Jan 2025 05:26:48 -0800 Subject: [PATCH 28/30] self review --- .github/workflows/check.yml | 12 ++++++------ docs/Dockerfile | 2 +- docs/source/about/changelog.rst | 2 +- pyproject.toml | 5 ++++- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 0f06a8b56..cd2889ab6 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -11,35 +11,35 @@ on: - cron: "0 0 * * 0" jobs: - test-py-cov: + test-python-coverage: uses: ./.github/workflows/.hatch-run.yml with: job-name: "python-{0}" run-cmd: "hatch test --cover" - lint-py: + lint-python: uses: ./.github/workflows/.hatch-run.yml with: job-name: "python-{0}" run-cmd: "hatch run python:check" - test-py-matrix: + test-python: uses: ./.github/workflows/.hatch-run.yml with: job-name: "python-{0} {1}" run-cmd: "hatch test" runs-on: '["ubuntu-latest", "macos-latest", "windows-latest"]' python-version: '["3.9", "3.10", "3.11"]' - test-docs: + test-documentation: uses: ./.github/workflows/.hatch-run.yml with: job-name: "python-{0}" run-cmd: "hatch run docs:check" python-version: '["3.11"]' - test-js: + test-javascript: uses: ./.github/workflows/.hatch-run.yml with: job-name: "{1}" run-cmd: "hatch run javascript:test" - lint-js: + lint-javascript: uses: ./.github/workflows/.hatch-run.yml with: job-name: "{1}" diff --git a/docs/Dockerfile b/docs/Dockerfile index 98df7bbb6..1f8bd0aaf 100644 --- a/docs/Dockerfile +++ b/docs/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.9 +FROM python:3.11 WORKDIR /app/ RUN apt-get update diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 5701765cb..7fbe4d961 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -20,7 +20,7 @@ Unreleased **Changed** -- Substitute ``react`` rendering on the client with ``preact``. +- :pull:`1251` Substitute ``react`` rendering on the client with ``preact``. v1.1.0 ------ diff --git a/pyproject.toml b/pyproject.toml index 8514d4eaf..c411664b0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,10 @@ description = "It's React, but in Python." readme = "README.md" keywords = ["react", "javascript", "reactpy", "component"] license = "MIT" -authors = [{ name = "Ryan Morshead", email = "ryan.morshead@gmail.com" }] +authors = [ + { name = "Ryan Morshead", email = "ryan.morshead@gmail.com" }, + { name = "Mark Bakhit", email = "archiethemonger@gmail.com" }, +] requires-python = ">=3.9" classifiers = [ "Development Status :: 4 - Beta", From 3a1cb6eec21ef944e8fed7f6b7de87586cd1dec6 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Mon, 20 Jan 2025 20:34:57 -0800 Subject: [PATCH 29/30] Better coverage settings --- pyproject.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index c411664b0..424572f8f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -252,17 +252,17 @@ parallel = false omit = ["reactpy/__init__.py"] [tool.coverage.report] -fail_under = 95 +fail_under = 98 show_missing = true skip_covered = true sort = "Name" -exclude_lines = [ +exclude_also = [ "no ?cov", '\.\.\.', "if __name__ == .__main__.:", "if TYPE_CHECKING:", ] -omit = ["reactpy/__main__.py"] +omit = ["**/reactpy/__main__.py"] [tool.ruff] target-version = "py39" From 5ebfa1c6a40c7ecfad20c93cc0e701bcbd9b2407 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 21 Jan 2025 00:25:53 -0800 Subject: [PATCH 30/30] Add documentation for new hatch commands --- .github/workflows/check.yml | 2 +- docs/source/_exts/autogen_api_docs.py | 8 +- docs/source/about/changelog.rst | 13 +- docs/source/about/contributor-guide.rst | 390 +++++------------- .../getting-started/installing-reactpy.rst | 6 +- pyproject.toml | 2 +- src/build_scripts/copy_dir.py | 2 +- tests/conftest.py | 2 +- 8 files changed, 114 insertions(+), 311 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index cd2889ab6..9fd513e89 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -20,7 +20,7 @@ jobs: uses: ./.github/workflows/.hatch-run.yml with: job-name: "python-{0}" - run-cmd: "hatch run python:check" + run-cmd: "hatch fmt src/reactpy --check && hatch run python:type_check" test-python: uses: ./.github/workflows/.hatch-run.yml with: diff --git a/docs/source/_exts/autogen_api_docs.py b/docs/source/_exts/autogen_api_docs.py index 4aecb30bd..2522ad388 100644 --- a/docs/source/_exts/autogen_api_docs.py +++ b/docs/source/_exts/autogen_api_docs.py @@ -104,10 +104,10 @@ def walk_python_files(root: Path, ignore_dirs: Collection[str]) -> Iterator[Path We yield the files in this order:: - project/__init__.py - project/package/__init__.py - project/package/module_a.py - project/module_b.py + project / __init__.py + project / package / __init__.py + project / package / module_a.py + project / module_b.py In this way we generate the section titles in the appropriate order:: diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 7fbe4d961..45aefe401 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -5,8 +5,7 @@ Changelog All notable changes to this project will be recorded in this document. The style of which is based on `Keep a Changelog `__. The versioning - scheme for the project adheres to `Semantic Versioning `__. For - more info, see the :ref:`Contributor Guide `. + scheme for the project adheres to `Semantic Versioning `__. .. INSTRUCTIONS FOR CHANGELOG CONTRIBUTORS @@ -20,7 +19,7 @@ Unreleased **Changed** -- :pull:`1251` Substitute ``react`` rendering on the client with ``preact``. +- :pull:`1251` Substitute client-side usage of ``react`` with ``preact``. v1.1.0 ------ @@ -44,12 +43,8 @@ v1.1.0 **Changed** - :pull:`1171` - Previously ``None``, when present in an HTML element, would render as - the string ``"None"``. Now ``None`` will not render at all. This is consistent with - how ``None`` is handled when returned from components. It also makes it easier to - conditionally render elements. For example, previously you would have needed to use a - fragment to conditionally render an element by writing - ``something if condition else html._()``. Now you can simply write - ``something if condition else None``. + the string ``"None"``. Now ``None`` will not render at all. This is now equivalent to + how ``None`` is handled when returned from components. - :pull:`1210` - Move hooks from ``reactpy.backend.hooks`` into ``reactpy.core.hooks``. **Deprecated** diff --git a/docs/source/about/contributor-guide.rst b/docs/source/about/contributor-guide.rst index 73ae3f23d..45ce4a512 100644 --- a/docs/source/about/contributor-guide.rst +++ b/docs/source/about/contributor-guide.rst @@ -1,329 +1,137 @@ Contributor Guide ================= -.. note:: +Creating a development environment +---------------------------------- - The - `Code of Conduct `__ - applies in all community spaces. If you are not familiar with our Code of Conduct - policy, take a minute to read it before making your first contribution. +If you plan to make code changes to this repository, you will need to install the following dependencies first: -The ReactPy team welcomes contributions and contributors of all kinds - whether they come -as code changes, participation in the discussions, opening issues and pointing out bugs, -or simply sharing your work with your colleagues and friends. We're excited to see how -you can help move this project and community forward! +- `Git `__ +- `Python 3.9+ `__ +- `Hatch `__ +- `Bun `__ +- `Docker `__ (optional) - -.. _everyone can contribute: - -Everyone Can Contribute! ------------------------- - -Trust us, there's so many ways to support the project. We're always looking for people -who can: - -- Improve our documentation -- Teach and tell others about ReactPy -- Share ideas for new features -- Report bugs -- Participate in general discussions - -Still aren't sure what you have to offer? Just :discussion-type:`ask us ` and -we'll help you make your first contribution. - - -Making a Pull Request ---------------------- - -To make your first code contribution to ReactPy, you'll need to install Git_ (or -`Git Bash`_ on Windows). Thankfully there are many helpful -`tutorials `__ -about how to get started. To make a change to ReactPy you'll do the following: - -`Fork ReactPy `__: - Go to `this URL `__ and click the "Fork" button. - -`Clone your fork `__: - You use a ``git clone`` command to copy the code from GitHub to your computer. - -`Create a new branch `__: - You'll ``git checkout -b your-first-branch`` to create a new space to start your work. - -:ref:`Prepare your Development Environment `: - We explain in more detail below how to install all ReactPy's dependencies. - -`Push your changes `__: - Once you've made changes to ReactPy, you'll ``git push`` them to your fork. - -:ref:`Create a changelog entry `: - Record your changes in the :ref:`changelog` so we can publicize them in the next release. - -`Create a Pull Request `__: - We'll review your changes, run some :ref:`tests ` and - :ref:`equality checks ` and, with any luck, accept your request. - At that point your contribution will be merged into the main codebase! - - -Development Environment ------------------------ - -.. note:: - - If you have any questions during set up or development post on our - :discussion-type:`discussion board ` and we'll answer them. - -In order to develop ReactPy locally you'll first need to install the following: - -.. list-table:: - :header-rows: 1 - - * - What to Install - - How to Install - - * - Python >= 3.9 - - https://realpython.com/installing-python/ - - * - Hatch - - https://hatch.pypa.io/latest/install/ - - * - Poetry - - https://python-poetry.org/docs/#installation - - * - Git - - https://git-scm.com/book/en/v2/Getting-Started-Installing-Git - - * - NodeJS >= 14 - - https://nodejs.org/en/download/package-manager/ - - * - NPM >= 7.13 - - https://docs.npmjs.com/try-the-latest-stable-version-of-npm - - * - Docker (optional) - - https://docs.docker.com/get-docker/ - -.. note:: - - NodeJS distributes a version of NPM, but you'll want to get the latest - -Once done, you can clone a local copy of this repository: +Once you finish installing these dependencies, you can clone this repository: .. code-block:: bash git clone https://github.com/reactive-python/reactpy.git cd reactpy -Then, you should be able to activate your development environment with: - -.. code-block:: bash - - hatch shell - -From within the shell, to install the projects in this repository, you should then run: - -.. code-block:: bash - - invoke env - -Project Structure ------------------ - -This repository is set up to be able to manage many applications and libraries written -in a variety of languages. All projects can be found under the ``src`` directory: - -- ``src/py/{project}`` - Python packages -- ``src/js/app`` - ReactPy's built-in JS client -- ``src/js/packages/{project}`` - JS packages - -At the root of the repository is a ``pyproject.toml`` file that contains scripts and -their respective dependencies for managing all other projects. Most of these global -scripts can be run via ``hatch run ...`` however, for more complex scripting tasks, we -rely on Invoke_. Scripts implements with Invoke can be found in ``tasks.py``. - -Running The Tests ------------------ - -Tests exist for both Python and Javascript. These can be run with the following: - -.. code-block:: bash - - hatch run test-py - hatch run test-js - -If you want to run tests for individual packages you'll need to ``cd`` into the -package directory and run the tests from there. For example, to run the tests just for -the ``reactpy`` package you'd do: - -.. code-block:: bash - - cd src/py/reactpy - hatch run test --headed # run the tests in a browser window - -For Javascript, you'd do: - -.. code-block:: bash +Executing test environment commands +----------------------------------- - cd src/js/packages/event-to-object - npm run check:tests +By utilizing ``hatch``, the following commands are available to manage the development environment. +Python Tests +............ -Code Quality Checks -------------------- - -Several tools are run on the codebase to help validate its quality. For the most part, -if you set up your :ref:`Development Environment` with pre-commit_ to check your work -before you commit it, then you'll be notified when changes need to be made or, in the -best case, changes will be made automatically for you. - -The following are currently being used: - -- MyPy_ - a static type checker -- Black_ - an opinionated code formatter -- Flake8_ - a style guide enforcement tool -- Ruff_ - An extremely fast Python linter, written in Rust. -- Prettier_ - a tool for automatically formatting various file types -- EsLint_ - A Javascript linter - -The most strict measure of quality enforced on the codebase is 100% test coverage in -Python files. This means that every line of coded added to ReactPy requires a test case -that exercises it. This doesn't prevent all bugs, but it should ensure that we catch the -most common ones. - -If you need help understanding why code you've submitted does not pass these checks, -then be sure to ask, either in the :discussion-type:`Community Forum ` or in -your :ref:`Pull Request `. - -.. note:: - - You can manually run ``hatch run lint --fix`` to auto format your code without - having to do so via ``pre-commit``. However, many IDEs have ways to automatically - format upon saving a file (e.g. - `VSCode `__) - - -Building The Documentation --------------------------- - -To build and display the documentation locally run: - -.. code-block:: bash +.. list-table:: + :header-rows: 1 - hatch run docs + * - Command + - Description + * - ``hatch test`` + - Run Python tests using the current environment's Python version + * - ``hatch test --all`` + - Run tests using all compatible Python versions + * - ``hatch test --python 3.9`` + - Run tests using a specific Python version + * - ``hatch test -k test_use_connection`` + - Run only a specific test -This will compile the documentation from its source files into HTML, start a web server, -and open a browser to display the now generated documentation. Whenever you change any -source files the web server will automatically rebuild the documentation and refresh the -page. Under the hood this is using -`sphinx-autobuild `__. +Python Package +.............. -To run some of the examples in the documentation as if they were tests run: +.. list-table:: + :header-rows: 1 -.. code-block:: bash + * - Command + - Description + * - ``hatch fmt`` + - Run all linters and formatters + * - ``hatch fmt --check`` + - Run all linters and formatters, but do not save fixes to the disk + * - ``hatch fmt --linter`` + - Run only linters + * - ``hatch fmt --formatter`` + - Run only formatters + * - ``hatch run python:type_check`` + - Run the Python type checker + +JavaScript Packages +................... - hatch run test-docs +.. list-table:: + :header-rows: 1 -Building the documentation as it's deployed in production requires Docker_. Once you've -installed Docker, you can run: + * - Command + - Description + * - ``hatch run javascript:check`` + - Run the JavaScript linter/formatter + * - ``hatch run javascript:fix`` + - Run the JavaScript linter/formatter and write fixes to disk + * - ``hatch run javascript:test`` + - Run the JavaScript tests + * - ``hatch run javascript:build`` + - Build all JavaScript packages + * - ``hatch run javascript:build_event_to_object`` + - Build the ``event-to-object`` package + * - ``hatch run javascript:build_client`` + - Build the ``@reactpy/client`` package + * - ``hatch run javascript:build_app`` + - Build the ``@reactpy/app`` package + +Documentation +............. -.. code-block:: bash +.. list-table:: + :header-rows: 1 - hatch run docs --docker + * - Command + - Description + * - ``hatch run docs:serve`` + - Start the documentation preview webserver + * - ``hatch run docs:build`` + - Build the documentation + * - ``hatch run docs:check`` + - Check the documentation for build errors + * - ``hatch run docs:docker_serve`` + - Start the documentation preview webserver using Docker + * - ``hatch run docs:docker_build`` + - Build the documentation using Docker + +Environment Management +...................... -Where you can then navigate to http://localhost:5000.. +.. list-table:: + :header-rows: 1 + * - Command + - Description + * - ``hatch build --clean`` + - Build the package from source + * - ``hatch env prune`` + - Delete all virtual environments created by ``hatch`` + * - ``hatch python install 3.12`` + - Install a specific Python version to your system -Creating a Changelog Entry +Other ReactPy Repositories -------------------------- -As part of your pull request, you'll want to edit the `Changelog -`__ by -adding an entry describing what you've changed or improved. You should write an entry in -the style of `Keep a Changelog `__ that falls under one of -the following categories, and add it to the :ref:`Unreleased` section of the changelog: - -- **Added** - for new features. -- **Changed** - for changes in existing functionality. -- **Deprecated** - for soon-to-be removed features. -- **Removed** - for now removed features. -- **Fixed** - for any bug fixes. -- **Documented** - for improvements to this documentation. -- **Security** - in case of vulnerabilities. - -If one of the sections doesn't exist, add it. If it does already, add a bullet point -under the relevant section. Your description should begin with a reference to the -relevant issue or pull request number. Here's a short example of what an unreleased -changelog entry might look like: - -.. code-block:: rst - - Unreleased - ---------- - - **Added** - - - :pull:`123` - A really cool new feature - - **Changed** - - - :pull:`456` - The behavior of some existing feature - - **Fixed** - - - :issue:`789` - Some really bad bug - -.. hint:: - - ``:issue:`` and ``:pull:`` refer to issue and pull request ticket numbers. - - -Release Process ---------------- - -Creating a release for ReactPy involves two steps: - -1. Tagging a version -2. Publishing a release - -To **tag a version** you'll run the following command: - -.. code-block:: bash - - nox -s tag -- - -Which will update the version for: - -- Python packages -- Javascript packages -- The changelog - -You'll be then prompted to confirm the auto-generated updates before those changes will -be staged, committed, and pushed along with a new tag matching ```` -which was specified earlier. - -Lastly, to **publish a release** `create one in GitHub -`__. -Because we pushed a tag using the command above, there should already be a saved tag you -can target when authoring the release. The release needs a title and description. The -title should simply be the version (same as the tag), and the description should simply -use GitHub's "Auto-generated release notes". - - -Other Core Repositories ------------------------ - -ReactPy depends on, or is used by several other core projects. For documentation on them +ReactPy has several external packages that can be installed to enhance your user experience. For documentation on them you should refer to their respective documentation in the links below: +- `reactpy-router `__ - ReactPy support for URL + routing - `reactpy-js-component-template `__ - Template repo for making :ref:`Custom Javascript Components`. -- `reactpy-flake8 `__ - Enforces the - :ref:`Rules of Hooks` -- `reactpy-jupyter `__ - ReactPy integration for - Jupyter -- `reactpy-dash `__ - ReactPy integration for Plotly - Dash - `reactpy-django `__ - ReactPy integration for Django +- `reactpy-jupyter `__ - ReactPy integration for + Jupyter .. Links .. ===== diff --git a/docs/source/guides/getting-started/installing-reactpy.rst b/docs/source/guides/getting-started/installing-reactpy.rst index 0b2ffc28a..869dbcb02 100644 --- a/docs/source/guides/getting-started/installing-reactpy.rst +++ b/docs/source/guides/getting-started/installing-reactpy.rst @@ -101,14 +101,14 @@ For Development If you want to contribute to the development of ReactPy or modify it, you'll want to install a development version of ReactPy. This involves cloning the repository where ReactPy's -source is maintained, and setting up a :ref:`development environment`. From there you'll -be able to modifying ReactPy's source code and :ref:`run its tests ` to +source is maintained, and setting up a :ref:`Contributor Guide`. From there you'll +be able to modifying ReactPy's source code and :ref:`run its tests ` to ensure the modifications you've made are backwards compatible. If you want to add a new feature to ReactPy you should write your own test that validates its behavior. If you have questions about how to modify ReactPy or help with its development, be sure to :discussion:`start a discussion `. The ReactPy team are always -excited to :ref:`welcome ` new contributions and contributors +excited to welcome new contributions and contributors of all kinds .. card:: diff --git a/pyproject.toml b/pyproject.toml index 424572f8f..371bed107 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -184,7 +184,7 @@ extra-dependencies = [ [tool.hatch.envs.python.scripts] # TODO: Replace mypy with pyright -check = ["mypy --strict src/reactpy", "hatch fmt src/reactpy --check"] +type_check = ["mypy --strict src/reactpy"] ############################ # >>> Hatch JS Scripts <<< # diff --git a/src/build_scripts/copy_dir.py b/src/build_scripts/copy_dir.py index a7880e7c1..34c87bf4d 100644 --- a/src/build_scripts/copy_dir.py +++ b/src/build_scripts/copy_dir.py @@ -23,7 +23,7 @@ def copy_files(source: Path, destination: Path) -> None: if __name__ == "__main__": - if len(sys.argv) != 3: + if len(sys.argv) != 3: # noqa logging.error( "Script used incorrectly!\nUsage: python copy_dir.py " ) diff --git a/tests/conftest.py b/tests/conftest.py index 9fa415013..eaeb37f64 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -33,7 +33,7 @@ def pytest_addoption(parser: Parser) -> None: @pytest.fixture(autouse=True, scope="session") def install_playwright(): - subprocess.run(["playwright", "install", "chromium"], check=True) + subprocess.run(["playwright", "install", "chromium"], check=True) # noqa: S607, S603 @pytest.fixture