From f8ee296f7e692c2b5ce0cb83fa33165e2ed62ba5 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 22 Oct 2024 01:18:37 -0700 Subject: [PATCH 1/9] Cleanup PyScript renderer --- src/js/package-lock.json | 307 +++--------------- src/js/package.json | 2 +- src/reactpy_django/pyscript/layout_handler.py | 23 +- 3 files changed, 58 insertions(+), 274 deletions(-) diff --git a/src/js/package-lock.json b/src/js/package-lock.json index 0bdd2ca5..7dff23fc 100644 --- a/src/js/package-lock.json +++ b/src/js/package-lock.json @@ -5,7 +5,7 @@ "packages": { "": { "dependencies": { - "@pyscript/core": "^0.6.7", + "@pyscript/core": "^0.4.56", "@reactpy/client": "^0.3.1", "@rollup/plugin-typescript": "^12.1.1", "morphdom": "^2.7.4", @@ -166,22 +166,16 @@ } }, "node_modules/@pyscript/core": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/@pyscript/core/-/core-0.6.7.tgz", - "integrity": "sha512-Ij9nrIAp49IkavzTYYwoV4K12MzzVCvcfmkGeqc9nPhtwBxPWSDJ9LEJtfO9MzoMV3dog5FwHdUh2WbZbqqZfw==", + "version": "0.4.56", + "resolved": "https://registry.npmjs.org/@pyscript/core/-/core-0.4.56.tgz", + "integrity": "sha512-pdjzc16C8zAGzFRP8qVy2lmrEdRH9khCOedPRlDr/5PG5tYEquPggbO1hLb/eUpJH6r3jP/uhW59vuG7yuKwqw==", "dependencies": { "@ungap/with-resolvers": "^0.1.0", - "@webreflection/idb-map": "^0.3.2", - "add-promise-listener": "^0.1.3", "basic-devtools": "^0.1.6", - "polyscript": "^0.16.3", - "sabayon": "^0.5.2", + "polyscript": "^0.13.10", "sticky-module": "^0.1.1", "to-json-callback": "^0.1.1", "type-checked-collections": "^0.1.7" - }, - "engines": { - "node": ">=20" } }, "node_modules/@reactpy/client": { @@ -340,201 +334,6 @@ } } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz", - "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz", - "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz", - "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz", - "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz", - "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz", - "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz", - "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz", - "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz", - "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz", - "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz", - "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz", - "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz", - "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz", - "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz", - "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/@rollup/rollup-win32-x64-msvc": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz", @@ -632,11 +431,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/add-promise-listener": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/add-promise-listener/-/add-promise-listener-0.1.3.tgz", - "integrity": "sha512-hQ6IgGJ7NvvlPYbwdekhdVwPb4QzEptNZ5v7B4XRKz7FukUPDuF/v+R5EFHArWmhmq4d+xv0G4/B5bu2GSiz9Q==" - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -902,13 +696,17 @@ } }, "node_modules/coincident": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/coincident/-/coincident-2.2.3.tgz", - "integrity": "sha512-yxLzgZqDSEPOczzNoM4T3gVyg955Kbk5snkaAkQw8xvh8zfxGuUtbaOaDNCaP3HxWeRZZjwbJi80hapAikpvoQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/coincident/-/coincident-1.2.3.tgz", + "integrity": "sha512-Uxz3BMTWIslzeWjuQnizGWVg0j6khbvHUQ8+5BdM7WuJEm4ALXwq3wluYoB+uF68uPBz/oUOeJnYURKyfjexlA==", "dependencies": { - "gc-hook": "^0.4.1", - "js-proxy": "^0.5.1", - "sabayon": "^0.5.2" + "@ungap/structured-clone": "^1.2.0", + "@ungap/with-resolvers": "^0.1.0", + "gc-hook": "^0.3.1", + "proxy-target": "^3.0.2" + }, + "optionalDependencies": { + "ws": "^8.16.0" } }, "node_modules/color-convert": { @@ -1572,20 +1370,6 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "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.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -1622,9 +1406,9 @@ } }, "node_modules/gc-hook": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/gc-hook/-/gc-hook-0.4.1.tgz", - "integrity": "sha512-uiF+uUftDVLr+VRdudsdsT3/LQYnv2ntwhRH964O7xXDI57Smrek5olv75Wb8Nnz6U+7iVTRXsBlxKcsaDTJTQ==" + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/gc-hook/-/gc-hook-0.3.1.tgz", + "integrity": "sha512-E5M+O/h2o7eZzGhzRZGex6hbB3k4NWqO0eA+OzLRLXxhdbYPajZnynPwAtphnh+cRHPwsj5Z80dqZlfI4eK55A==" }, "node_modules/get-intrinsic": { "version": "1.2.4", @@ -2273,20 +2057,6 @@ "node": ">= 0.4" } }, - "node_modules/js-proxy": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/js-proxy/-/js-proxy-0.5.1.tgz", - "integrity": "sha512-G1AswnGndelrmZ2tuJi5NWlXo28BucJdgO8aKP5U1NkxWxPvgFA510Ku6at+1A17Kh2ja7A/r4RDtd9Hdr6sOw==", - "dependencies": { - "gc-hook": "^0.3.1", - "proxy-target": "^3.0.2" - } - }, - "node_modules/js-proxy/node_modules/gc-hook": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/gc-hook/-/gc-hook-0.3.1.tgz", - "integrity": "sha512-E5M+O/h2o7eZzGhzRZGex6hbB3k4NWqO0eA+OzLRLXxhdbYPajZnynPwAtphnh+cRHPwsj5Z80dqZlfI4eK55A==" - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -2653,18 +2423,18 @@ "integrity": "sha512-yyVAOFKTAElc7KdLt2+UKGExNYwYb/Y/WE9i+1ezCQsJE8gbKSjewfpRqK2nQgZ4d4hhAAGgDCOcIZVilqE5UA==" }, "node_modules/polyscript": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/polyscript/-/polyscript-0.16.3.tgz", - "integrity": "sha512-I3kHxt62FMRAX2iVl24iCEtG4UnUInMSbv/LnwevkmjOErLPAQtES4CNzU/fgKRpXYCqp0WWQaRvRYkJhpMIbA==", + "version": "0.13.10", + "resolved": "https://registry.npmjs.org/polyscript/-/polyscript-0.13.10.tgz", + "integrity": "sha512-lRbN48QNfUnUBa81J/0GR4A2FZlB+Qi9m46VE7J8r/Kcx5FopDulT1Z/BFiwUG+xYswUscuVgYND852nq6x2gA==", "dependencies": { "@ungap/structured-clone": "^1.2.0", "@ungap/with-resolvers": "^0.1.0", "@webreflection/fetch": "^0.1.5", - "@webreflection/idb-map": "^0.3.2", + "@webreflection/idb-map": "^0.3.1", "basic-devtools": "^0.1.6", "codedent": "^0.1.2", - "coincident": "^2.2.2", - "gc-hook": "^0.4.1", + "coincident": "^1.2.3", + "gc-hook": "^0.3.1", "html-escaper": "^3.0.3", "proxy-target": "^3.0.2", "sticky-module": "^0.1.1", @@ -2930,14 +2700,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/sabayon": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/sabayon/-/sabayon-0.5.2.tgz", - "integrity": "sha512-7y8dwQFhInkUuI0JL1rAGLYeKz9LypgfzMOVO04v9pYvepzYJ6B7MhyoRiVIx2sGm7MhrD5h/SaHP6p+5Uc7Cw==", - "bin": { - "sabayon": "cli.cjs" - } - }, "node_modules/safe-array-concat": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", @@ -3454,6 +3216,27 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "optional": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/src/js/package.json b/src/js/package.json index ef6aae27..fa30d353 100644 --- a/src/js/package.json +++ b/src/js/package.json @@ -20,7 +20,7 @@ "typescript": "^5.6.3" }, "dependencies": { - "@pyscript/core": "^0.6.7", + "@pyscript/core": "^0.4.56", "@reactpy/client": "^0.3.1", "@rollup/plugin-typescript": "^12.1.1", "morphdom": "^2.7.4", diff --git a/src/reactpy_django/pyscript/layout_handler.py b/src/reactpy_django/pyscript/layout_handler.py index da5bfb1b..479cb613 100644 --- a/src/reactpy_django/pyscript/layout_handler.py +++ b/src/reactpy_django/pyscript/layout_handler.py @@ -14,7 +14,7 @@ def __init__(self, uuid): self.uuid = uuid @staticmethod - def apply_update(update, root_model): + def update_model(update, root_model): """Apply an update ReactPy's internal DOM model.""" from jsonpointer import set_pointer @@ -23,21 +23,22 @@ def apply_update(update, root_model): else: root_model.update(update["model"]) - def render(self, layout, model): + def render_html(self, layout, model): """Submit ReactPy's internal DOM model into the HTML DOM.""" - import js from pyscript.js_modules import morphdom + import js + # Create a new container to render the layout into container = js.document.getElementById(f"pyscript-{self.uuid}") - temp_container = container.cloneNode(False) - self.build_element_tree(layout, temp_container, model) + temp_root_container = container.cloneNode(False) + self.build_element_tree(layout, temp_root_container, model) # Use morphdom to update the DOM - morphdom.default(container, temp_container) + morphdom.default(container, temp_root_container) # Remove the cloned container to prevent memory leaks - temp_container.remove() + temp_root_container.remove() def build_element_tree(self, layout, parent, model): """Recursively build an element tree, starting from the root component.""" @@ -131,8 +132,8 @@ async def run(self, workspace_function): self.delete_old_workspaces() root_model: dict = {} - async with Layout(workspace_function()) as layout: + async with Layout(workspace_function()) as root_layout: while True: - update = await layout.render() - self.apply_update(update, root_model) - self.render(layout, root_model) + update = await root_layout.render() + self.update_model(update, root_model) + self.render_html(root_layout, root_model) From 9131da27325e37fcd51b07ad0208134c1b19a24a Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 22 Oct 2024 03:58:21 -0700 Subject: [PATCH 2/9] use bun --- .editorconfig | 3 + .github/workflows/publish-develop-docs.yml | 3 + .github/workflows/publish-py.yml | 3 + .github/workflows/publish-release-docs.yml | 3 + .github/workflows/test-docs.yml | 3 + .github/workflows/test-src.yml | 3 + docs/src/about/code.md | 1 + noxfile.py | 10 +- pyproject.toml | 2 +- setup.py | 19 +- src/js/bun.lockb | Bin 0 -> 101426 bytes src/js/eslint.config.js | 1 + src/js/package-lock.json | 3253 -------------------- src/js/package.json | 20 +- src/js/rollup.config.mjs | 23 - src/js/tsconfig.json | 13 - src/reactpy_django/components.py | 1 - src/reactpy_django/templatetags/reactpy.py | 4 +- tests/test_app/__init__.py | 21 +- tests/test_app/templates/pyscript.html | 44 +- 20 files changed, 88 insertions(+), 3342 deletions(-) create mode 100644 src/js/bun.lockb create mode 100644 src/js/eslint.config.js delete mode 100644 src/js/package-lock.json delete mode 100644 src/js/rollup.config.mjs delete mode 100644 src/js/tsconfig.json diff --git a/.editorconfig b/.editorconfig index 356385d7..abe826f5 100644 --- a/.editorconfig +++ b/.editorconfig @@ -14,6 +14,9 @@ end_of_line = lf indent_size = 4 max_line_length = 120 +[*.yml] +indent_size = 4 + [*.md] indent_size = 4 diff --git a/.github/workflows/publish-develop-docs.yml b/.github/workflows/publish-develop-docs.yml index c2b62d95..53c5aa16 100644 --- a/.github/workflows/publish-develop-docs.yml +++ b/.github/workflows/publish-develop-docs.yml @@ -11,6 +11,9 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 + - uses: oven-sh/setup-bun@v2 + with: + bun-version: latest - uses: actions/setup-python@v5 with: python-version: 3.x diff --git a/.github/workflows/publish-py.yml b/.github/workflows/publish-py.yml index 72a04dae..6a86db98 100644 --- a/.github/workflows/publish-py.yml +++ b/.github/workflows/publish-py.yml @@ -12,6 +12,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - uses: oven-sh/setup-bun@v2 + with: + bun-version: latest - name: Set up Python uses: actions/setup-python@v5 with: diff --git a/.github/workflows/publish-release-docs.yml b/.github/workflows/publish-release-docs.yml index 3f24d129..93df3e2a 100644 --- a/.github/workflows/publish-release-docs.yml +++ b/.github/workflows/publish-release-docs.yml @@ -11,6 +11,9 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 + - uses: oven-sh/setup-bun@v2 + with: + bun-version: latest - uses: actions/setup-python@v5 with: python-version: 3.x diff --git a/.github/workflows/test-docs.yml b/.github/workflows/test-docs.yml index 3062ebc1..95d131c4 100644 --- a/.github/workflows/test-docs.yml +++ b/.github/workflows/test-docs.yml @@ -17,6 +17,9 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 + - uses: oven-sh/setup-bun@v2 + with: + bun-version: latest - uses: actions/setup-python@v5 with: python-version: 3.x diff --git a/.github/workflows/test-src.yml b/.github/workflows/test-src.yml index 328bd1c3..5eb2e67a 100644 --- a/.github/workflows/test-src.yml +++ b/.github/workflows/test-src.yml @@ -18,6 +18,9 @@ jobs: python-version: ["3.9", "3.10", "3.11", "3.12"] steps: - uses: actions/checkout@v4 + - uses: oven-sh/setup-bun@v2 + with: + bun-version: latest - name: Use Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: diff --git a/docs/src/about/code.md b/docs/src/about/code.md index 205c2c96..81e49c51 100644 --- a/docs/src/about/code.md +++ b/docs/src/about/code.md @@ -19,6 +19,7 @@ If you plan to make code changes to this repository, you will need to install the following dependencies first: - [Python 3.9+](https://www.python.org/downloads/) +- [Bun](https://bun.sh/) - [Git](https://git-scm.com/downloads) Once done, you should clone this repository: diff --git a/noxfile.py b/noxfile.py index 7c228143..8776de45 100644 --- a/noxfile.py +++ b/noxfile.py @@ -31,14 +31,14 @@ def test_python(session: Session) -> None: settings_files = glob(settings_glob) assert settings_files, f"No Django settings files found at '{settings_glob}'!" for settings_file in settings_files: - settings_module = settings_file.strip(".py").replace("/", ".").replace("\\", ".") + settings_module = ( + settings_file.strip(".py").replace("/", ".").replace("\\", ".") + ) session.run( "python", "manage.py", "test", *posargs, - "-v", - "2", "--settings", settings_module, ) @@ -62,8 +62,8 @@ def test_style(session: Session) -> None: def test_javascript(session: Session) -> None: install_requirements_file(session, "test-env") session.chdir(ROOT_DIR / "src" / "js") - session.run("python", "-m", "nodejs.npm", "install", external=True) - session.run("python", "-m", "nodejs.npm", "run", "check") + session.run("bun", "install", external=True) + session.run("bun", "run", "check", external=True) def install_requirements_file(session: Session, name: str) -> None: diff --git a/pyproject.toml b/pyproject.toml index 274a352e..99ff6917 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [build-system] -requires = ["setuptools>=42", "wheel", "nodejs-bin==18.4.0a4"] +requires = ["setuptools>=42", "wheel"] build-backend = "setuptools.build_meta" [tool.mypy] diff --git a/setup.py b/setup.py index 76a91edf..2e052945 100644 --- a/setup.py +++ b/setup.py @@ -1,12 +1,12 @@ from __future__ import annotations, print_function import shutil +import subprocess import sys import traceback from distutils import log from pathlib import Path -from nodejs import npm from setuptools import find_namespace_packages, setup from setuptools.command.develop import develop from setuptools.command.sdist import sdist @@ -102,14 +102,27 @@ class Command(build_cls): def run(self): log.info("Installing Javascript...") - result = npm.call(["install"], cwd=str(js_dir)) + result = subprocess.run( + ["bun", "install"], cwd=str(js_dir), check=True + ).returncode if result != 0: log.error(traceback.format_exc()) log.error("Failed to install Javascript") raise RuntimeError("Failed to install Javascript") log.info("Building Javascript...") - result = npm.call(["run", "build"], cwd=str(js_dir)) + result = subprocess.run( + [ + "bun", + "build", + "./src/index.tsx", + "--outfile", + str(static_dir / "client.js"), + "--minify", + ], + cwd=str(js_dir), + check=True, + ).returncode if result != 0: log.error(traceback.format_exc()) log.error("Failed to build Javascript") diff --git a/src/js/bun.lockb b/src/js/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..3807b5711eaf5836a8f91e41e3a15c31dc0c1370 GIT binary patch literal 101426 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 literal 0 HcmV?d00001 diff --git a/src/js/eslint.config.js b/src/js/eslint.config.js new file mode 100644 index 00000000..27082ef3 --- /dev/null +++ b/src/js/eslint.config.js @@ -0,0 +1 @@ +export default [{}]; diff --git a/src/js/package-lock.json b/src/js/package-lock.json deleted file mode 100644 index 7dff23fc..00000000 --- a/src/js/package-lock.json +++ /dev/null @@ -1,3253 +0,0 @@ -{ - "name": "js", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "dependencies": { - "@pyscript/core": "^0.4.56", - "@reactpy/client": "^0.3.1", - "@rollup/plugin-typescript": "^12.1.1", - "morphdom": "^2.7.4", - "tslib": "^2.8.0" - }, - "devDependencies": { - "@rollup/plugin-commonjs": "^28.0.1", - "@rollup/plugin-node-resolve": "^15.3.0", - "@rollup/plugin-replace": "^6.0.1", - "@types/react": "^18.2.48", - "@types/react-dom": "^18.2.18", - "eslint": "^8.38.0", - "eslint-plugin-react": "^7.32.2", - "prettier": "^3.3.3", - "rollup": "^4.24.0", - "typescript": "^5.6.3" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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.11.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", - "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "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.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.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": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "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/@pyscript/core": { - "version": "0.4.56", - "resolved": "https://registry.npmjs.org/@pyscript/core/-/core-0.4.56.tgz", - "integrity": "sha512-pdjzc16C8zAGzFRP8qVy2lmrEdRH9khCOedPRlDr/5PG5tYEquPggbO1hLb/eUpJH6r3jP/uhW59vuG7yuKwqw==", - "dependencies": { - "@ungap/with-resolvers": "^0.1.0", - "basic-devtools": "^0.1.6", - "polyscript": "^0.13.10", - "sticky-module": "^0.1.1", - "to-json-callback": "^0.1.1", - "type-checked-collections": "^0.1.7" - } - }, - "node_modules/@reactpy/client": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@reactpy/client/-/client-0.3.1.tgz", - "integrity": "sha512-mvFwAvmRMgo7lTjkhkEJzBep6HX/wfm5BaNbtEMOUzto7G/h+z1AmqlOMXLH37DSI0iwfmCuNwy07EJM0JWZ0g==", - "dependencies": { - "event-to-object": "^0.1.2", - "json-pointer": "^0.6.2" - }, - "peerDependencies": { - "react": ">=16 <18", - "react-dom": ">=16 <18" - } - }, - "node_modules/@rollup/plugin-commonjs": { - "version": "28.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.1.tgz", - "integrity": "sha512-+tNWdlWKbpB3WgBN7ijjYkq9X5uhjmcvyjEght4NmH5fAU++zfQzAJ6wumLS+dNcvwEZhKx2Z+skY8m7v0wGSA==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "commondir": "^1.0.1", - "estree-walker": "^2.0.2", - "fdir": "^6.2.0", - "is-reference": "1.2.1", - "magic-string": "^0.30.3", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=16.0.0 || 14 >= 14.17" - }, - "peerDependencies": { - "rollup": "^2.68.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-commonjs/node_modules/fdir": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", - "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", - "dev": true, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-commonjs/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.0.tgz", - "integrity": "sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "@types/resolve": "1.20.2", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.78.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-replace": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-6.0.1.tgz", - "integrity": "sha512-2sPh9b73dj5IxuMmDAsQWVFT7mR+yoHweBaXG2W/R8vQ+IWZlnaI7BR7J6EguVQUp1hd8Z7XuozpDjEKQAAC2Q==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "magic-string": "^0.30.3" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-typescript": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-12.1.1.tgz", - "integrity": "sha512-t7O653DpfB5MbFrqPe/VcKFFkvRuFNp9qId3xq4Eth5xlyymzxNpye2z8Hrl0RIMuXTSr5GGcFpkdlMeacUiFQ==", - "dependencies": { - "@rollup/pluginutils": "^5.1.0", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.14.0||^3.0.0||^4.0.0", - "tslib": "*", - "typescript": ">=3.7.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - }, - "tslib": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", - "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz", - "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" - }, - "node_modules/@types/prop-types": { - "version": "15.7.11", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", - "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", - "dev": true - }, - "node_modules/@types/react": { - "version": "18.2.48", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.48.tgz", - "integrity": "sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==", - "dev": true, - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.2.18", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz", - "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==", - "dev": true, - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/resolve": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", - "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", - "dev": true - }, - "node_modules/@types/scheduler": { - "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", - "dev": true - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" - }, - "node_modules/@ungap/with-resolvers": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@ungap/with-resolvers/-/with-resolvers-0.1.0.tgz", - "integrity": "sha512-g7f0IkJdPW2xhY7H4iE72DAsIyfuwEFc6JWc2tYFwKDMWWAF699vGjrM348cwQuOXgHpe1gWFe+Eiyjx/ewvvw==" - }, - "node_modules/@webreflection/fetch": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@webreflection/fetch/-/fetch-0.1.5.tgz", - "integrity": "sha512-zCcqCJoNLvdeF41asAK71XPlwSPieeRDsE09albBunJEksuYPYNillKNQjf8p5BqSoTKTuKrW3lUm3MNodUC4g==" - }, - "node_modules/@webreflection/idb-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@webreflection/idb-map/-/idb-map-0.3.2.tgz", - "integrity": "sha512-VLBTx6EUYF/dPdLyyjWWKxQmTWnVXTT1YJekrJUmfGxBcqEVL0Ih2EQptNG/JezkTYgJ0uSTb0yAum/THltBvQ==" - }, - "node_modules/acorn": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", - "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", - "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/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.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "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.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "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/basic-devtools": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/basic-devtools/-/basic-devtools-0.1.6.tgz", - "integrity": "sha512-g9zJ63GmdUesS3/Fwv0B5SYX6nR56TQXmGr+wE5PRTNCnGQMYWhUx/nZB/mMWnQJVLPPAp89oxDNlasdtNkW5Q==" - }, - "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/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "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/codedent": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/codedent/-/codedent-0.1.2.tgz", - "integrity": "sha512-qEqzcy5viM3UoCN0jYHZeXZoyd4NZQzYFg0kOBj8O1CgoGG9WYYTF+VeQRsN0OSKFjF3G1u4WDUOtOsWEx6N2w==", - "dependencies": { - "plain-tag": "^0.1.3" - } - }, - "node_modules/coincident": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/coincident/-/coincident-1.2.3.tgz", - "integrity": "sha512-Uxz3BMTWIslzeWjuQnizGWVg0j6khbvHUQ8+5BdM7WuJEm4ALXwq3wluYoB+uF68uPBz/oUOeJnYURKyfjexlA==", - "dependencies": { - "@ungap/structured-clone": "^1.2.0", - "@ungap/with-resolvers": "^0.1.0", - "gc-hook": "^0.3.1", - "proxy-target": "^3.0.2" - }, - "optionalDependencies": { - "ws": "^8.16.0" - } - }, - "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/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "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/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true - }, - "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.3" - }, - "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/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.1.0.tgz", - "integrity": "sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.4", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.3", - "safe-array-concat": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - } - }, - "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/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.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "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.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.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", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "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.3", - "strip-ansi": "^6.0.1", - "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.37.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.1.tgz", - "integrity": "sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.2", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.19", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.8", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.0", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.11", - "string.prototype.repeat": "^1.0.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" - } - }, - "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.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.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-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "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/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==" - }, - "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": { - "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/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-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.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "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/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.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "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/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "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/gc-hook": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/gc-hook/-/gc-hook-0.3.1.tgz", - "integrity": "sha512-E5M+O/h2o7eZzGhzRZGex6hbB3k4NWqO0eA+OzLRLXxhdbYPajZnynPwAtphnh+cRHPwsj5Z80dqZlfI4eK55A==" - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - }, - "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==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "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.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "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.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "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.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/html-escaper": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", - "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==" - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "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==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "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.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "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.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", - "dev": true, - "dependencies": { - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "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-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "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": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "dev": true - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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-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/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-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "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.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "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/is-weakset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "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/iterator.prototype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz", - "integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": 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/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.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "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.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/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, - "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/morphdom": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/morphdom/-/morphdom-2.7.4.tgz", - "integrity": "sha512-ATTbWMgGa+FaMU3FhnFYB6WgulCqwf6opOll4CBzmVDTLvPMmUPrEv8CudmLPK0MESa64+6B89fWOxP3+YIlxQ==" - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "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/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.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "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.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "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.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "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.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "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==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/plain-tag": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/plain-tag/-/plain-tag-0.1.3.tgz", - "integrity": "sha512-yyVAOFKTAElc7KdLt2+UKGExNYwYb/Y/WE9i+1ezCQsJE8gbKSjewfpRqK2nQgZ4d4hhAAGgDCOcIZVilqE5UA==" - }, - "node_modules/polyscript": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/polyscript/-/polyscript-0.13.10.tgz", - "integrity": "sha512-lRbN48QNfUnUBa81J/0GR4A2FZlB+Qi9m46VE7J8r/Kcx5FopDulT1Z/BFiwUG+xYswUscuVgYND852nq6x2gA==", - "dependencies": { - "@ungap/structured-clone": "^1.2.0", - "@ungap/with-resolvers": "^0.1.0", - "@webreflection/fetch": "^0.1.5", - "@webreflection/idb-map": "^0.3.1", - "basic-devtools": "^0.1.6", - "codedent": "^0.1.2", - "coincident": "^1.2.3", - "gc-hook": "^0.3.1", - "html-escaper": "^3.0.3", - "proxy-target": "^3.0.2", - "sticky-module": "^0.1.1", - "to-json-callback": "^0.1.1" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "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.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", - "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/proxy-target": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/proxy-target/-/proxy-target-3.0.2.tgz", - "integrity": "sha512-FFE1XNwXX/FNC3/P8HiKaJSy/Qk68RitG/QEcLy/bVnTAPlgTAWPZKh0pARLAnpfXQPKyalBhk009NRTgsk8vQ==" - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "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/reflect.getprototypeof": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", - "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.1", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", - "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dependencies": { - "is-core-module": "^2.13.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==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz", - "integrity": "sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==", - "devOptional": true, - "dependencies": { - "@types/estree": "1.0.6" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.24.0", - "@rollup/rollup-android-arm64": "4.24.0", - "@rollup/rollup-darwin-arm64": "4.24.0", - "@rollup/rollup-darwin-x64": "4.24.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.24.0", - "@rollup/rollup-linux-arm-musleabihf": "4.24.0", - "@rollup/rollup-linux-arm64-gnu": "4.24.0", - "@rollup/rollup-linux-arm64-musl": "4.24.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.24.0", - "@rollup/rollup-linux-riscv64-gnu": "4.24.0", - "@rollup/rollup-linux-s390x-gnu": "4.24.0", - "@rollup/rollup-linux-x64-gnu": "4.24.0", - "@rollup/rollup-linux-x64-musl": "4.24.0", - "@rollup/rollup-win32-arm64-msvc": "4.24.0", - "@rollup/rollup-win32-ia32-msvc": "4.24.0", - "@rollup/rollup-win32-x64-msvc": "4.24.0", - "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/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sticky-module": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/sticky-module/-/sticky-module-0.1.1.tgz", - "integrity": "sha512-IuYgnyIMUx/m6rtu14l/LR2MaqOLtpXcWkxPmtPsiScRHEo+S4Tojk+DWFHOncSdFX/OsoLOM4+T92yOmI1AMw==" - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", - "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "regexp.prototype.flags": "^1.5.2", - "set-function-name": "^2.0.2", - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.repeat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", - "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.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==", - "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-json-callback": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/to-json-callback/-/to-json-callback-0.1.1.tgz", - "integrity": "sha512-BzOeinTT3NjE+FJ2iCvWB8HvyuyBzoH3WlSnJ+AYVC4tlePyZWSYdkQIFOARWiq0t35/XhmI0uQsFiUsRksRqg==" - }, - "node_modules/tslib": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", - "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==" - }, - "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-checked-collections": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/type-checked-collections/-/type-checked-collections-0.1.7.tgz", - "integrity": "sha512-fLIydlJy7IG9XL4wjRwEcKhxx/ekLXiWiMvcGo01cOMF+TN+5ZqajM1mRNRz2bNNi1bzou2yofhjZEQi7kgl9A==" - }, - "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-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "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/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-builtin-type": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", - "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", - "dev": true, - "dependencies": { - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", - "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.15" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "optional": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": 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" - } - } - } -} diff --git a/src/js/package.json b/src/js/package.json index fa30d353..7f6cc019 100644 --- a/src/js/package.json +++ b/src/js/package.json @@ -1,29 +1,19 @@ { - "description": "ReactPy-Django Client", - "main": "src/index.tsx", "type": "module", "scripts": { - "build": "rollup --config", "format": "prettier --write . && eslint --fix", "check": "prettier --check . && eslint" }, "devDependencies": { - "@rollup/plugin-commonjs": "^28.0.1", - "@rollup/plugin-node-resolve": "^15.3.0", - "@rollup/plugin-replace": "^6.0.1", "@types/react": "^18.2.48", "@types/react-dom": "^18.2.18", - "eslint": "^8.38.0", - "eslint-plugin-react": "^7.32.2", - "prettier": "^3.3.3", - "rollup": "^4.24.0", - "typescript": "^5.6.3" + "eslint": "^9.13.0", + "eslint-plugin-react": "^7.37.1", + "prettier": "^3.3.3" }, "dependencies": { - "@pyscript/core": "^0.4.56", + "@pyscript/core": "^0.5", "@reactpy/client": "^0.3.1", - "@rollup/plugin-typescript": "^12.1.1", - "morphdom": "^2.7.4", - "tslib": "^2.8.0" + "morphdom": "^2.7.4" } } diff --git a/src/js/rollup.config.mjs b/src/js/rollup.config.mjs deleted file mode 100644 index 5a6de090..00000000 --- a/src/js/rollup.config.mjs +++ /dev/null @@ -1,23 +0,0 @@ -import resolve from "@rollup/plugin-node-resolve"; -import commonjs from "@rollup/plugin-commonjs"; -import replace from "@rollup/plugin-replace"; -import typescript from "@rollup/plugin-typescript"; - -export default { - input: "src/index.tsx", - output: { - file: "../reactpy_django/static/reactpy_django/client.js", - format: "esm", - }, - plugins: [ - resolve(), - commonjs(), - replace({ - "process.env.NODE_ENV": JSON.stringify("production"), - }), - typescript(), - ], - onwarn: function (warning) { - console.warn(warning.message); - }, -}; diff --git a/src/js/tsconfig.json b/src/js/tsconfig.json deleted file mode 100644 index f1b84b50..00000000 --- a/src/js/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2022", - "module": "esnext", - "moduleResolution": "node", - "jsx": "react", - "allowSyntheticDefaultImports": true - }, - "paths": { - "react": ["./node_modules/preact/compat/"], - "react-dom": ["./node_modules/preact/compat/"] - } -} diff --git a/src/reactpy_django/components.py b/src/reactpy_django/components.py index 3794ba73..98981730 100644 --- a/src/reactpy_django/components.py +++ b/src/reactpy_django/components.py @@ -215,7 +215,6 @@ def _view_to_iframe( { "src": reverse("reactpy:view_to_iframe", args=[dotted_path]) + query_string, "style": {"border": "none"}, - "onload": 'javascript:(function(o){o.style.height=o.contentWindow.document.body.scrollHeight+"px";}(this));', "loading": "lazy", } | extra_props diff --git a/src/reactpy_django/templatetags/reactpy.py b/src/reactpy_django/templatetags/reactpy.py index 1fdfa6af..2f34651a 100644 --- a/src/reactpy_django/templatetags/reactpy.py +++ b/src/reactpy_django/templatetags/reactpy.py @@ -226,11 +226,11 @@ def pyscript_setup( extra_py: Dependencies that need to be loaded on the page for \ your PyScript components. Each dependency must be contained \ within it's own string and written in Python requirements file syntax. - + Kwargs: extra_js: A JSON string or Python dictionary containing a vanilla \ JavaScript module URL and the `name: str` to access it within \ - `pyscript.js_modules.*`. + `pyscript.js_modules.*`. config: A JSON string or Python dictionary containing PyScript \ configuration values. """ diff --git a/tests/test_app/__init__.py b/tests/test_app/__init__.py index 392e6066..d70fd471 100644 --- a/tests/test_app/__init__.py +++ b/tests/test_app/__init__.py @@ -1,12 +1,25 @@ import shutil +import subprocess from pathlib import Path -from nodejs import npm - # Make sure the JS is always re-built before running the tests js_dir = Path(__file__).parent.parent.parent / "src" / "js" -assert npm.call(["install"], cwd=str(js_dir)) == 0 -assert npm.call(["run", "build"], cwd=str(js_dir)) == 0 +static_dir = ( + Path(__file__).parent.parent.parent + / "src" + / "reactpy_django" + / "static" + / "reactpy_django" +) +assert subprocess.run(["bun", "install"], cwd=str(js_dir), check=True).returncode == 0 +assert ( + subprocess.run( + ["bun", "build", "./src/index.tsx", "--outfile", str(static_dir / "client.js")], + cwd=str(js_dir), + check=True, + ).returncode + == 0 +) # Make sure the current PyScript distribution is always available pyscript_dist = js_dir / "node_modules" / "@pyscript" / "core" / "dist" diff --git a/tests/test_app/templates/pyscript.html b/tests/test_app/templates/pyscript.html index 57a5dd15..556655fb 100644 --- a/tests/test_app/templates/pyscript.html +++ b/tests/test_app/templates/pyscript.html @@ -3,31 +3,31 @@ - - - - - ReactPy - {% pyscript_setup extra_js='{"/static/moment.js":"moment"}' config="{}" %} + + + + + ReactPy + {% pyscript_setup extra_js='{"/static/moment.js":"moment"}' config="{}" %} -

ReactPy PyScript Test Page

-
- {% pyscript_component "./test_app/pyscript/components/hello_world.py" initial="
Loading...
" %} -
- {% pyscript_component "./test_app/pyscript/components/custom_root.py" root="main" %} -
- {% pyscript_component "./test_app/pyscript/components/multifile_parent.py" "./test_app/pyscript/components/multifile_child.py" %} -
- {% pyscript_component "./test_app/pyscript/components/counter.py" %} -
- {% component "test_app.pyscript.components.server_side.parent" %} -
- {% component "test_app.pyscript.components.server_side.parent_toggle" %} -
- {% pyscript_component "./test_app/pyscript/components/remote_js_module.py" %} -
+

ReactPy PyScript Test Page

+
+ {% pyscript_component "./test_app/pyscript/components/hello_world.py" initial="
Loading...
" %} +
+ {% pyscript_component "./test_app/pyscript/components/custom_root.py" root="main" %} +
+ {% pyscript_component "./test_app/pyscript/components/multifile_parent.py" "./test_app/pyscript/components/multifile_child.py" %} +
+ {% pyscript_component "./test_app/pyscript/components/counter.py" %} +
+ {% component "test_app.pyscript.components.server_side.parent" %} +
+ {% component "test_app.pyscript.components.server_side.parent_toggle" %} +
+ {% pyscript_component "./test_app/pyscript/components/remote_js_module.py" %} +
From 5545833d8dd66060c306d81f75aa29cb4b772a45 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 22 Oct 2024 04:00:55 -0700 Subject: [PATCH 3/9] Reduce diffs on html --- .editorconfig | 1 + tests/test_app/templates/pyscript.html | 44 +++++++++++++------------- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/.editorconfig b/.editorconfig index abe826f5..170d7ddb 100644 --- a/.editorconfig +++ b/.editorconfig @@ -21,6 +21,7 @@ indent_size = 4 indent_size = 4 [*.html] +indent_size = 4 max_line_length = off [*.js] diff --git a/tests/test_app/templates/pyscript.html b/tests/test_app/templates/pyscript.html index 556655fb..57a5dd15 100644 --- a/tests/test_app/templates/pyscript.html +++ b/tests/test_app/templates/pyscript.html @@ -3,31 +3,31 @@ - - - - - ReactPy - {% pyscript_setup extra_js='{"/static/moment.js":"moment"}' config="{}" %} + + + + + ReactPy + {% pyscript_setup extra_js='{"/static/moment.js":"moment"}' config="{}" %} -

ReactPy PyScript Test Page

-
- {% pyscript_component "./test_app/pyscript/components/hello_world.py" initial="
Loading...
" %} -
- {% pyscript_component "./test_app/pyscript/components/custom_root.py" root="main" %} -
- {% pyscript_component "./test_app/pyscript/components/multifile_parent.py" "./test_app/pyscript/components/multifile_child.py" %} -
- {% pyscript_component "./test_app/pyscript/components/counter.py" %} -
- {% component "test_app.pyscript.components.server_side.parent" %} -
- {% component "test_app.pyscript.components.server_side.parent_toggle" %} -
- {% pyscript_component "./test_app/pyscript/components/remote_js_module.py" %} -
+

ReactPy PyScript Test Page

+
+ {% pyscript_component "./test_app/pyscript/components/hello_world.py" initial="
Loading...
" %} +
+ {% pyscript_component "./test_app/pyscript/components/custom_root.py" root="main" %} +
+ {% pyscript_component "./test_app/pyscript/components/multifile_parent.py" "./test_app/pyscript/components/multifile_child.py" %} +
+ {% pyscript_component "./test_app/pyscript/components/counter.py" %} +
+ {% component "test_app.pyscript.components.server_side.parent" %} +
+ {% component "test_app.pyscript.components.server_side.parent_toggle" %} +
+ {% pyscript_component "./test_app/pyscript/components/remote_js_module.py" %} +
From 34a2ec6a76bb1a0de8486415283c7d9aa7efeea4 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 22 Oct 2024 04:01:12 -0700 Subject: [PATCH 4/9] Remove nodjs from test env deps --- requirements/test-env.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements/test-env.txt b/requirements/test-env.txt index 6f146715..fc1ba2ce 100644 --- a/requirements/test-env.txt +++ b/requirements/test-env.txt @@ -3,4 +3,3 @@ twisted channels[daphne]>=4.0.0 tblib whitenoise -nodejs-bin==18.4.0a4 From a2dd5ff8f77f538b3b704e273d22d3dfa414a5ca Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 22 Oct 2024 04:25:18 -0700 Subject: [PATCH 5/9] Remove deprecated distutils --- setup.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 2e052945..39a9b3ff 100644 --- a/setup.py +++ b/setup.py @@ -4,13 +4,15 @@ import subprocess import sys import traceback -from distutils import log +from logging import getLogger from pathlib import Path from setuptools import find_namespace_packages, setup from setuptools.command.develop import develop from setuptools.command.sdist import sdist +log = getLogger(__name__) + # ----------------------------------------------------------------------------- # Basic Constants # ----------------------------------------------------------------------------- From 3c8197fb35eb5f4c4f4655b4d0e76e9a79b143c4 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 22 Oct 2024 17:48:53 -0700 Subject: [PATCH 6/9] Upgrade pyscript --- src/js/bun.lockb | Bin 101426 -> 101820 bytes src/js/package.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/bun.lockb b/src/js/bun.lockb index 3807b5711eaf5836a8f91e41e3a15c31dc0c1370..41cbecf9d5a860ec86b32a6a4ca0018ce8a9bc8c 100644 GIT binary patch delta 18321 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 TPGNB(q9=Rt^`ulbx%>YBxh&ge diff --git a/src/js/package.json b/src/js/package.json index 7f6cc019..cca215e6 100644 --- a/src/js/package.json +++ b/src/js/package.json @@ -12,7 +12,7 @@ "prettier": "^3.3.3" }, "dependencies": { - "@pyscript/core": "^0.5", + "@pyscript/core": "^0.6", "@reactpy/client": "^0.3.1", "morphdom": "^2.7.4" } From 197cf198f6abc62774a1d720121136163ce0cc05 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 22 Oct 2024 18:01:27 -0700 Subject: [PATCH 7/9] revert pyodide to v0.5 --- src/js/bun.lockb | Bin 101820 -> 101426 bytes src/js/package.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/bun.lockb b/src/js/bun.lockb index 41cbecf9d5a860ec86b32a6a4ca0018ce8a9bc8c..3807b5711eaf5836a8f91e41e3a15c31dc0c1370 100644 GIT binary patch delta 18306 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 TPGNB(q9=Rt^`ulbx%>YBxh&ge delta 18321 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 Date: Tue, 22 Oct 2024 19:13:56 -0700 Subject: [PATCH 8/9] add docs for using local interpreter --- .../html/pyscript-setup-local-interpreter.html | 1 + docs/src/reference/template-tag.md | 14 ++++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 docs/examples/html/pyscript-setup-local-interpreter.html diff --git a/docs/examples/html/pyscript-setup-local-interpreter.html b/docs/examples/html/pyscript-setup-local-interpreter.html new file mode 100644 index 00000000..8371fa94 --- /dev/null +++ b/docs/examples/html/pyscript-setup-local-interpreter.html @@ -0,0 +1 @@ +{% pyscript_setup config='{"interpreter":"/static/pyodide/pyodide.mjs"}' %} diff --git a/docs/src/reference/template-tag.md b/docs/src/reference/template-tag.md index e5c60a79..091b2ac8 100644 --- a/docs/src/reference/template-tag.md +++ b/docs/src/reference/template-tag.md @@ -391,3 +391,17 @@ You can optionally use this tag to configure the current PyScript environment. F ```python {% include "../../examples/python/pyscript-setup-config-object.py" %} ``` + +??? question "Can I use a local interpreter for PyScript?" + + Yes, you can set up a local interpreter by following PyScript's [standard documentation](https://docs.pyscript.net/latest/user-guide/offline/#local-pyodide-packages). + + To summarize, + + 1. Download the latest Pyodide bundle from the [Pyodide GitHub releases page](https://github.com/pyodide/pyodide/releases) (for example `pyodide-0.26.3.tar.bz2`). + 2. Extract the contents of the bundle to your project's static files. + 3. Configure your `#!jinja {% pyscript_setup %}` template tag to use `pyodide` as an interpreter. + + ```jinja linenums="0" + {% include "../../examples/html/pyscript-setup-local-interpreter.html" %} + ``` From 53d81945ea287874bc09647bfa9e5ff867b45eb8 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 22 Oct 2024 19:14:12 -0700 Subject: [PATCH 9/9] create generic copy_js_files util --- setup.py | 22 ++++++++++++-------- tests/test_app/__init__.py | 41 ++++++++++++++++++++++---------------- 2 files changed, 38 insertions(+), 25 deletions(-) diff --git a/setup.py b/setup.py index 39a9b3ff..a3388b35 100644 --- a/setup.py +++ b/setup.py @@ -99,6 +99,18 @@ # ---------------------------------------------------------------------------- # Build Javascript # ---------------------------------------------------------------------------- +def copy_js_files(source_dir: Path, destination: Path) -> None: + if destination.exists(): + shutil.rmtree(destination) + destination.mkdir() + + for file in source_dir.iterdir(): + if file.is_file(): + shutil.copy(file, destination / file.name) + else: + copy_js_files(file, destination / file.name) + + def build_javascript_first(build_cls: type): class Command(build_cls): def run(self): @@ -133,18 +145,12 @@ def run(self): log.info("Copying @pyscript/core distribution") pyscript_dist = js_dir / "node_modules" / "@pyscript" / "core" / "dist" pyscript_static_dir = static_dir / "pyscript" - if not pyscript_static_dir.exists(): - pyscript_static_dir.mkdir() - for file in pyscript_dist.iterdir(): - shutil.copy(file, pyscript_static_dir / file.name) + copy_js_files(pyscript_dist, pyscript_static_dir) log.info("Copying Morphdom distribution") morphdom_dist = js_dir / "node_modules" / "morphdom" / "dist" morphdom_static_dir = static_dir / "morphdom" - if not morphdom_static_dir.exists(): - morphdom_static_dir.mkdir() - for file in morphdom_dist.iterdir(): - shutil.copy(file, morphdom_static_dir / file.name) + copy_js_files(morphdom_dist, morphdom_static_dir) log.info("Successfully built Javascript") super().run() diff --git a/tests/test_app/__init__.py b/tests/test_app/__init__.py index d70fd471..27d5e41d 100644 --- a/tests/test_app/__init__.py +++ b/tests/test_app/__init__.py @@ -21,32 +21,39 @@ == 0 ) -# Make sure the current PyScript distribution is always available -pyscript_dist = js_dir / "node_modules" / "@pyscript" / "core" / "dist" -pyscript_static_dir = ( + +# Make sure the test environment is always using the latest JS +def copy_js_files(source_dir: Path, destination: Path) -> None: + if destination.exists(): + shutil.rmtree(destination) + destination.mkdir() + + for file in source_dir.iterdir(): + if file.is_file(): + shutil.copy(file, destination / file.name) + else: + copy_js_files(file, destination / file.name) + + +# Copy PyScript +copy_js_files( + js_dir / "node_modules" / "@pyscript" / "core" / "dist", Path(__file__).parent.parent.parent / "src" / "reactpy_django" / "static" / "reactpy_django" - / "pyscript" + / "pyscript", ) -if not pyscript_static_dir.exists(): - pyscript_static_dir.mkdir() -for file in pyscript_dist.iterdir(): - shutil.copy(file, pyscript_static_dir / file.name) - -# Make sure the current Morphdom distrubiton is always available -morphdom_dist = js_dir / "node_modules" / "morphdom" / "dist" -morphdom_static_dir = ( + + +# Copy MorphDOM +copy_js_files( + js_dir / "node_modules" / "morphdom" / "dist", Path(__file__).parent.parent.parent / "src" / "reactpy_django" / "static" / "reactpy_django" - / "morphdom" + / "morphdom", ) -if not morphdom_static_dir.exists(): - morphdom_static_dir.mkdir() -for file in morphdom_dist.iterdir(): - shutil.copy(file, morphdom_static_dir / file.name)