diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index ccfd219a11f..82962a3fa52 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -1,7 +1,7 @@ name: Flow Validation on: push: - branches: [main, '24.4', '24.3', '24.2', '24.1', '24.0', '23.3', '9.1'] + branches: [main, '24.5', '24.4', '24.3', '23.5', '9.1'] workflow_dispatch: pull_request_target: types: [opened, synchronize, reopened, edited] diff --git a/README.md b/README.md index 57d579f8c03..6a111427861 100644 --- a/README.md +++ b/README.md @@ -15,8 +15,9 @@ Since [Vaadin platform 23.0](https://github.com/vaadin/platform), Flow major and | Branch | [Platform Version](https://github.com/vaadin/platform/releases) | [Flow Version](https://github.com/vaadin/flow/releases) | |--------|-----------------------------------------------------------------|---------------------------------------------------------| | 1.0 | 10 (LTS) | 1.0 | -| 2.10 | 14.11.x (LTS) | 2.10.x | +| 2.10 | 14.11 (LATEST free with Java 8+ support and Servlet) | 2.10 | +| 2.11 | 14.12 (LATEST commercial with Java 8+ support and Servlet 3) | 2.11 | | 23.4 | 23.4 (LATEST free with Java 11+ support and Servlet 3) | 23.4 | | 23.5 | 23.5 (LATEST commercial with Java 11+ support and Servlet 3) | 23.5 | -| 24.4 | 24.4 (LATEST release, Java 17+, Jakarta EE 10, Spring-boot 3) | 24.4 | -| main | 24.5 (Vaadin 24.5 preparations) | 24.5 | +| 24.5 | 24.5 (LATEST release, Java 17+, Jakarta EE 10, Spring-boot 3) | 24.5 | +| main | 24.6 (Vaadin 24.6 preparations) | 24.6 | diff --git a/flow-bom/pom.xml b/flow-bom/pom.xml index b5548406735..d172d70542b 100644 --- a/flow-bom/pom.xml +++ b/flow-bom/pom.xml @@ -4,7 +4,7 @@ com.vaadin flow-project - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-bom pom diff --git a/flow-client/package-lock.json b/flow-client/package-lock.json index 854b28b7fc0..5a542a88674 100644 --- a/flow-client/package-lock.json +++ b/flow-client/package-lock.json @@ -18,7 +18,7 @@ "@types/sinon": "^10.0.13", "@typescript-eslint/eslint-plugin": "^3.10.1", "@web/dev-server-esbuild": "^0.3.3", - "@web/test-runner": "^0.15.0", + "@web/test-runner": "^0.19.0", "@web/test-runner-playwright": "^0.9.0", "eslint": "7.32.0", "eslint-config-prettier": "^8.3.0", @@ -341,48 +341,293 @@ "lit-html": "^2.0.0" } }, + "node_modules/@puppeteer/browsers": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.4.0.tgz", + "integrity": "sha512-x8J1csfIygOwf6D6qUAZ0ASk3z63zPb7wkNeHRerCMh82qWKUrOgkuP005AJC8lDL6/evtXETGEJVcwykKT4/g==", + "dev": true, + "dependencies": { + "debug": "^4.3.6", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.4.0", + "semver": "^7.6.3", + "tar-fs": "^3.0.6", + "unbzip2-stream": "^1.4.3", + "yargs": "^17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@puppeteer/browsers/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@rollup/plugin-node-resolve": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz", - "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==", + "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": "^3.1.0", - "@types/resolve": "1.17.1", + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", "deepmerge": "^4.2.2", - "is-builtin-module": "^3.1.0", "is-module": "^1.0.0", - "resolve": "^1.19.0" + "resolve": "^1.22.1" }, "engines": { - "node": ">= 10.0.0" + "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^2.42.0" + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.2.tgz", + "integrity": "sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==", "dev": true, "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">= 8.0.0" + "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@rollup/pluginutils/node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz", + "integrity": "sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz", + "integrity": "sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz", + "integrity": "sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz", + "integrity": "sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz", + "integrity": "sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz", + "integrity": "sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz", + "integrity": "sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz", + "integrity": "sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz", + "integrity": "sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz", + "integrity": "sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz", + "integrity": "sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz", + "integrity": "sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz", + "integrity": "sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz", + "integrity": "sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz", + "integrity": "sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz", + "integrity": "sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] }, "node_modules/@sinonjs/commons": { "version": "2.0.0", @@ -419,6 +664,12 @@ "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", "dev": true }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true + }, "node_modules/@types/accepts": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", @@ -470,9 +721,9 @@ } }, "node_modules/@types/command-line-args": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.2.0.tgz", - "integrity": "sha512-UuKzKpJJ/Ief6ufIaIzr3A/0XnluX7RvFgwkV89Yzvm77wCh1kFaFmqN8XEnGcN62EuHdedQjEMb8mYxFLGPyA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.2.3.tgz", + "integrity": "sha512-uv0aG6R0Y8WHZLTamZwtfsDLVRnOa+n+n5rEvFWL5Na5gZ8V2Teab/duDPFzIIIhs9qizDpcavCusCLJZu62Kw==", "dev": true }, "node_modules/@types/connect": { @@ -520,6 +771,12 @@ "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", "dev": true }, + "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==", + "dev": true + }, "node_modules/@types/express": { "version": "4.17.17", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", @@ -628,12 +885,6 @@ "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", "dev": true }, - "node_modules/@types/mocha": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", - "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", - "dev": true - }, "node_modules/@types/node": { "version": "18.14.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.2.tgz", @@ -659,13 +910,10 @@ "dev": true }, "node_modules/@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } + "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/serve-static": { "version": "1.15.1", @@ -717,9 +965,9 @@ } }, "node_modules/@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, "optional": true, "dependencies": { @@ -972,67 +1220,31 @@ } }, "node_modules/@web/config-loader": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@web/config-loader/-/config-loader-0.1.3.tgz", - "integrity": "sha512-XVKH79pk4d3EHRhofete8eAnqto1e8mCRAqPV00KLNFzCWSe8sWmLnqKCqkPNARC6nksMaGrATnA5sPDRllMpQ==", - "dev": true, - "dependencies": { - "semver": "^7.3.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@web/config-loader/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@web/config-loader/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@web/config-loader/-/config-loader-0.3.2.tgz", + "integrity": "sha512-Vrjv/FexBGmAdnCYpJKLHX1dfT1UaUdvHmX1JRaWos9OvDf/tFznYJ5SpJwww3Rl87/ewvLSYG7kfsMqEAsizQ==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, "engines": { - "node": ">=10" + "node": ">=18.0.0" } }, - "node_modules/@web/config-loader/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@web/dev-server": { - "version": "0.1.35", - "resolved": "https://registry.npmjs.org/@web/dev-server/-/dev-server-0.1.35.tgz", - "integrity": "sha512-E7TSTSFdGPzhkiE3kIVt8i49gsiAYpJIZHzs1vJmVfdt8U4rsmhE+5roezxZo0hkEw4mNsqj9zCc4Dzqy/IFHg==", + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/@web/dev-server/-/dev-server-0.4.6.tgz", + "integrity": "sha512-jj/1bcElAy5EZet8m2CcUdzxT+CRvUjIXGh8Lt7vxtthkN9PzY9wlhWx/9WOs5iwlnG1oj0VGo6f/zvbPO0s9w==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.11", "@types/command-line-args": "^5.0.0", - "@web/config-loader": "^0.1.3", - "@web/dev-server-core": "^0.3.19", - "@web/dev-server-rollup": "^0.3.19", + "@web/config-loader": "^0.3.0", + "@web/dev-server-core": "^0.7.2", + "@web/dev-server-rollup": "^0.6.1", "camelcase": "^6.2.0", "command-line-args": "^5.1.1", - "command-line-usage": "^6.1.1", + "command-line-usage": "^7.0.1", "debounce": "^1.2.0", "deepmerge": "^4.2.2", - "ip": "^1.1.5", + "internal-ip": "^6.2.0", "nanocolors": "^0.2.1", "open": "^8.0.2", "portfinder": "^1.0.32" @@ -1042,7 +1254,7 @@ "web-dev-server": "dist/bin.js" }, "engines": { - "node": ">=10.0.0" + "node": ">=18.0.0" } }, "node_modules/@web/dev-server-core": { @@ -1074,36 +1286,6 @@ "node": ">=10.0.0" } }, - "node_modules/@web/dev-server-core/node_modules/es-module-lexer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.0.tgz", - "integrity": "sha512-2BMfqBDeVCcOlLaL1ZAfp+D868SczNpKArrTM3dhpd7dK/OVlogzY15qpUngt+LMTq5UC/csb9vVQAgupucSbA==", - "dev": true - }, - "node_modules/@web/dev-server-core/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@web/dev-server-core/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@web/dev-server-core/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -1139,86 +1321,178 @@ } }, "node_modules/@web/dev-server-rollup": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/@web/dev-server-rollup/-/dev-server-rollup-0.3.21.tgz", - "integrity": "sha512-138t+vMFkegRip6Rtlz68Bo5rl984C9c2rLg3dWl9JEEJSQcWgA3iEwXYh4xTc52WjXnM3/LpboAjTYQOMyfrA==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@web/dev-server-rollup/-/dev-server-rollup-0.6.4.tgz", + "integrity": "sha512-sJZfTGCCrdku5xYnQQG51odGI092hKY9YFM0X3Z0tRY3iXKXcYRaLZrErw5KfCxr6g0JRuhe4BBhqXTA5Q2I3Q==", "dev": true, "dependencies": { - "@rollup/plugin-node-resolve": "^13.0.4", - "@web/dev-server-core": "^0.3.19", + "@rollup/plugin-node-resolve": "^15.0.1", + "@web/dev-server-core": "^0.7.2", "nanocolors": "^0.2.1", "parse5": "^6.0.1", - "rollup": "^2.67.0", - "whatwg-url": "^11.0.0" + "rollup": "^4.4.0", + "whatwg-url": "^14.0.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=18.0.0" } }, - "node_modules/@web/dev-server-rollup/node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "node_modules/@web/dev-server-rollup/node_modules/@web/dev-server-core": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.7.2.tgz", + "integrity": "sha512-Q/0jpF13Ipk+qGGQ+Yx/FW1TQBYazpkfgYHHo96HBE7qv4V4KKHqHglZcSUxti/zd4bToxX1cFTz8dmbTlb8JA==", "dev": true, "dependencies": { - "punycode": "^2.1.1" + "@types/koa": "^2.11.6", + "@types/ws": "^7.4.0", + "@web/parse5-utils": "^2.1.0", + "chokidar": "^3.4.3", + "clone": "^2.1.2", + "es-module-lexer": "^1.0.0", + "get-stream": "^6.0.0", + "is-stream": "^2.0.0", + "isbinaryfile": "^5.0.0", + "koa": "^2.13.0", + "koa-etag": "^4.0.0", + "koa-send": "^5.0.1", + "koa-static": "^5.0.0", + "lru-cache": "^8.0.4", + "mime-types": "^2.1.27", + "parse5": "^6.0.1", + "picomatch": "^2.2.2", + "ws": "^7.4.2" }, "engines": { - "node": ">=12" + "node": ">=18.0.0" } }, - "node_modules/@web/dev-server-rollup/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "node_modules/@web/dev-server-rollup/node_modules/@web/parse5-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-2.1.0.tgz", + "integrity": "sha512-GzfK5disEJ6wEjoPwx8AVNwUe9gYIiwc+x//QYxYDAFKUp4Xb1OJAGLc2l2gVrSQmtPGLKrTRcW90Hv4pEq1qA==", "dev": true, + "dependencies": { + "@types/parse5": "^6.0.1", + "parse5": "^6.0.1" + }, "engines": { - "node": ">=12" + "node": ">=18.0.0" } }, - "node_modules/@web/dev-server-rollup/node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "node_modules/@web/dev-server-rollup/node_modules/isbinaryfile": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.2.tgz", + "integrity": "sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==", "dev": true, - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, "engines": { - "node": ">=12" + "node": ">= 18.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" } }, - "node_modules/@web/parse5-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-1.3.0.tgz", - "integrity": "sha512-Pgkx3ECc8EgXSlS5EyrgzSOoUbM6P8OKS471HLAyvOBcP1NCBn0to4RN/OaKASGq8qa3j+lPX9H14uA5AHEnQg==", + "node_modules/@web/dev-server-rollup/node_modules/lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", "dev": true, - "dependencies": { - "@types/parse5": "^6.0.1", - "parse5": "^6.0.1" - }, "engines": { - "node": ">=10.0.0" + "node": ">=16.14" } }, - "node_modules/@web/test-runner": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.15.1.tgz", - "integrity": "sha512-61L4mvDSvs8Dp3TdKe7WHc8kxHndHlGheWiIFEMgbfetJua6MZ4jyPThISIHSEq3LdAv9key2aDIdmyzk0YJ6w==", + "node_modules/@web/dev-server/node_modules/@web/dev-server-core": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.7.2.tgz", + "integrity": "sha512-Q/0jpF13Ipk+qGGQ+Yx/FW1TQBYazpkfgYHHo96HBE7qv4V4KKHqHglZcSUxti/zd4bToxX1cFTz8dmbTlb8JA==", "dev": true, "dependencies": { - "@web/browser-logs": "^0.2.2", - "@web/config-loader": "^0.1.3", - "@web/dev-server": "^0.1.35", - "@web/test-runner-chrome": "^0.11.0", - "@web/test-runner-commands": "^0.6.3", - "@web/test-runner-core": "^0.10.27", - "@web/test-runner-mocha": "^0.7.5", - "camelcase": "^6.2.0", - "command-line-args": "^5.1.1", - "command-line-usage": "^6.1.1", - "convert-source-map": "^1.7.0", + "@types/koa": "^2.11.6", + "@types/ws": "^7.4.0", + "@web/parse5-utils": "^2.1.0", + "chokidar": "^3.4.3", + "clone": "^2.1.2", + "es-module-lexer": "^1.0.0", + "get-stream": "^6.0.0", + "is-stream": "^2.0.0", + "isbinaryfile": "^5.0.0", + "koa": "^2.13.0", + "koa-etag": "^4.0.0", + "koa-send": "^5.0.1", + "koa-static": "^5.0.0", + "lru-cache": "^8.0.4", + "mime-types": "^2.1.27", + "parse5": "^6.0.1", + "picomatch": "^2.2.2", + "ws": "^7.4.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@web/dev-server/node_modules/@web/parse5-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-2.1.0.tgz", + "integrity": "sha512-GzfK5disEJ6wEjoPwx8AVNwUe9gYIiwc+x//QYxYDAFKUp4Xb1OJAGLc2l2gVrSQmtPGLKrTRcW90Hv4pEq1qA==", + "dev": true, + "dependencies": { + "@types/parse5": "^6.0.1", + "parse5": "^6.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@web/dev-server/node_modules/isbinaryfile": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.2.tgz", + "integrity": "sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==", + "dev": true, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/@web/dev-server/node_modules/lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "dev": true, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@web/parse5-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-1.3.0.tgz", + "integrity": "sha512-Pgkx3ECc8EgXSlS5EyrgzSOoUbM6P8OKS471HLAyvOBcP1NCBn0to4RN/OaKASGq8qa3j+lPX9H14uA5AHEnQg==", + "dev": true, + "dependencies": { + "@types/parse5": "^6.0.1", + "parse5": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@web/test-runner": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.19.0.tgz", + "integrity": "sha512-qLUupi88OK1Kl52cWPD/2JewUCRUxYsZ1V1DyLd05P7u09zCdrUYrtkB/cViWyxlBe/TOvqkSNpcTv6zLJ9GoA==", + "dev": true, + "dependencies": { + "@web/browser-logs": "^0.4.0", + "@web/config-loader": "^0.3.0", + "@web/dev-server": "^0.4.0", + "@web/test-runner-chrome": "^0.17.0", + "@web/test-runner-commands": "^0.9.0", + "@web/test-runner-core": "^0.13.0", + "@web/test-runner-mocha": "^0.9.0", + "camelcase": "^6.2.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^7.0.1", + "convert-source-map": "^2.0.0", "diff": "^5.0.0", "globby": "^11.0.1", "nanocolors": "^0.2.1", @@ -1230,22 +1504,172 @@ "wtr": "dist/bin.js" }, "engines": { - "node": ">=12.0.0" + "node": ">=18.0.0" } }, "node_modules/@web/test-runner-chrome": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.11.0.tgz", - "integrity": "sha512-3Eq8C1XEGmfq7iwUvXy0xXfI/fbJNIq2ImDKTVdnwT4+5uTt1i8UFZxZ0PLdkWrhXVtiWI6zcZK/2VBzsGyHBA==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.17.0.tgz", + "integrity": "sha512-Il5N9z41NKWCrQM1TVgRaDWWYoJtG5Ha4fG+cN1MWL2OlzBS4WoOb4lFV3EylZ7+W3twZOFr1zy2Rx61yDYd/A==", "dev": true, "dependencies": { - "@web/test-runner-core": "^0.10.20", - "@web/test-runner-coverage-v8": "^0.5.0", + "@web/test-runner-core": "^0.13.0", + "@web/test-runner-coverage-v8": "^0.8.0", + "async-mutex": "0.4.0", "chrome-launcher": "^0.15.0", - "puppeteer-core": "^13.1.3" + "puppeteer-core": "^23.2.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@web/test-runner-chrome/node_modules/@types/convert-source-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/convert-source-map/-/convert-source-map-2.0.3.tgz", + "integrity": "sha512-ag0BfJLZf6CQz8VIuRIEYQ5Ggwk/82uvTQf27RcpyDNbY0Vw49LIPqAxk5tqYfrCs9xDaIMvl4aj7ZopnYL8bA==", + "dev": true + }, + "node_modules/@web/test-runner-chrome/node_modules/@web/browser-logs": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@web/browser-logs/-/browser-logs-0.4.0.tgz", + "integrity": "sha512-/EBiDAUCJ2DzZhaFxTPRIznEPeafdLbXShIL6aTu7x73x7ZoxSDv7DGuTsh2rWNMUa4+AKli4UORrpyv6QBOiA==", + "dev": true, + "dependencies": { + "errorstacks": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@web/test-runner-chrome/node_modules/@web/dev-server-core": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.7.2.tgz", + "integrity": "sha512-Q/0jpF13Ipk+qGGQ+Yx/FW1TQBYazpkfgYHHo96HBE7qv4V4KKHqHglZcSUxti/zd4bToxX1cFTz8dmbTlb8JA==", + "dev": true, + "dependencies": { + "@types/koa": "^2.11.6", + "@types/ws": "^7.4.0", + "@web/parse5-utils": "^2.1.0", + "chokidar": "^3.4.3", + "clone": "^2.1.2", + "es-module-lexer": "^1.0.0", + "get-stream": "^6.0.0", + "is-stream": "^2.0.0", + "isbinaryfile": "^5.0.0", + "koa": "^2.13.0", + "koa-etag": "^4.0.0", + "koa-send": "^5.0.1", + "koa-static": "^5.0.0", + "lru-cache": "^8.0.4", + "mime-types": "^2.1.27", + "parse5": "^6.0.1", + "picomatch": "^2.2.2", + "ws": "^7.4.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@web/test-runner-chrome/node_modules/@web/parse5-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-2.1.0.tgz", + "integrity": "sha512-GzfK5disEJ6wEjoPwx8AVNwUe9gYIiwc+x//QYxYDAFKUp4Xb1OJAGLc2l2gVrSQmtPGLKrTRcW90Hv4pEq1qA==", + "dev": true, + "dependencies": { + "@types/parse5": "^6.0.1", + "parse5": "^6.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@web/test-runner-chrome/node_modules/@web/test-runner-core": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/@web/test-runner-core/-/test-runner-core-0.13.3.tgz", + "integrity": "sha512-ilDqF/v2sj0sD69FNSIDT7uw4M1yTVedLBt32/lXy3MMi6suCM7m/ZlhsBy8PXhf879WMvzBOl/vhJBpEMB9vA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.11", + "@types/babel__code-frame": "^7.0.2", + "@types/co-body": "^6.1.0", + "@types/convert-source-map": "^2.0.0", + "@types/debounce": "^1.2.0", + "@types/istanbul-lib-coverage": "^2.0.3", + "@types/istanbul-reports": "^3.0.0", + "@web/browser-logs": "^0.4.0", + "@web/dev-server-core": "^0.7.2", + "chokidar": "^3.4.3", + "cli-cursor": "^3.1.0", + "co-body": "^6.1.0", + "convert-source-map": "^2.0.0", + "debounce": "^1.2.0", + "dependency-graph": "^0.11.0", + "globby": "^11.0.1", + "internal-ip": "^6.2.0", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.0.2", + "log-update": "^4.0.0", + "nanocolors": "^0.2.1", + "nanoid": "^3.1.25", + "open": "^8.0.2", + "picomatch": "^2.2.2", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@web/test-runner-chrome/node_modules/@web/test-runner-coverage-v8": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@web/test-runner-coverage-v8/-/test-runner-coverage-v8-0.8.0.tgz", + "integrity": "sha512-PskiucYpjUtgNfR2zF2AWqWwjXL7H3WW/SnCAYmzUrtob7X9o/+BjdyZ4wKbOxWWSbJO4lEdGIDLu+8X2Xw+lA==", + "dev": true, + "dependencies": { + "@web/test-runner-core": "^0.13.0", + "istanbul-lib-coverage": "^3.0.0", + "lru-cache": "^8.0.4", + "picomatch": "^2.2.2", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@web/test-runner-chrome/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/@web/test-runner-chrome/node_modules/isbinaryfile": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.2.tgz", + "integrity": "sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==", + "dev": true, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/@web/test-runner-chrome/node_modules/lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "dev": true, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@web/test-runner-chrome/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" } }, "node_modules/@web/test-runner-commands": { @@ -1335,16 +1759,148 @@ } }, "node_modules/@web/test-runner-mocha": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@web/test-runner-mocha/-/test-runner-mocha-0.7.5.tgz", - "integrity": "sha512-12/OBq6efPCAvJpcz3XJs2OO5nHe7GtBibZ8Il1a0QtsGpRmuJ4/m1EF0Fj9f6KHg7JdpGo18A37oE+5hXjHwg==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@web/test-runner-mocha/-/test-runner-mocha-0.9.0.tgz", + "integrity": "sha512-ZL9F6FXd0DBQvo/h/+mSfzFTSRVxzV9st/AHhpgABtUtV/AIpVE9to6+xdkpu6827kwjezdpuadPfg+PlrBWqQ==", "dev": true, "dependencies": { - "@types/mocha": "^8.2.0", - "@web/test-runner-core": "^0.10.20" + "@web/test-runner-core": "^0.13.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@web/test-runner-mocha/node_modules/@types/convert-source-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/convert-source-map/-/convert-source-map-2.0.3.tgz", + "integrity": "sha512-ag0BfJLZf6CQz8VIuRIEYQ5Ggwk/82uvTQf27RcpyDNbY0Vw49LIPqAxk5tqYfrCs9xDaIMvl4aj7ZopnYL8bA==", + "dev": true + }, + "node_modules/@web/test-runner-mocha/node_modules/@web/browser-logs": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@web/browser-logs/-/browser-logs-0.4.0.tgz", + "integrity": "sha512-/EBiDAUCJ2DzZhaFxTPRIznEPeafdLbXShIL6aTu7x73x7ZoxSDv7DGuTsh2rWNMUa4+AKli4UORrpyv6QBOiA==", + "dev": true, + "dependencies": { + "errorstacks": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@web/test-runner-mocha/node_modules/@web/dev-server-core": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.7.2.tgz", + "integrity": "sha512-Q/0jpF13Ipk+qGGQ+Yx/FW1TQBYazpkfgYHHo96HBE7qv4V4KKHqHglZcSUxti/zd4bToxX1cFTz8dmbTlb8JA==", + "dev": true, + "dependencies": { + "@types/koa": "^2.11.6", + "@types/ws": "^7.4.0", + "@web/parse5-utils": "^2.1.0", + "chokidar": "^3.4.3", + "clone": "^2.1.2", + "es-module-lexer": "^1.0.0", + "get-stream": "^6.0.0", + "is-stream": "^2.0.0", + "isbinaryfile": "^5.0.0", + "koa": "^2.13.0", + "koa-etag": "^4.0.0", + "koa-send": "^5.0.1", + "koa-static": "^5.0.0", + "lru-cache": "^8.0.4", + "mime-types": "^2.1.27", + "parse5": "^6.0.1", + "picomatch": "^2.2.2", + "ws": "^7.4.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@web/test-runner-mocha/node_modules/@web/parse5-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-2.1.0.tgz", + "integrity": "sha512-GzfK5disEJ6wEjoPwx8AVNwUe9gYIiwc+x//QYxYDAFKUp4Xb1OJAGLc2l2gVrSQmtPGLKrTRcW90Hv4pEq1qA==", + "dev": true, + "dependencies": { + "@types/parse5": "^6.0.1", + "parse5": "^6.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@web/test-runner-mocha/node_modules/@web/test-runner-core": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/@web/test-runner-core/-/test-runner-core-0.13.3.tgz", + "integrity": "sha512-ilDqF/v2sj0sD69FNSIDT7uw4M1yTVedLBt32/lXy3MMi6suCM7m/ZlhsBy8PXhf879WMvzBOl/vhJBpEMB9vA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.11", + "@types/babel__code-frame": "^7.0.2", + "@types/co-body": "^6.1.0", + "@types/convert-source-map": "^2.0.0", + "@types/debounce": "^1.2.0", + "@types/istanbul-lib-coverage": "^2.0.3", + "@types/istanbul-reports": "^3.0.0", + "@web/browser-logs": "^0.4.0", + "@web/dev-server-core": "^0.7.2", + "chokidar": "^3.4.3", + "cli-cursor": "^3.1.0", + "co-body": "^6.1.0", + "convert-source-map": "^2.0.0", + "debounce": "^1.2.0", + "dependency-graph": "^0.11.0", + "globby": "^11.0.1", + "internal-ip": "^6.2.0", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.0.2", + "log-update": "^4.0.0", + "nanocolors": "^0.2.1", + "nanoid": "^3.1.25", + "open": "^8.0.2", + "picomatch": "^2.2.2", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@web/test-runner-mocha/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/@web/test-runner-mocha/node_modules/isbinaryfile": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.2.tgz", + "integrity": "sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==", + "dev": true, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/@web/test-runner-mocha/node_modules/lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "dev": true, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@web/test-runner-mocha/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" } }, "node_modules/@web/test-runner-playwright": { @@ -1361,6 +1917,155 @@ "node": ">=12.0.0" } }, + "node_modules/@web/test-runner/node_modules/@types/convert-source-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/convert-source-map/-/convert-source-map-2.0.3.tgz", + "integrity": "sha512-ag0BfJLZf6CQz8VIuRIEYQ5Ggwk/82uvTQf27RcpyDNbY0Vw49LIPqAxk5tqYfrCs9xDaIMvl4aj7ZopnYL8bA==", + "dev": true + }, + "node_modules/@web/test-runner/node_modules/@web/browser-logs": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@web/browser-logs/-/browser-logs-0.4.0.tgz", + "integrity": "sha512-/EBiDAUCJ2DzZhaFxTPRIznEPeafdLbXShIL6aTu7x73x7ZoxSDv7DGuTsh2rWNMUa4+AKli4UORrpyv6QBOiA==", + "dev": true, + "dependencies": { + "errorstacks": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@web/test-runner/node_modules/@web/dev-server-core": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.7.2.tgz", + "integrity": "sha512-Q/0jpF13Ipk+qGGQ+Yx/FW1TQBYazpkfgYHHo96HBE7qv4V4KKHqHglZcSUxti/zd4bToxX1cFTz8dmbTlb8JA==", + "dev": true, + "dependencies": { + "@types/koa": "^2.11.6", + "@types/ws": "^7.4.0", + "@web/parse5-utils": "^2.1.0", + "chokidar": "^3.4.3", + "clone": "^2.1.2", + "es-module-lexer": "^1.0.0", + "get-stream": "^6.0.0", + "is-stream": "^2.0.0", + "isbinaryfile": "^5.0.0", + "koa": "^2.13.0", + "koa-etag": "^4.0.0", + "koa-send": "^5.0.1", + "koa-static": "^5.0.0", + "lru-cache": "^8.0.4", + "mime-types": "^2.1.27", + "parse5": "^6.0.1", + "picomatch": "^2.2.2", + "ws": "^7.4.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@web/test-runner/node_modules/@web/parse5-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-2.1.0.tgz", + "integrity": "sha512-GzfK5disEJ6wEjoPwx8AVNwUe9gYIiwc+x//QYxYDAFKUp4Xb1OJAGLc2l2gVrSQmtPGLKrTRcW90Hv4pEq1qA==", + "dev": true, + "dependencies": { + "@types/parse5": "^6.0.1", + "parse5": "^6.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@web/test-runner/node_modules/@web/test-runner-commands": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@web/test-runner-commands/-/test-runner-commands-0.9.0.tgz", + "integrity": "sha512-zeLI6QdH0jzzJMDV5O42Pd8WLJtYqovgdt0JdytgHc0d1EpzXDsc7NTCJSImboc2NcayIsWAvvGGeRF69SMMYg==", + "dev": true, + "dependencies": { + "@web/test-runner-core": "^0.13.0", + "mkdirp": "^1.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@web/test-runner/node_modules/@web/test-runner-core": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/@web/test-runner-core/-/test-runner-core-0.13.3.tgz", + "integrity": "sha512-ilDqF/v2sj0sD69FNSIDT7uw4M1yTVedLBt32/lXy3MMi6suCM7m/ZlhsBy8PXhf879WMvzBOl/vhJBpEMB9vA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.11", + "@types/babel__code-frame": "^7.0.2", + "@types/co-body": "^6.1.0", + "@types/convert-source-map": "^2.0.0", + "@types/debounce": "^1.2.0", + "@types/istanbul-lib-coverage": "^2.0.3", + "@types/istanbul-reports": "^3.0.0", + "@web/browser-logs": "^0.4.0", + "@web/dev-server-core": "^0.7.2", + "chokidar": "^3.4.3", + "cli-cursor": "^3.1.0", + "co-body": "^6.1.0", + "convert-source-map": "^2.0.0", + "debounce": "^1.2.0", + "dependency-graph": "^0.11.0", + "globby": "^11.0.1", + "internal-ip": "^6.2.0", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.0.2", + "log-update": "^4.0.0", + "nanocolors": "^0.2.1", + "nanoid": "^3.1.25", + "open": "^8.0.2", + "picomatch": "^2.2.2", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@web/test-runner/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/@web/test-runner/node_modules/isbinaryfile": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.2.tgz", + "integrity": "sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==", + "dev": true, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/@web/test-runner/node_modules/lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "dev": true, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@web/test-runner/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@web/test-runner/node_modules/source-map": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", @@ -1405,15 +2110,15 @@ } }, "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, "dependencies": { - "debug": "4" + "debug": "^4.3.4" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/ajv": { @@ -1587,6 +2292,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -1605,6 +2322,15 @@ "lodash": "^4.17.14" } }, + "node_modules/async-mutex": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.0.tgz", + "integrity": "sha512-eJFZ1YhRR8UN8eBLoNzcDPcy/jqjsg6I1AP+KvWQX80BqOSW1oJPJXDylPUEeMr2ZQvHgnQ//Lp6f3RQ1zI7HA==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", @@ -1626,12 +2352,65 @@ "node": ">=4" } }, + "node_modules/b4a": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", + "dev": true + }, "node_modules/balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, + "node_modules/bare-events": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", + "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", + "dev": true, + "optional": true + }, + "node_modules/bare-fs": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.5.tgz", + "integrity": "sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==", + "dev": true, + "optional": true, + "dependencies": { + "bare-events": "^2.0.0", + "bare-path": "^2.0.0", + "bare-stream": "^2.0.0" + } + }, + "node_modules/bare-os": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.4.tgz", + "integrity": "sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==", + "dev": true, + "optional": true + }, + "node_modules/bare-path": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz", + "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==", + "dev": true, + "optional": true, + "dependencies": { + "bare-os": "^2.1.0" + } + }, + "node_modules/bare-stream": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.3.0.tgz", + "integrity": "sha512-pVRWciewGUeCyKEuRxwv06M079r+fRjAQjBEK2P6OYGrO43O+Z0LrPZZEjlc4mB6C2RpZ9AxJ1s7NLEtOHO6eA==", + "dev": true, + "optional": true, + "dependencies": { + "b4a": "^1.6.6", + "streamx": "^2.20.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -1652,6 +2431,15 @@ } ] }, + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -1716,18 +2504,6 @@ "node": "*" } }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", @@ -1809,6 +2585,21 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/chalk-template": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", + "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/chalk-template?sponsor=1" + } + }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -1836,16 +2627,10 @@ "fsevents": "~2.3.2" } }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, "node_modules/chrome-launcher": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.1.tgz", - "integrity": "sha512-UugC8u59/w2AyX5sHLZUHoxBAiSiunUhZa3zZwMH6zPVis0C3dDKiRWyUGIo14tTbZHGVviWxv3PQWZ7taZ4fg==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", "dev": true, "dependencies": { "@types/node": "*", @@ -1860,6 +2645,20 @@ "node": ">=12.13.0" } }, + "node_modules/chromium-bidi": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.5.tgz", + "integrity": "sha512-RuLrmzYrxSb0s9SgpB+QN5jJucPduZQ/9SIe76MDxYJuecPW5mxMdacJ1f4EtgiV+R0p3sCkznTMvH0MPGFqjA==", + "dev": true, + "dependencies": { + "mitt": "3.0.1", + "urlpattern-polyfill": "10.0.0", + "zod": "3.23.8" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, "node_modules/cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -1872,6 +2671,37 @@ "node": ">=8" } }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", @@ -1937,107 +2767,36 @@ } }, "node_modules/command-line-usage": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", - "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", - "dev": true, - "dependencies": { - "array-back": "^4.0.2", - "chalk": "^2.4.2", - "table-layout": "^1.0.2", - "typical": "^5.2.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/command-line-usage/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.3.tgz", + "integrity": "sha512-PqMLy5+YGwhMh1wS04mVG44oqDsgyLRSKJBdOo1bnYhMKBW65gZF1dRp2OZRhiTjgUHljy99qkO7bsctLaw35Q==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "array-back": "^6.2.2", + "chalk-template": "^0.4.0", + "table-layout": "^4.1.0", + "typical": "^7.1.1" }, "engines": { - "node": ">=4" + "node": ">=12.20.0" } }, "node_modules/command-line-usage/node_modules/array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/command-line-usage/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/command-line-usage/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/command-line-usage/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/command-line-usage/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/command-line-usage/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/command-line-usage/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", + "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=12.17" } }, "node_modules/command-line-usage/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-7.2.0.tgz", + "integrity": "sha512-W1+HdVRUl8fS3MZ9ogD51GOb46xMmhAZzR0WPw5jcgIZQJVvkddYzAl4YTU6g5w33Y1iRQLdIi2/1jhi2RNL0g==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12.17" } }, "node_modules/concat-map": { @@ -2101,15 +2860,6 @@ "node": ">= 0.8" } }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dev": true, - "dependencies": { - "node-fetch": "2.6.7" - } - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -2124,6 +2874,15 @@ "node": ">= 8" } }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, "node_modules/debounce": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", @@ -2131,12 +2890,12 @@ "dev": true }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "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.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -2147,27 +2906,12 @@ } } }, - "node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/deep-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", "dev": true }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -2175,14 +2919,26 @@ "dev": true }, "node_modules/deepmerge": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", - "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", + "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/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -2208,6 +2964,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -2239,9 +3009,9 @@ "dev": true }, "node_modules/devtools-protocol": { - "version": "0.0.981744", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", - "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==", + "version": "0.0.1342118", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1342118.tgz", + "integrity": "sha512-75fMas7PkYNDTmDyb6PRJCH7ILmHLp+BhrZGeMsa4bCh40DTxgCz2NRy5UDzII4C5KuD0oBMZ9vXKhEl6UD/3w==", "dev": true }, "node_modules/diff": { @@ -2372,6 +3142,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "dev": true + }, "node_modules/es-set-tostringtag": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", @@ -2422,6 +3198,15 @@ "esbuild": "bin/esbuild" } }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -2440,6 +3225,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, "node_modules/eslint": { "version": "7.32.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", @@ -2581,12 +3387,6 @@ "ms": "^2.1.1" } }, - "node_modules/eslint-import-resolver-node/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/eslint-module-utils": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", @@ -2613,12 +3413,6 @@ "ms": "^2.1.1" } }, - "node_modules/eslint-module-utils/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/eslint-plugin-import": { "version": "2.27.5", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", @@ -2669,12 +3463,6 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/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/eslint-plugin-lit": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-1.4.1.tgz", @@ -2877,9 +3665,9 @@ } }, "node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, "node_modules/esutils": { @@ -2900,6 +3688,29 @@ "node": ">= 0.6" } }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -2947,6 +3758,12 @@ "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", "dev": true }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true + }, "node_modules/fast-glob": { "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", @@ -3029,19 +3846,6 @@ "node": ">=4.0.0" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -3079,11 +3883,19 @@ "node": ">= 0.6" } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } }, "node_modules/fs.realpath": { "version": "1.0.0", @@ -3144,6 +3956,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-intrinsic": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", @@ -3167,6 +3988,18 @@ "node": ">=4" } }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-symbol-description": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", @@ -3183,6 +4016,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-uri": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", + "dev": true, + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4", + "fs-extra": "^11.2.0" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -3277,6 +4125,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -3424,17 +4278,39 @@ "node": ">= 0.6" } }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "dev": true, "dependencies": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" }, "engines": { - "node": ">= 6" + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" } }, "node_modules/iconv-lite": { @@ -3528,6 +4404,24 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/internal-ip": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-6.2.0.tgz", + "integrity": "sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==", + "dev": true, + "dependencies": { + "default-gateway": "^6.0.0", + "ipaddr.js": "^1.9.1", + "is-ip": "^3.1.0", + "p-event": "^4.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/internal-ip?sponsor=1" + } + }, "node_modules/internal-slot": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", @@ -3548,6 +4442,43 @@ "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==", "dev": true }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true + }, + "node_modules/ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", @@ -3602,21 +4533,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dev": true, - "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -3716,6 +4632,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-ip": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", + "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", + "dev": true, + "dependencies": { + "ip-regex": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", @@ -3786,6 +4714,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", @@ -3887,32 +4827,17 @@ } }, "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "dependencies": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, "node_modules/istanbul-reports": { @@ -3947,6 +4872,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -3959,6 +4890,18 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, "node_modules/just-extend": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", @@ -4075,12 +5018,6 @@ "ms": "^2.1.1" } }, - "node_modules/koa-static/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/koa/node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -4104,9 +5041,9 @@ } }, "node_modules/lighthouse-logger": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz", - "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", + "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", "dev": true, "dependencies": { "debug": "^2.6.9", @@ -4122,6 +5059,12 @@ "ms": "2.0.0" } }, + "node_modules/lighthouse-logger/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/lit": { "version": "2.7.6", "resolved": "https://registry.npmjs.org/lit/-/lit-2.7.6.tgz", @@ -4150,18 +5093,6 @@ "@types/trusted-types": "^2.0.2" } }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -4210,6 +5141,42 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/marky": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", @@ -4225,6 +5192,12 @@ "node": ">= 0.6" } }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -4298,12 +5271,24 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", "dev": true }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/mock-xmlhttprequest": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/mock-xmlhttprequest/-/mock-xmlhttprequest-8.1.0.tgz", @@ -4314,9 +5299,9 @@ } }, "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "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/nanocolors": { @@ -4352,6 +5337,15 @@ "node": ">= 0.6" } }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/nise": { "version": "5.1.4", "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz", @@ -4380,48 +5374,6 @@ "isarray": "0.0.1" } }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -4431,6 +5383,18 @@ "node": ">=0.10.0" } }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -4574,40 +5538,72 @@ "node": ">= 0.8.0" } }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/p-event": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", + "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "p-timeout": "^3.1.0" }, "engines": { - "node": ">=6" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "p-finally": "^1.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/pac-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz", + "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==", "dev": true, + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.5", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.4" + }, "engines": { - "node": ">=6" + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dev": true, + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" } }, "node_modules/parent-module": { @@ -4646,15 +5642,6 @@ "node": ">= 0.8" } }, - "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", @@ -4701,21 +5688,9 @@ "dev": true, "engines": { "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/playwright": { @@ -4769,24 +5744,6 @@ "ms": "^2.1.1" } }, - "node_modules/portfinder/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/portfinder/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/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -4832,6 +5789,25 @@ "node": ">=0.4.0" } }, + "node_modules/proxy-agent": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -4839,9 +5815,9 @@ "dev": true }, "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "dev": true, "dependencies": { "end-of-stream": "^1.1.0", @@ -4849,48 +5825,42 @@ } }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "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/puppeteer-core": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.7.0.tgz", - "integrity": "sha512-rXja4vcnAzFAP1OVLq/5dWNfwBGuzcOARJ6qGV7oAZhnLmVRU8G5MsdeQEAOy332ZhkIOnn9jp15R89LKHyp2Q==", + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.4.0.tgz", + "integrity": "sha512-fqkIP5FOcb38jfBj/OcBz1wFaI9nk40uQKSORvnXws6wCbep2dg8yxZ3ddJxBIfQsxoiEOvnrykFinUScrB/ew==", "dev": true, "dependencies": { - "cross-fetch": "3.1.5", - "debug": "4.3.4", - "devtools-protocol": "0.0.981744", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.1", - "pkg-dir": "4.2.0", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.5.0" + "@puppeteer/browsers": "2.4.0", + "chromium-bidi": "0.6.5", + "debug": "^4.3.7", + "devtools-protocol": "0.0.1342118", + "typed-query-selector": "^2.12.0", + "ws": "^8.18.0" }, "engines": { - "node": ">=10.18.1" + "node": ">=18" } }, "node_modules/puppeteer-core/node_modules/ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -4936,6 +5906,12 @@ } ] }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true + }, "node_modules/raw-body": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", @@ -4985,15 +5961,6 @@ "node": ">=8.10.0" } }, - "node_modules/reduce-flatten": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", - "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/regexp.prototype.flags": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", @@ -5023,6 +5990,15 @@ "url": "https://github.com/sponsors/mysticatea" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -5146,20 +6122,46 @@ } }, "node_modules/rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.4.tgz", + "integrity": "sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==", "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=10.0.0" + "node": ">=18.0.0", + "npm": ">=8.0.0" }, "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.22.4", + "@rollup/rollup-android-arm64": "4.22.4", + "@rollup/rollup-darwin-arm64": "4.22.4", + "@rollup/rollup-darwin-x64": "4.22.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.22.4", + "@rollup/rollup-linux-arm-musleabihf": "4.22.4", + "@rollup/rollup-linux-arm64-gnu": "4.22.4", + "@rollup/rollup-linux-arm64-musl": "4.22.4", + "@rollup/rollup-linux-powerpc64le-gnu": "4.22.4", + "@rollup/rollup-linux-riscv64-gnu": "4.22.4", + "@rollup/rollup-linux-s390x-gnu": "4.22.4", + "@rollup/rollup-linux-x64-gnu": "4.22.4", + "@rollup/rollup-linux-x64-musl": "4.22.4", + "@rollup/rollup-win32-arm64-msvc": "4.22.4", + "@rollup/rollup-win32-ia32-msvc": "4.22.4", + "@rollup/rollup-win32-x64-msvc": "4.22.4", "fsevents": "~2.3.2" } }, + "node_modules/rollup/node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -5309,6 +6311,54 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", + "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -5324,13 +6374,18 @@ "node": ">= 0.6" } }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/streamx": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz", + "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==", "dev": true, "dependencies": { - "safe-buffer": "~5.1.0" + "fast-fifo": "^1.3.2", + "queue-tick": "^1.0.1", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" } }, "node_modules/string-width": { @@ -5396,6 +6451,15 @@ "node": ">=4" } }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -5449,36 +6513,25 @@ } }, "node_modules/table-layout": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", - "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-4.1.1.tgz", + "integrity": "sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==", "dev": true, "dependencies": { - "array-back": "^4.0.1", - "deep-extend": "~0.6.0", - "typical": "^5.2.0", - "wordwrapjs": "^4.0.0" + "array-back": "^6.2.2", + "wordwrapjs": "^5.1.0" }, "engines": { - "node": ">=8.0.0" + "node": ">=12.17" } }, "node_modules/table-layout/node_modules/array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/table-layout/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", + "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12.17" } }, "node_modules/table/node_modules/ajv": { @@ -5504,56 +6557,37 @@ "dev": true }, "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", + "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", "dev": true, "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-fs/node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^2.1.1", + "bare-path": "^2.1.0" } }, - "node_modules/tar-fs/node_modules/readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, - "node_modules/tar-fs/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "node_modules/text-decoder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.0.tgz", + "integrity": "sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==", "dev": true, "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" + "b4a": "^1.6.4" } }, "node_modules/text-table": { @@ -5589,6 +6623,18 @@ "node": ">=0.6" } }, + "node_modules/tr46": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "dev": true, + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/tsconfig-paths": { "version": "3.14.2", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", @@ -5708,6 +6754,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typed-query-selector": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz", + "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==", + "dev": true + }, "node_modules/typescript": { "version": "4.5.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.3.tgz", @@ -5774,6 +6826,15 @@ "through": "^2.3.8" } }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -5792,10 +6853,10 @@ "punycode": "^2.1.0" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "node_modules/urlpattern-polyfill": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", + "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", "dev": true }, "node_modules/v8-compile-cache": { @@ -5827,6 +6888,28 @@ "node": ">= 0.8" } }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", + "dev": true, + "dependencies": { + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -5888,25 +6971,12 @@ } }, "node_modules/wordwrapjs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", - "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", - "dev": true, - "dependencies": { - "reduce-flatten": "^2.0.0", - "typical": "^5.2.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/wordwrapjs/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.0.tgz", + "integrity": "sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12.17" } }, "node_modules/wrap-ansi": { @@ -5930,9 +7000,9 @@ "dev": true }, "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, "engines": { "node": ">=8.3.0" @@ -5950,6 +7020,42 @@ } } }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -5968,6 +7074,15 @@ "engines": { "node": ">= 4.0.0" } + }, + "node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } } }, "dependencies": { @@ -6217,65 +7332,192 @@ "@web/test-runner-commands": "^0.6.1" } }, - "@open-wc/testing": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.1.7.tgz", - "integrity": "sha512-HCS2LuY6hXtEwjqmad+eanId5H7E+3mUi9Z3rjAhH+1DCJ53lUnjzWF1lbCYbREqrdCpmzZvW1t5R3e9gJZSCA==", + "@open-wc/testing": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.1.7.tgz", + "integrity": "sha512-HCS2LuY6hXtEwjqmad+eanId5H7E+3mUi9Z3rjAhH+1DCJ53lUnjzWF1lbCYbREqrdCpmzZvW1t5R3e9gJZSCA==", + "dev": true, + "requires": { + "@esm-bundle/chai": "^4.3.4-fix.0", + "@open-wc/chai-dom-equals": "^0.12.36", + "@open-wc/semantic-dom-diff": "^0.19.7", + "@open-wc/testing-helpers": "^2.1.4", + "@types/chai": "^4.2.11", + "@types/chai-dom": "^0.0.12", + "@types/sinon-chai": "^3.2.3", + "chai-a11y-axe": "^1.3.2" + } + }, + "@open-wc/testing-helpers": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@open-wc/testing-helpers/-/testing-helpers-2.1.4.tgz", + "integrity": "sha512-iZJxxKI9jRgnPczm8p2jpuvBZ3DHYSLrBmhDfzs7ol8vXMNt+HluzM1j1TSU95MFVGnfaspvvt9fMbXKA7cNcA==", + "dev": true, + "requires": { + "@open-wc/scoped-elements": "^2.1.3", + "lit": "^2.0.0", + "lit-html": "^2.0.0" + } + }, + "@puppeteer/browsers": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.4.0.tgz", + "integrity": "sha512-x8J1csfIygOwf6D6qUAZ0ASk3z63zPb7wkNeHRerCMh82qWKUrOgkuP005AJC8lDL6/evtXETGEJVcwykKT4/g==", + "dev": true, + "requires": { + "debug": "^4.3.6", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.4.0", + "semver": "^7.6.3", + "tar-fs": "^3.0.6", + "unbzip2-stream": "^1.4.3", + "yargs": "^17.7.2" + }, + "dependencies": { + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true + } + } + }, + "@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, + "requires": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + } + }, + "@rollup/pluginutils": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.2.tgz", + "integrity": "sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + } + }, + "@rollup/rollup-android-arm-eabi": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz", + "integrity": "sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==", + "dev": true, + "optional": true + }, + "@rollup/rollup-android-arm64": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz", + "integrity": "sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-arm64": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz", + "integrity": "sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-x64": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz", + "integrity": "sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz", + "integrity": "sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-musleabihf": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz", + "integrity": "sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-gnu": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz", + "integrity": "sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-musl": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz", + "integrity": "sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz", + "integrity": "sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-riscv64-gnu": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz", + "integrity": "sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-s390x-gnu": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz", + "integrity": "sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-gnu": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz", + "integrity": "sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==", "dev": true, - "requires": { - "@esm-bundle/chai": "^4.3.4-fix.0", - "@open-wc/chai-dom-equals": "^0.12.36", - "@open-wc/semantic-dom-diff": "^0.19.7", - "@open-wc/testing-helpers": "^2.1.4", - "@types/chai": "^4.2.11", - "@types/chai-dom": "^0.0.12", - "@types/sinon-chai": "^3.2.3", - "chai-a11y-axe": "^1.3.2" - } + "optional": true }, - "@open-wc/testing-helpers": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@open-wc/testing-helpers/-/testing-helpers-2.1.4.tgz", - "integrity": "sha512-iZJxxKI9jRgnPczm8p2jpuvBZ3DHYSLrBmhDfzs7ol8vXMNt+HluzM1j1TSU95MFVGnfaspvvt9fMbXKA7cNcA==", + "@rollup/rollup-linux-x64-musl": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz", + "integrity": "sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==", "dev": true, - "requires": { - "@open-wc/scoped-elements": "^2.1.3", - "lit": "^2.0.0", - "lit-html": "^2.0.0" - } + "optional": true }, - "@rollup/plugin-node-resolve": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz", - "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==", + "@rollup/rollup-win32-arm64-msvc": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz", + "integrity": "sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==", "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "deepmerge": "^4.2.2", - "is-builtin-module": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - } + "optional": true }, - "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "@rollup/rollup-win32-ia32-msvc": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz", + "integrity": "sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==", "dev": true, - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "dependencies": { - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - } - } + "optional": true + }, + "@rollup/rollup-win32-x64-msvc": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz", + "integrity": "sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==", + "dev": true, + "optional": true }, "@sinonjs/commons": { "version": "2.0.0", @@ -6312,6 +7554,12 @@ "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", "dev": true }, + "@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true + }, "@types/accepts": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", @@ -6363,9 +7611,9 @@ } }, "@types/command-line-args": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.2.0.tgz", - "integrity": "sha512-UuKzKpJJ/Ief6ufIaIzr3A/0XnluX7RvFgwkV89Yzvm77wCh1kFaFmqN8XEnGcN62EuHdedQjEMb8mYxFLGPyA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.2.3.tgz", + "integrity": "sha512-uv0aG6R0Y8WHZLTamZwtfsDLVRnOa+n+n5rEvFWL5Na5gZ8V2Teab/duDPFzIIIhs9qizDpcavCusCLJZu62Kw==", "dev": true }, "@types/connect": { @@ -6413,6 +7661,12 @@ "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", "dev": true }, + "@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==", + "dev": true + }, "@types/express": { "version": "4.17.17", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", @@ -6521,12 +7775,6 @@ "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", "dev": true }, - "@types/mocha": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", - "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", - "dev": true - }, "@types/node": { "version": "18.14.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.2.tgz", @@ -6552,13 +7800,10 @@ "dev": true }, "@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "requires": { - "@types/node": "*" - } + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true }, "@types/serve-static": { "version": "1.15.1", @@ -6610,9 +7855,9 @@ } }, "@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, "optional": true, "requires": { @@ -6776,62 +8021,83 @@ } }, "@web/config-loader": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@web/config-loader/-/config-loader-0.1.3.tgz", - "integrity": "sha512-XVKH79pk4d3EHRhofete8eAnqto1e8mCRAqPV00KLNFzCWSe8sWmLnqKCqkPNARC6nksMaGrATnA5sPDRllMpQ==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@web/config-loader/-/config-loader-0.3.2.tgz", + "integrity": "sha512-Vrjv/FexBGmAdnCYpJKLHX1dfT1UaUdvHmX1JRaWos9OvDf/tFznYJ5SpJwww3Rl87/ewvLSYG7kfsMqEAsizQ==", + "dev": true + }, + "@web/dev-server": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/@web/dev-server/-/dev-server-0.4.6.tgz", + "integrity": "sha512-jj/1bcElAy5EZet8m2CcUdzxT+CRvUjIXGh8Lt7vxtthkN9PzY9wlhWx/9WOs5iwlnG1oj0VGo6f/zvbPO0s9w==", "dev": true, "requires": { - "semver": "^7.3.4" + "@babel/code-frame": "^7.12.11", + "@types/command-line-args": "^5.0.0", + "@web/config-loader": "^0.3.0", + "@web/dev-server-core": "^0.7.2", + "@web/dev-server-rollup": "^0.6.1", + "camelcase": "^6.2.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^7.0.1", + "debounce": "^1.2.0", + "deepmerge": "^4.2.2", + "internal-ip": "^6.2.0", + "nanocolors": "^0.2.1", + "open": "^8.0.2", + "portfinder": "^1.0.32" }, "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "@web/dev-server-core": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.7.2.tgz", + "integrity": "sha512-Q/0jpF13Ipk+qGGQ+Yx/FW1TQBYazpkfgYHHo96HBE7qv4V4KKHqHglZcSUxti/zd4bToxX1cFTz8dmbTlb8JA==", "dev": true, "requires": { - "yallist": "^4.0.0" + "@types/koa": "^2.11.6", + "@types/ws": "^7.4.0", + "@web/parse5-utils": "^2.1.0", + "chokidar": "^3.4.3", + "clone": "^2.1.2", + "es-module-lexer": "^1.0.0", + "get-stream": "^6.0.0", + "is-stream": "^2.0.0", + "isbinaryfile": "^5.0.0", + "koa": "^2.13.0", + "koa-etag": "^4.0.0", + "koa-send": "^5.0.1", + "koa-static": "^5.0.0", + "lru-cache": "^8.0.4", + "mime-types": "^2.1.27", + "parse5": "^6.0.1", + "picomatch": "^2.2.2", + "ws": "^7.4.2" } }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "@web/parse5-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-2.1.0.tgz", + "integrity": "sha512-GzfK5disEJ6wEjoPwx8AVNwUe9gYIiwc+x//QYxYDAFKUp4Xb1OJAGLc2l2gVrSQmtPGLKrTRcW90Hv4pEq1qA==", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "@types/parse5": "^6.0.1", + "parse5": "^6.0.1" } }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "isbinaryfile": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.2.tgz", + "integrity": "sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==", + "dev": true + }, + "lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", "dev": true } } }, - "@web/dev-server": { - "version": "0.1.35", - "resolved": "https://registry.npmjs.org/@web/dev-server/-/dev-server-0.1.35.tgz", - "integrity": "sha512-E7TSTSFdGPzhkiE3kIVt8i49gsiAYpJIZHzs1vJmVfdt8U4rsmhE+5roezxZo0hkEw4mNsqj9zCc4Dzqy/IFHg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.11", - "@types/command-line-args": "^5.0.0", - "@web/config-loader": "^0.1.3", - "@web/dev-server-core": "^0.3.19", - "@web/dev-server-rollup": "^0.3.19", - "camelcase": "^6.2.0", - "command-line-args": "^5.1.1", - "command-line-usage": "^6.1.1", - "debounce": "^1.2.0", - "deepmerge": "^4.2.2", - "ip": "^1.1.5", - "nanocolors": "^0.2.1", - "open": "^8.0.2", - "portfinder": "^1.0.32" - } - }, "@web/dev-server-core": { "version": "0.3.19", "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.3.19.tgz", @@ -6858,24 +8124,6 @@ "ws": "^7.4.2" }, "dependencies": { - "es-module-lexer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.0.tgz", - "integrity": "sha512-2BMfqBDeVCcOlLaL1ZAfp+D868SczNpKArrTM3dhpd7dK/OVlogzY15qpUngt+LMTq5UC/csb9vVQAgupucSbA==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -6907,43 +8155,66 @@ } }, "@web/dev-server-rollup": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/@web/dev-server-rollup/-/dev-server-rollup-0.3.21.tgz", - "integrity": "sha512-138t+vMFkegRip6Rtlz68Bo5rl984C9c2rLg3dWl9JEEJSQcWgA3iEwXYh4xTc52WjXnM3/LpboAjTYQOMyfrA==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@web/dev-server-rollup/-/dev-server-rollup-0.6.4.tgz", + "integrity": "sha512-sJZfTGCCrdku5xYnQQG51odGI092hKY9YFM0X3Z0tRY3iXKXcYRaLZrErw5KfCxr6g0JRuhe4BBhqXTA5Q2I3Q==", "dev": true, "requires": { - "@rollup/plugin-node-resolve": "^13.0.4", - "@web/dev-server-core": "^0.3.19", + "@rollup/plugin-node-resolve": "^15.0.1", + "@web/dev-server-core": "^0.7.2", "nanocolors": "^0.2.1", "parse5": "^6.0.1", - "rollup": "^2.67.0", - "whatwg-url": "^11.0.0" + "rollup": "^4.4.0", + "whatwg-url": "^14.0.0" }, "dependencies": { - "tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "@web/dev-server-core": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.7.2.tgz", + "integrity": "sha512-Q/0jpF13Ipk+qGGQ+Yx/FW1TQBYazpkfgYHHo96HBE7qv4V4KKHqHglZcSUxti/zd4bToxX1cFTz8dmbTlb8JA==", "dev": true, "requires": { - "punycode": "^2.1.1" + "@types/koa": "^2.11.6", + "@types/ws": "^7.4.0", + "@web/parse5-utils": "^2.1.0", + "chokidar": "^3.4.3", + "clone": "^2.1.2", + "es-module-lexer": "^1.0.0", + "get-stream": "^6.0.0", + "is-stream": "^2.0.0", + "isbinaryfile": "^5.0.0", + "koa": "^2.13.0", + "koa-etag": "^4.0.0", + "koa-send": "^5.0.1", + "koa-static": "^5.0.0", + "lru-cache": "^8.0.4", + "mime-types": "^2.1.27", + "parse5": "^6.0.1", + "picomatch": "^2.2.2", + "ws": "^7.4.2" } }, - "webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true - }, - "whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "@web/parse5-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-2.1.0.tgz", + "integrity": "sha512-GzfK5disEJ6wEjoPwx8AVNwUe9gYIiwc+x//QYxYDAFKUp4Xb1OJAGLc2l2gVrSQmtPGLKrTRcW90Hv4pEq1qA==", "dev": true, "requires": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" + "@types/parse5": "^6.0.1", + "parse5": "^6.0.1" } + }, + "isbinaryfile": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.2.tgz", + "integrity": "sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==", + "dev": true + }, + "lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "dev": true } } }, @@ -6958,22 +8229,22 @@ } }, "@web/test-runner": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.15.1.tgz", - "integrity": "sha512-61L4mvDSvs8Dp3TdKe7WHc8kxHndHlGheWiIFEMgbfetJua6MZ4jyPThISIHSEq3LdAv9key2aDIdmyzk0YJ6w==", - "dev": true, - "requires": { - "@web/browser-logs": "^0.2.2", - "@web/config-loader": "^0.1.3", - "@web/dev-server": "^0.1.35", - "@web/test-runner-chrome": "^0.11.0", - "@web/test-runner-commands": "^0.6.3", - "@web/test-runner-core": "^0.10.27", - "@web/test-runner-mocha": "^0.7.5", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.19.0.tgz", + "integrity": "sha512-qLUupi88OK1Kl52cWPD/2JewUCRUxYsZ1V1DyLd05P7u09zCdrUYrtkB/cViWyxlBe/TOvqkSNpcTv6zLJ9GoA==", + "dev": true, + "requires": { + "@web/browser-logs": "^0.4.0", + "@web/config-loader": "^0.3.0", + "@web/dev-server": "^0.4.0", + "@web/test-runner-chrome": "^0.17.0", + "@web/test-runner-commands": "^0.9.0", + "@web/test-runner-core": "^0.13.0", + "@web/test-runner-mocha": "^0.9.0", "camelcase": "^6.2.0", "command-line-args": "^5.1.1", - "command-line-usage": "^6.1.1", - "convert-source-map": "^1.7.0", + "command-line-usage": "^7.0.1", + "convert-source-map": "^2.0.0", "diff": "^5.0.0", "globby": "^11.0.1", "nanocolors": "^0.2.1", @@ -6981,6 +8252,125 @@ "source-map": "^0.7.3" }, "dependencies": { + "@types/convert-source-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/convert-source-map/-/convert-source-map-2.0.3.tgz", + "integrity": "sha512-ag0BfJLZf6CQz8VIuRIEYQ5Ggwk/82uvTQf27RcpyDNbY0Vw49LIPqAxk5tqYfrCs9xDaIMvl4aj7ZopnYL8bA==", + "dev": true + }, + "@web/browser-logs": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@web/browser-logs/-/browser-logs-0.4.0.tgz", + "integrity": "sha512-/EBiDAUCJ2DzZhaFxTPRIznEPeafdLbXShIL6aTu7x73x7ZoxSDv7DGuTsh2rWNMUa4+AKli4UORrpyv6QBOiA==", + "dev": true, + "requires": { + "errorstacks": "^2.2.0" + } + }, + "@web/dev-server-core": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.7.2.tgz", + "integrity": "sha512-Q/0jpF13Ipk+qGGQ+Yx/FW1TQBYazpkfgYHHo96HBE7qv4V4KKHqHglZcSUxti/zd4bToxX1cFTz8dmbTlb8JA==", + "dev": true, + "requires": { + "@types/koa": "^2.11.6", + "@types/ws": "^7.4.0", + "@web/parse5-utils": "^2.1.0", + "chokidar": "^3.4.3", + "clone": "^2.1.2", + "es-module-lexer": "^1.0.0", + "get-stream": "^6.0.0", + "is-stream": "^2.0.0", + "isbinaryfile": "^5.0.0", + "koa": "^2.13.0", + "koa-etag": "^4.0.0", + "koa-send": "^5.0.1", + "koa-static": "^5.0.0", + "lru-cache": "^8.0.4", + "mime-types": "^2.1.27", + "parse5": "^6.0.1", + "picomatch": "^2.2.2", + "ws": "^7.4.2" + } + }, + "@web/parse5-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-2.1.0.tgz", + "integrity": "sha512-GzfK5disEJ6wEjoPwx8AVNwUe9gYIiwc+x//QYxYDAFKUp4Xb1OJAGLc2l2gVrSQmtPGLKrTRcW90Hv4pEq1qA==", + "dev": true, + "requires": { + "@types/parse5": "^6.0.1", + "parse5": "^6.0.1" + } + }, + "@web/test-runner-commands": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@web/test-runner-commands/-/test-runner-commands-0.9.0.tgz", + "integrity": "sha512-zeLI6QdH0jzzJMDV5O42Pd8WLJtYqovgdt0JdytgHc0d1EpzXDsc7NTCJSImboc2NcayIsWAvvGGeRF69SMMYg==", + "dev": true, + "requires": { + "@web/test-runner-core": "^0.13.0", + "mkdirp": "^1.0.4" + } + }, + "@web/test-runner-core": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/@web/test-runner-core/-/test-runner-core-0.13.3.tgz", + "integrity": "sha512-ilDqF/v2sj0sD69FNSIDT7uw4M1yTVedLBt32/lXy3MMi6suCM7m/ZlhsBy8PXhf879WMvzBOl/vhJBpEMB9vA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.11", + "@types/babel__code-frame": "^7.0.2", + "@types/co-body": "^6.1.0", + "@types/convert-source-map": "^2.0.0", + "@types/debounce": "^1.2.0", + "@types/istanbul-lib-coverage": "^2.0.3", + "@types/istanbul-reports": "^3.0.0", + "@web/browser-logs": "^0.4.0", + "@web/dev-server-core": "^0.7.2", + "chokidar": "^3.4.3", + "cli-cursor": "^3.1.0", + "co-body": "^6.1.0", + "convert-source-map": "^2.0.0", + "debounce": "^1.2.0", + "dependency-graph": "^0.11.0", + "globby": "^11.0.1", + "internal-ip": "^6.2.0", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.0.2", + "log-update": "^4.0.0", + "nanocolors": "^0.2.1", + "nanoid": "^3.1.25", + "open": "^8.0.2", + "picomatch": "^2.2.2", + "source-map": "^0.7.3" + } + }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "isbinaryfile": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.2.tgz", + "integrity": "sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==", + "dev": true + }, + "lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, "source-map": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", @@ -6990,15 +8380,140 @@ } }, "@web/test-runner-chrome": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.11.0.tgz", - "integrity": "sha512-3Eq8C1XEGmfq7iwUvXy0xXfI/fbJNIq2ImDKTVdnwT4+5uTt1i8UFZxZ0PLdkWrhXVtiWI6zcZK/2VBzsGyHBA==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.17.0.tgz", + "integrity": "sha512-Il5N9z41NKWCrQM1TVgRaDWWYoJtG5Ha4fG+cN1MWL2OlzBS4WoOb4lFV3EylZ7+W3twZOFr1zy2Rx61yDYd/A==", "dev": true, "requires": { - "@web/test-runner-core": "^0.10.20", - "@web/test-runner-coverage-v8": "^0.5.0", + "@web/test-runner-core": "^0.13.0", + "@web/test-runner-coverage-v8": "^0.8.0", + "async-mutex": "0.4.0", "chrome-launcher": "^0.15.0", - "puppeteer-core": "^13.1.3" + "puppeteer-core": "^23.2.0" + }, + "dependencies": { + "@types/convert-source-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/convert-source-map/-/convert-source-map-2.0.3.tgz", + "integrity": "sha512-ag0BfJLZf6CQz8VIuRIEYQ5Ggwk/82uvTQf27RcpyDNbY0Vw49LIPqAxk5tqYfrCs9xDaIMvl4aj7ZopnYL8bA==", + "dev": true + }, + "@web/browser-logs": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@web/browser-logs/-/browser-logs-0.4.0.tgz", + "integrity": "sha512-/EBiDAUCJ2DzZhaFxTPRIznEPeafdLbXShIL6aTu7x73x7ZoxSDv7DGuTsh2rWNMUa4+AKli4UORrpyv6QBOiA==", + "dev": true, + "requires": { + "errorstacks": "^2.2.0" + } + }, + "@web/dev-server-core": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.7.2.tgz", + "integrity": "sha512-Q/0jpF13Ipk+qGGQ+Yx/FW1TQBYazpkfgYHHo96HBE7qv4V4KKHqHglZcSUxti/zd4bToxX1cFTz8dmbTlb8JA==", + "dev": true, + "requires": { + "@types/koa": "^2.11.6", + "@types/ws": "^7.4.0", + "@web/parse5-utils": "^2.1.0", + "chokidar": "^3.4.3", + "clone": "^2.1.2", + "es-module-lexer": "^1.0.0", + "get-stream": "^6.0.0", + "is-stream": "^2.0.0", + "isbinaryfile": "^5.0.0", + "koa": "^2.13.0", + "koa-etag": "^4.0.0", + "koa-send": "^5.0.1", + "koa-static": "^5.0.0", + "lru-cache": "^8.0.4", + "mime-types": "^2.1.27", + "parse5": "^6.0.1", + "picomatch": "^2.2.2", + "ws": "^7.4.2" + } + }, + "@web/parse5-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-2.1.0.tgz", + "integrity": "sha512-GzfK5disEJ6wEjoPwx8AVNwUe9gYIiwc+x//QYxYDAFKUp4Xb1OJAGLc2l2gVrSQmtPGLKrTRcW90Hv4pEq1qA==", + "dev": true, + "requires": { + "@types/parse5": "^6.0.1", + "parse5": "^6.0.1" + } + }, + "@web/test-runner-core": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/@web/test-runner-core/-/test-runner-core-0.13.3.tgz", + "integrity": "sha512-ilDqF/v2sj0sD69FNSIDT7uw4M1yTVedLBt32/lXy3MMi6suCM7m/ZlhsBy8PXhf879WMvzBOl/vhJBpEMB9vA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.11", + "@types/babel__code-frame": "^7.0.2", + "@types/co-body": "^6.1.0", + "@types/convert-source-map": "^2.0.0", + "@types/debounce": "^1.2.0", + "@types/istanbul-lib-coverage": "^2.0.3", + "@types/istanbul-reports": "^3.0.0", + "@web/browser-logs": "^0.4.0", + "@web/dev-server-core": "^0.7.2", + "chokidar": "^3.4.3", + "cli-cursor": "^3.1.0", + "co-body": "^6.1.0", + "convert-source-map": "^2.0.0", + "debounce": "^1.2.0", + "dependency-graph": "^0.11.0", + "globby": "^11.0.1", + "internal-ip": "^6.2.0", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.0.2", + "log-update": "^4.0.0", + "nanocolors": "^0.2.1", + "nanoid": "^3.1.25", + "open": "^8.0.2", + "picomatch": "^2.2.2", + "source-map": "^0.7.3" + } + }, + "@web/test-runner-coverage-v8": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@web/test-runner-coverage-v8/-/test-runner-coverage-v8-0.8.0.tgz", + "integrity": "sha512-PskiucYpjUtgNfR2zF2AWqWwjXL7H3WW/SnCAYmzUrtob7X9o/+BjdyZ4wKbOxWWSbJO4lEdGIDLu+8X2Xw+lA==", + "dev": true, + "requires": { + "@web/test-runner-core": "^0.13.0", + "istanbul-lib-coverage": "^3.0.0", + "lru-cache": "^8.0.4", + "picomatch": "^2.2.2", + "v8-to-istanbul": "^9.0.1" + } + }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "isbinaryfile": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.2.tgz", + "integrity": "sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==", + "dev": true + }, + "lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "dev": true + }, + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true + } } }, "@web/test-runner-commands": { @@ -7061,28 +8576,138 @@ } } }, - "@web/test-runner-coverage-v8": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@web/test-runner-coverage-v8/-/test-runner-coverage-v8-0.5.0.tgz", - "integrity": "sha512-4eZs5K4JG7zqWEhVSO8utlscjbVScV7K6JVwoWWcObFTGAaBMbDVzwGRimyNSzvmfTdIO/Arze4CeUUfCl4iLQ==", - "dev": true, - "requires": { - "@web/test-runner-core": "^0.10.20", - "istanbul-lib-coverage": "^3.0.0", - "picomatch": "^2.2.2", - "v8-to-istanbul": "^9.0.1" - } - }, - "@web/test-runner-mocha": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@web/test-runner-mocha/-/test-runner-mocha-0.7.5.tgz", - "integrity": "sha512-12/OBq6efPCAvJpcz3XJs2OO5nHe7GtBibZ8Il1a0QtsGpRmuJ4/m1EF0Fj9f6KHg7JdpGo18A37oE+5hXjHwg==", - "dev": true, - "requires": { - "@types/mocha": "^8.2.0", - "@web/test-runner-core": "^0.10.20" - } - }, + "@web/test-runner-coverage-v8": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@web/test-runner-coverage-v8/-/test-runner-coverage-v8-0.5.0.tgz", + "integrity": "sha512-4eZs5K4JG7zqWEhVSO8utlscjbVScV7K6JVwoWWcObFTGAaBMbDVzwGRimyNSzvmfTdIO/Arze4CeUUfCl4iLQ==", + "dev": true, + "requires": { + "@web/test-runner-core": "^0.10.20", + "istanbul-lib-coverage": "^3.0.0", + "picomatch": "^2.2.2", + "v8-to-istanbul": "^9.0.1" + } + }, + "@web/test-runner-mocha": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@web/test-runner-mocha/-/test-runner-mocha-0.9.0.tgz", + "integrity": "sha512-ZL9F6FXd0DBQvo/h/+mSfzFTSRVxzV9st/AHhpgABtUtV/AIpVE9to6+xdkpu6827kwjezdpuadPfg+PlrBWqQ==", + "dev": true, + "requires": { + "@web/test-runner-core": "^0.13.0" + }, + "dependencies": { + "@types/convert-source-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/convert-source-map/-/convert-source-map-2.0.3.tgz", + "integrity": "sha512-ag0BfJLZf6CQz8VIuRIEYQ5Ggwk/82uvTQf27RcpyDNbY0Vw49LIPqAxk5tqYfrCs9xDaIMvl4aj7ZopnYL8bA==", + "dev": true + }, + "@web/browser-logs": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@web/browser-logs/-/browser-logs-0.4.0.tgz", + "integrity": "sha512-/EBiDAUCJ2DzZhaFxTPRIznEPeafdLbXShIL6aTu7x73x7ZoxSDv7DGuTsh2rWNMUa4+AKli4UORrpyv6QBOiA==", + "dev": true, + "requires": { + "errorstacks": "^2.2.0" + } + }, + "@web/dev-server-core": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.7.2.tgz", + "integrity": "sha512-Q/0jpF13Ipk+qGGQ+Yx/FW1TQBYazpkfgYHHo96HBE7qv4V4KKHqHglZcSUxti/zd4bToxX1cFTz8dmbTlb8JA==", + "dev": true, + "requires": { + "@types/koa": "^2.11.6", + "@types/ws": "^7.4.0", + "@web/parse5-utils": "^2.1.0", + "chokidar": "^3.4.3", + "clone": "^2.1.2", + "es-module-lexer": "^1.0.0", + "get-stream": "^6.0.0", + "is-stream": "^2.0.0", + "isbinaryfile": "^5.0.0", + "koa": "^2.13.0", + "koa-etag": "^4.0.0", + "koa-send": "^5.0.1", + "koa-static": "^5.0.0", + "lru-cache": "^8.0.4", + "mime-types": "^2.1.27", + "parse5": "^6.0.1", + "picomatch": "^2.2.2", + "ws": "^7.4.2" + } + }, + "@web/parse5-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-2.1.0.tgz", + "integrity": "sha512-GzfK5disEJ6wEjoPwx8AVNwUe9gYIiwc+x//QYxYDAFKUp4Xb1OJAGLc2l2gVrSQmtPGLKrTRcW90Hv4pEq1qA==", + "dev": true, + "requires": { + "@types/parse5": "^6.0.1", + "parse5": "^6.0.1" + } + }, + "@web/test-runner-core": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/@web/test-runner-core/-/test-runner-core-0.13.3.tgz", + "integrity": "sha512-ilDqF/v2sj0sD69FNSIDT7uw4M1yTVedLBt32/lXy3MMi6suCM7m/ZlhsBy8PXhf879WMvzBOl/vhJBpEMB9vA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.11", + "@types/babel__code-frame": "^7.0.2", + "@types/co-body": "^6.1.0", + "@types/convert-source-map": "^2.0.0", + "@types/debounce": "^1.2.0", + "@types/istanbul-lib-coverage": "^2.0.3", + "@types/istanbul-reports": "^3.0.0", + "@web/browser-logs": "^0.4.0", + "@web/dev-server-core": "^0.7.2", + "chokidar": "^3.4.3", + "cli-cursor": "^3.1.0", + "co-body": "^6.1.0", + "convert-source-map": "^2.0.0", + "debounce": "^1.2.0", + "dependency-graph": "^0.11.0", + "globby": "^11.0.1", + "internal-ip": "^6.2.0", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.0.2", + "log-update": "^4.0.0", + "nanocolors": "^0.2.1", + "nanoid": "^3.1.25", + "open": "^8.0.2", + "picomatch": "^2.2.2", + "source-map": "^0.7.3" + } + }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "isbinaryfile": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.2.tgz", + "integrity": "sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==", + "dev": true + }, + "lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "dev": true + }, + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true + } + } + }, "@web/test-runner-playwright": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/@web/test-runner-playwright/-/test-runner-playwright-0.9.0.tgz", @@ -7118,12 +8743,12 @@ "requires": {} }, "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, "requires": { - "debug": "4" + "debug": "^4.3.4" } }, "ajv": { @@ -7244,6 +8869,15 @@ "es-shim-unscopables": "^1.0.0" } }, + "ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "requires": { + "tslib": "^2.0.1" + } + }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -7259,6 +8893,15 @@ "lodash": "^4.17.14" } }, + "async-mutex": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.0.tgz", + "integrity": "sha512-eJFZ1YhRR8UN8eBLoNzcDPcy/jqjsg6I1AP+KvWQX80BqOSW1oJPJXDylPUEeMr2ZQvHgnQ//Lp6f3RQ1zI7HA==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, "available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", @@ -7271,18 +8914,77 @@ "integrity": "sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg==", "dev": true }, + "b4a": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", + "dev": true + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, + "bare-events": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", + "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", + "dev": true, + "optional": true + }, + "bare-fs": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.5.tgz", + "integrity": "sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==", + "dev": true, + "optional": true, + "requires": { + "bare-events": "^2.0.0", + "bare-path": "^2.0.0", + "bare-stream": "^2.0.0" + } + }, + "bare-os": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.4.tgz", + "integrity": "sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==", + "dev": true, + "optional": true + }, + "bare-path": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz", + "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==", + "dev": true, + "optional": true, + "requires": { + "bare-os": "^2.1.0" + } + }, + "bare-stream": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.3.0.tgz", + "integrity": "sha512-pVRWciewGUeCyKEuRxwv06M079r+fRjAQjBEK2P6OYGrO43O+Z0LrPZZEjlc4mB6C2RpZ9AxJ1s7NLEtOHO6eA==", + "dev": true, + "optional": true, + "requires": { + "b4a": "^1.6.6", + "streamx": "^2.20.0" + } + }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true }, + "basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "dev": true + }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -7324,12 +9026,6 @@ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true }, - "builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true - }, "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", @@ -7387,6 +9083,15 @@ "supports-color": "^7.1.0" } }, + "chalk-template": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", + "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", + "dev": true, + "requires": { + "chalk": "^4.1.2" + } + }, "chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -7403,16 +9108,10 @@ "readdirp": "~3.6.0" } }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, "chrome-launcher": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.1.tgz", - "integrity": "sha512-UugC8u59/w2AyX5sHLZUHoxBAiSiunUhZa3zZwMH6zPVis0C3dDKiRWyUGIo14tTbZHGVviWxv3PQWZ7taZ4fg==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", "dev": true, "requires": { "@types/node": "*", @@ -7421,6 +9120,17 @@ "lighthouse-logger": "^1.0.0" } }, + "chromium-bidi": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.5.tgz", + "integrity": "sha512-RuLrmzYrxSb0s9SgpB+QN5jJucPduZQ/9SIe76MDxYJuecPW5mxMdacJ1f4EtgiV+R0p3sCkznTMvH0MPGFqjA==", + "dev": true, + "requires": { + "mitt": "3.0.1", + "urlpattern-polyfill": "10.0.0", + "zod": "3.23.8" + } + }, "cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -7430,6 +9140,30 @@ "restore-cursor": "^3.1.0" } }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, "clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", @@ -7482,83 +9216,27 @@ } }, "command-line-usage": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", - "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.3.tgz", + "integrity": "sha512-PqMLy5+YGwhMh1wS04mVG44oqDsgyLRSKJBdOo1bnYhMKBW65gZF1dRp2OZRhiTjgUHljy99qkO7bsctLaw35Q==", "dev": true, "requires": { - "array-back": "^4.0.2", - "chalk": "^2.4.2", - "table-layout": "^1.0.2", - "typical": "^5.2.0" + "array-back": "^6.2.2", + "chalk-template": "^0.4.0", + "table-layout": "^4.1.0", + "typical": "^7.1.1" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, "array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", + "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", "dev": true }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, "typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-7.2.0.tgz", + "integrity": "sha512-W1+HdVRUl8fS3MZ9ogD51GOb46xMmhAZzR0WPw5jcgIZQJVvkddYzAl4YTU6g5w33Y1iRQLdIi2/1jhi2RNL0g==", "dev": true } } @@ -7614,15 +9292,6 @@ } } }, - "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dev": true, - "requires": { - "node-fetch": "2.6.7" - } - }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -7634,6 +9303,12 @@ "which": "^2.0.1" } }, + "data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true + }, "debounce": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", @@ -7641,20 +9316,12 @@ "dev": true }, "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "ms": "^2.1.3" } }, "deep-equal": { @@ -7663,12 +9330,6 @@ "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", "dev": true }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -7676,11 +9337,20 @@ "dev": true }, "deepmerge": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", - "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", + "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 }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + } + }, "define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -7697,6 +9367,17 @@ "object-keys": "^1.1.1" } }, + "degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, + "requires": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + } + }, "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -7722,9 +9403,9 @@ "dev": true }, "devtools-protocol": { - "version": "0.0.981744", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", - "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==", + "version": "0.0.1342118", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1342118.tgz", + "integrity": "sha512-75fMas7PkYNDTmDyb6PRJCH7ILmHLp+BhrZGeMsa4bCh40DTxgCz2NRy5UDzII4C5KuD0oBMZ9vXKhEl6UD/3w==", "dev": true }, "diff": { @@ -7834,6 +9515,12 @@ "which-typed-array": "^1.1.9" } }, + "es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "dev": true + }, "es-set-tostringtag": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", @@ -7871,6 +9558,12 @@ "integrity": "sha512-w/XuoBCSwepyiZtIRsKsetiLDUVGPVw1E/R3VTFSecIy8UR7Cq3SOtwKHJMFoVqqVG36aGkzh4e8BvpO1Fdc7g==", "dev": true }, + "escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -7883,6 +9576,18 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, + "escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "source-map": "~0.6.1" + } + }, "eslint": { "version": "7.32.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", @@ -8026,12 +9731,6 @@ "requires": { "ms": "^2.1.1" } - }, - "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 } } }, @@ -8052,12 +9751,6 @@ "requires": { "ms": "^2.1.1" } - }, - "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 } } }, @@ -8101,12 +9794,6 @@ "requires": { "esutils": "^2.0.2" } - }, - "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 } } }, @@ -8221,9 +9908,9 @@ "dev": true }, "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, "esutils": { @@ -8238,6 +9925,23 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "dev": true }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, "extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -8273,6 +9977,12 @@ "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", "dev": true }, + "fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true + }, "fast-glob": { "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", @@ -8343,16 +10053,6 @@ "array-back": "^3.0.1" } }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, "flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -8384,11 +10084,16 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true + "fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } }, "fs.realpath": { "version": "1.0.0", @@ -8433,6 +10138,12 @@ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, "get-intrinsic": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", @@ -8450,6 +10161,12 @@ "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", "dev": true }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, "get-symbol-description": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", @@ -8460,6 +10177,18 @@ "get-intrinsic": "^1.1.1" } }, + "get-uri": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", + "dev": true, + "requires": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4", + "fs-extra": "^11.2.0" + } + }, "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -8524,6 +10253,12 @@ "get-intrinsic": "^1.1.3" } }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -8631,16 +10366,32 @@ "toidentifier": "1.0.0" } }, + "http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "requires": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + } + }, "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "dev": true, "requires": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" } }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -8700,6 +10451,18 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "internal-ip": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-6.2.0.tgz", + "integrity": "sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==", + "dev": true, + "requires": { + "default-gateway": "^6.0.0", + "ipaddr.js": "^1.9.1", + "is-ip": "^3.1.0", + "p-event": "^4.2.0" + } + }, "internal-slot": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", @@ -8711,10 +10474,40 @@ "side-channel": "^1.0.4" } }, - "ip": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", - "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==", + "ip": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", + "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==", + "dev": true + }, + "ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "requires": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "dependencies": { + "sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true + } + } + }, + "ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true }, "is-array-buffer": { @@ -8756,15 +10549,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dev": true, - "requires": { - "builtin-modules": "^3.3.0" - } - }, "is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -8825,6 +10609,15 @@ "is-extglob": "^2.1.1" } }, + "is-ip": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", + "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", + "dev": true, + "requires": { + "ip-regex": "^4.0.0" + } + }, "is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", @@ -8871,6 +10664,12 @@ "call-bind": "^1.0.2" } }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, "is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", @@ -8939,25 +10738,14 @@ "dev": true }, "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "requires": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" - }, - "dependencies": { - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - } } }, "istanbul-reports": { @@ -8986,6 +10774,12 @@ "esprima": "^4.0.0" } }, + "jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -8998,6 +10792,16 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, "just-extend": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", @@ -9106,12 +10910,6 @@ "requires": { "ms": "^2.1.1" } - }, - "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 } } }, @@ -9126,9 +10924,9 @@ } }, "lighthouse-logger": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz", - "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", + "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", "dev": true, "requires": { "debug": "^2.6.9", @@ -9143,6 +10941,12 @@ "requires": { "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true } } }, @@ -9174,15 +10978,6 @@ "@types/trusted-types": "^2.0.2" } }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -9225,6 +11020,29 @@ "wrap-ansi": "^6.2.0" } }, + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true + }, + "make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "requires": { + "semver": "^7.5.3" + }, + "dependencies": { + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true + } + } + }, "marky": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", @@ -9237,6 +11055,12 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -9289,12 +11113,21 @@ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, - "mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", "dev": true }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, "mock-xmlhttprequest": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/mock-xmlhttprequest/-/mock-xmlhttprequest-8.1.0.tgz", @@ -9302,9 +11135,9 @@ "dev": true }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "nanocolors": { @@ -9331,6 +11164,12 @@ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", "dev": true }, + "netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "dev": true + }, "nise": { "version": "5.1.4", "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz", @@ -9361,45 +11200,21 @@ } } }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, - "requires": { - "whatwg-url": "^5.0.0" - }, - "dependencies": { - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - } - } - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, "object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -9504,29 +11319,55 @@ "word-wrap": "^1.2.3" } }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "p-event": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", + "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "p-timeout": "^3.1.0" } }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true + }, + "p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", "dev": true, "requires": { - "p-limit": "^2.2.0" + "p-finally": "^1.0.0" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "pac-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz", + "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==", + "dev": true, + "requires": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.5", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.4" + } + }, + "pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dev": true, + "requires": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + } }, "parent-module": { "version": "1.0.1", @@ -9558,12 +11399,6 @@ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -9600,15 +11435,6 @@ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, "playwright": { "version": "1.31.2", "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.31.2.tgz", @@ -9643,21 +11469,6 @@ "requires": { "ms": "^2.1.1" } - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "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 } } }, @@ -9688,6 +11499,22 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, + "proxy-agent": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "dev": true, + "requires": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + } + }, "proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -9695,9 +11522,9 @@ "dev": true }, "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "dev": true, "requires": { "end-of-stream": "^1.1.0", @@ -9705,35 +11532,29 @@ } }, "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true }, "puppeteer-core": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.7.0.tgz", - "integrity": "sha512-rXja4vcnAzFAP1OVLq/5dWNfwBGuzcOARJ6qGV7oAZhnLmVRU8G5MsdeQEAOy332ZhkIOnn9jp15R89LKHyp2Q==", + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.4.0.tgz", + "integrity": "sha512-fqkIP5FOcb38jfBj/OcBz1wFaI9nk40uQKSORvnXws6wCbep2dg8yxZ3ddJxBIfQsxoiEOvnrykFinUScrB/ew==", "dev": true, "requires": { - "cross-fetch": "3.1.5", - "debug": "4.3.4", - "devtools-protocol": "0.0.981744", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.1", - "pkg-dir": "4.2.0", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.5.0" + "@puppeteer/browsers": "2.4.0", + "chromium-bidi": "0.6.5", + "debug": "^4.3.7", + "devtools-protocol": "0.0.1342118", + "typed-query-selector": "^2.12.0", + "ws": "^8.18.0" }, "dependencies": { "ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, "requires": {} } @@ -9754,6 +11575,12 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, + "queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true + }, "raw-body": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", @@ -9796,12 +11623,6 @@ "picomatch": "^2.2.1" } }, - "reduce-flatten": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", - "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", - "dev": true - }, "regexp.prototype.flags": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", @@ -9819,6 +11640,12 @@ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -9910,12 +11737,37 @@ } }, "rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", - "dev": true, - "requires": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.4.tgz", + "integrity": "sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==", + "dev": true, + "requires": { + "@rollup/rollup-android-arm-eabi": "4.22.4", + "@rollup/rollup-android-arm64": "4.22.4", + "@rollup/rollup-darwin-arm64": "4.22.4", + "@rollup/rollup-darwin-x64": "4.22.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.22.4", + "@rollup/rollup-linux-arm-musleabihf": "4.22.4", + "@rollup/rollup-linux-arm64-gnu": "4.22.4", + "@rollup/rollup-linux-arm64-musl": "4.22.4", + "@rollup/rollup-linux-powerpc64le-gnu": "4.22.4", + "@rollup/rollup-linux-riscv64-gnu": "4.22.4", + "@rollup/rollup-linux-s390x-gnu": "4.22.4", + "@rollup/rollup-linux-x64-gnu": "4.22.4", + "@rollup/rollup-linux-x64-musl": "4.22.4", + "@rollup/rollup-win32-arm64-msvc": "4.22.4", + "@rollup/rollup-win32-ia32-msvc": "4.22.4", + "@rollup/rollup-win32-x64-msvc": "4.22.4", + "@types/estree": "1.0.5", "fsevents": "~2.3.2" + }, + "dependencies": { + "@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + } } }, "run-parallel": { @@ -10025,6 +11877,40 @@ "is-fullwidth-code-point": "^3.0.0" } }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, + "requires": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", + "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", + "dev": true, + "requires": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.8.3" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -10037,13 +11923,16 @@ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "streamx": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz", + "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "bare-events": "^2.2.0", + "fast-fifo": "^1.3.2", + "queue-tick": "^1.0.1", + "text-decoder": "^1.1.0" } }, "string-width": { @@ -10094,6 +11983,12 @@ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -10149,78 +12044,53 @@ } }, "table-layout": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", - "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-4.1.1.tgz", + "integrity": "sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==", "dev": true, "requires": { - "array-back": "^4.0.1", - "deep-extend": "~0.6.0", - "typical": "^5.2.0", - "wordwrapjs": "^4.0.0" + "array-back": "^6.2.2", + "wordwrapjs": "^5.1.0" }, "dependencies": { "array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "dev": true - }, - "typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", + "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", "dev": true } } }, "tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", + "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", "dev": true, "requires": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", + "bare-fs": "^2.1.1", + "bare-path": "^2.1.0", "pump": "^3.0.0", - "tar-stream": "^2.1.4" - }, - "dependencies": { - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - } - } + "tar-stream": "^3.1.5" + } + }, + "tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dev": true, + "requires": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "text-decoder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.0.tgz", + "integrity": "sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==", + "dev": true, + "requires": { + "b4a": "^1.6.4" } }, "text-table": { @@ -10250,6 +12120,15 @@ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", "dev": true }, + "tr46": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "dev": true, + "requires": { + "punycode": "^2.3.1" + } + }, "tsconfig-paths": { "version": "3.14.2", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", @@ -10343,6 +12222,12 @@ "is-typed-array": "^1.1.9" } }, + "typed-query-selector": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz", + "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==", + "dev": true + }, "typescript": { "version": "4.5.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.3.tgz", @@ -10383,6 +12268,12 @@ "through": "^2.3.8" } }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -10398,10 +12289,10 @@ "punycode": "^2.1.0" } }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "urlpattern-polyfill": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", + "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", "dev": true }, "v8-compile-cache": { @@ -10427,6 +12318,22 @@ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", "dev": true }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true + }, + "whatwg-url": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", + "dev": true, + "requires": { + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -10470,22 +12377,10 @@ "dev": true }, "wordwrapjs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", - "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", - "dev": true, - "requires": { - "reduce-flatten": "^2.0.0", - "typical": "^5.2.0" - }, - "dependencies": { - "typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true - } - } + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.0.tgz", + "integrity": "sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg==", + "dev": true }, "wrap-ansi": { "version": "6.2.0", @@ -10505,12 +12400,39 @@ "dev": true }, "ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, "requires": {} }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + }, "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -10526,6 +12448,12 @@ "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz", "integrity": "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==", "dev": true + }, + "zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "dev": true } } } diff --git a/flow-client/package.json b/flow-client/package.json index 043b79af3ba..fecc98a5f9a 100644 --- a/flow-client/package.json +++ b/flow-client/package.json @@ -32,7 +32,7 @@ "@types/sinon": "^10.0.13", "@typescript-eslint/eslint-plugin": "^3.10.1", "@web/dev-server-esbuild": "^0.3.3", - "@web/test-runner": "^0.15.0", + "@web/test-runner": "^0.19.0", "@web/test-runner-playwright": "^0.9.0", "eslint": "7.32.0", "eslint-config-prettier": "^8.3.0", diff --git a/flow-client/pom.xml b/flow-client/pom.xml index 32b567c9391..9c5d2e146c8 100644 --- a/flow-client/pom.xml +++ b/flow-client/pom.xml @@ -6,7 +6,7 @@ com.vaadin flow-project - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-client Flow Client @@ -19,8 +19,8 @@ OBF 0.0.0.0 ${skipTests} - 3.18.200 - 3.30.0 + 3.19.100 + 3.31.100 8 1.8 1.8 @@ -132,20 +132,14 @@ org.eclipse.platform org.eclipse.core.resources - 3.17.0 + 3.21.0 test - - - org.eclipse.platform - org.eclipse.equinox.preferences - - org.eclipse.platform org.eclipse.core.jobs - 3.11.0 + 3.15.400 test @@ -153,12 +147,6 @@ org.eclipse.core.contenttype 3.9.500 test - - - org.eclipse.platform - org.eclipse.equinox.preferences - - diff --git a/flow-data/pom.xml b/flow-data/pom.xml index c5949f19c75..9e2cb8ffe4a 100644 --- a/flow-data/pom.xml +++ b/flow-data/pom.xml @@ -6,7 +6,7 @@ com.vaadin flow-project - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-data Flow Data diff --git a/flow-dnd/pom.xml b/flow-dnd/pom.xml index 5febb097abe..4fbb4629fc5 100644 --- a/flow-dnd/pom.xml +++ b/flow-dnd/pom.xml @@ -6,7 +6,7 @@ flow-project com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-dnd diff --git a/flow-html-components-testbench/pom.xml b/flow-html-components-testbench/pom.xml index bf8d648ffe6..3ee8d24d11a 100644 --- a/flow-html-components-testbench/pom.xml +++ b/flow-html-components-testbench/pom.xml @@ -5,7 +5,7 @@ com.vaadin flow-project - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-html-components-testbench TestBench elements for Flow HTML Components diff --git a/flow-html-components/pom.xml b/flow-html-components/pom.xml index 76efba469aa..cadcfdba62f 100644 --- a/flow-html-components/pom.xml +++ b/flow-html-components/pom.xml @@ -6,7 +6,7 @@ com.vaadin flow-project - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-html-components Flow HTML Components diff --git a/flow-jandex/pom.xml b/flow-jandex/pom.xml index 57e932825b3..919e3cf4973 100644 --- a/flow-jandex/pom.xml +++ b/flow-jandex/pom.xml @@ -22,7 +22,7 @@ com.vaadin flow-project - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-jandex diff --git a/flow-lit-template/pom.xml b/flow-lit-template/pom.xml index 464d6f6cdcb..b376029ca87 100644 --- a/flow-lit-template/pom.xml +++ b/flow-lit-template/pom.xml @@ -6,7 +6,7 @@ com.vaadin flow-project - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-lit-template Flow Lit Templates Support diff --git a/flow-plugins/flow-dev-bundle-plugin/pom.xml b/flow-plugins/flow-dev-bundle-plugin/pom.xml index 1e94a138a6d..c9560fb8959 100644 --- a/flow-plugins/flow-dev-bundle-plugin/pom.xml +++ b/flow-plugins/flow-dev-bundle-plugin/pom.xml @@ -5,7 +5,7 @@ com.vaadin flow-plugins - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-dev-bundle-plugin maven-plugin diff --git a/flow-plugins/flow-dev-bundle-plugin/src/main/java/com/vaadin/flow/plugin/maven/BuildDevBundleMojo.java b/flow-plugins/flow-dev-bundle-plugin/src/main/java/com/vaadin/flow/plugin/maven/BuildDevBundleMojo.java index d636d79ef97..b6562f494ab 100644 --- a/flow-plugins/flow-dev-bundle-plugin/src/main/java/com/vaadin/flow/plugin/maven/BuildDevBundleMojo.java +++ b/flow-plugins/flow-dev-bundle-plugin/src/main/java/com/vaadin/flow/plugin/maven/BuildDevBundleMojo.java @@ -23,10 +23,21 @@ import java.nio.file.Paths; import java.util.List; import java.util.Set; +import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; +import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.DependencyResolutionRequiredException; +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.MojoFailureException; +import org.apache.maven.plugins.annotations.LifecyclePhase; +import org.apache.maven.plugins.annotations.Mojo; +import org.apache.maven.plugins.annotations.Parameter; +import org.apache.maven.plugins.annotations.ResolutionScope; +import org.apache.maven.project.MavenProject; + import com.vaadin.flow.component.dependency.JavaScript; import com.vaadin.flow.component.dependency.JsModule; import com.vaadin.flow.component.dependency.NpmPackage; @@ -42,15 +53,6 @@ import com.vaadin.flow.server.frontend.installer.Platform; import com.vaadin.flow.server.frontend.scanner.ClassFinder; import com.vaadin.flow.theme.Theme; -import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.DependencyResolutionRequiredException; -import org.apache.maven.plugin.AbstractMojo; -import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.plugins.annotations.LifecyclePhase; -import org.apache.maven.plugins.annotations.Mojo; -import org.apache.maven.plugins.annotations.Parameter; -import org.apache.maven.plugins.annotations.ResolutionScope; -import org.apache.maven.project.MavenProject; import static com.vaadin.flow.server.Constants.VAADIN_SERVLET_RESOURCES; import static com.vaadin.flow.server.Constants.VAADIN_WEBAPP_RESOURCES; @@ -461,4 +463,10 @@ public boolean isReactEnabled() { public String applicationIdentifier() { return project.getGroupId() + ":" + project.getArtifactId(); } + + @Override + public boolean checkRuntimeDependency(String groupId, String artifactId, + Consumer missingDependencyMessageConsumer) { + return false; + } } diff --git a/flow-plugins/flow-gradle-plugin/README.md b/flow-plugins/flow-gradle-plugin/README.md index a921dfbf36e..ad13c89cae3 100644 --- a/flow-plugins/flow-gradle-plugin/README.md +++ b/flow-plugins/flow-gradle-plugin/README.md @@ -208,7 +208,7 @@ Alternatively, you can build and publish the Flow Gradle plugin into the local M 1. Clone the Base Starter Gradle project. 2. Add `mavenLocal()` to `buildscript.repositories` as the first place to look up. -3. Add `dependencies { classpath 'com.vaadin:flow-gradle-plugin:24.5-SNAPSHOT' }` to `buildscript.repositories`. +3. Add `dependencies { classpath 'com.vaadin:flow-gradle-plugin:24.6-SNAPSHOT' }` to `buildscript.repositories`. 4. Run `./gradlew clean build publishToMavenLocal` in the `flow-plugins/flow-gradle-plugin` repo folder. 5. Run the previous command with `-x functionalTest` to skip functional tests. 6. If you now run `./gradlew vaadinPrepareFrontend` in the Starter project folder, Gradle will use the local version of the Flow plugin. You can verify that by adding `println()` statements into the `VaadinPrepareFrontendTask` class. diff --git a/flow-plugins/flow-gradle-plugin/pom.xml b/flow-plugins/flow-gradle-plugin/pom.xml index f98bb317bfc..cd5276b3105 100644 --- a/flow-plugins/flow-gradle-plugin/pom.xml +++ b/flow-plugins/flow-gradle-plugin/pom.xml @@ -3,7 +3,7 @@ com.vaadin flow-plugins - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-gradle-plugin diff --git a/flow-plugins/flow-gradle-plugin/src/functionalTest/kotlin/com/vaadin/gradle/AbstractGradleTest.kt b/flow-plugins/flow-gradle-plugin/src/functionalTest/kotlin/com/vaadin/gradle/AbstractGradleTest.kt index ddcf3d13c50..6262138a14c 100644 --- a/flow-plugins/flow-gradle-plugin/src/functionalTest/kotlin/com/vaadin/gradle/AbstractGradleTest.kt +++ b/flow-plugins/flow-gradle-plugin/src/functionalTest/kotlin/com/vaadin/gradle/AbstractGradleTest.kt @@ -27,7 +27,7 @@ import java.io.File */ abstract class AbstractGradleTest { - val flowVersion = System.getenv("vaadin.version").takeUnless { it.isNullOrEmpty() } ?: "24.5-SNAPSHOT" + val flowVersion = System.getenv("vaadin.version").takeUnless { it.isNullOrEmpty() } ?: "24.6-SNAPSHOT" val slf4jVersion = "2.0.3" /** diff --git a/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/GradlePluginAdapter.kt b/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/GradlePluginAdapter.kt index 9797440fb99..977572330ad 100644 --- a/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/GradlePluginAdapter.kt +++ b/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/GradlePluginAdapter.kt @@ -26,6 +26,7 @@ import org.gradle.api.tasks.bundling.War import java.io.File import java.net.URI import java.nio.file.Path +import java.util.function.Consumer private val servletApiJarRegex = Regex(".*(/|\\\\)(portlet-api|javax\\.servlet-api)-.+jar$") @@ -216,4 +217,26 @@ internal class GradlePluginAdapter( override fun isReactEnabled(): Boolean = config.reactEnable.get() override fun applicationIdentifier(): String = config.applicationIdentifier.get() + + override fun checkRuntimeDependency( + groupId: String, + artifactId: String, + missingDependencyMessageConsumer: Consumer? + ): Boolean { + val dependencyAbsent = project.configurations.getByName(config.dependencyScope.get()) + .resolvedConfiguration?.resolvedArtifacts?.filter { + groupId == it.moduleVersion.id.group && artifactId == it.moduleVersion.id.name + }?.isEmpty() ?: true + if (dependencyAbsent && missingDependencyMessageConsumer != null) { + missingDependencyMessageConsumer.accept(""" + The dependency ${groupId}:${artifactId} has not been found in the project configuration. + Please add the following dependency to your project configuration: + + dependencies { + runtimeOnly("${groupId}:${artifactId}") + } + """.trimIndent()) + } + return dependencyAbsent + } } diff --git a/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/PrepareFrontendInputProperties.kt b/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/PrepareFrontendInputProperties.kt index da0f141d446..79498ac60de 100644 --- a/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/PrepareFrontendInputProperties.kt +++ b/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/PrepareFrontendInputProperties.kt @@ -174,6 +174,7 @@ internal class PrepareFrontendInputProperties(private val config: PluginEffectiv settings.isForceAlternativeNode = config.requireHomeNodeExec.get() settings.isUseGlobalPnpm = config.useGlobalPnpm.get() settings.isAutoUpdate = config.nodeAutoUpdate.get() + settings.nodeVersion = config.nodeVersion.get() FrontendTools(settings) } } diff --git a/flow-plugins/flow-maven-plugin/pom.xml b/flow-plugins/flow-maven-plugin/pom.xml index 5d18095b677..dba1d58a389 100644 --- a/flow-plugins/flow-maven-plugin/pom.xml +++ b/flow-plugins/flow-maven-plugin/pom.xml @@ -5,7 +5,7 @@ com.vaadin flow-plugins - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-maven-plugin maven-plugin diff --git a/flow-plugins/flow-maven-plugin/src/main/java/com/vaadin/flow/plugin/maven/BuildFrontendMojo.java b/flow-plugins/flow-maven-plugin/src/main/java/com/vaadin/flow/plugin/maven/BuildFrontendMojo.java index 8bf4c2e031e..29e37458a11 100644 --- a/flow-plugins/flow-maven-plugin/src/main/java/com/vaadin/flow/plugin/maven/BuildFrontendMojo.java +++ b/flow-plugins/flow-maven-plugin/src/main/java/com/vaadin/flow/plugin/maven/BuildFrontendMojo.java @@ -17,8 +17,12 @@ import java.io.File; import java.net.URISyntaxException; +import java.util.List; +import java.util.Objects; import java.util.concurrent.TimeoutException; +import java.util.function.Consumer; +import org.apache.maven.artifact.Artifact; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.LifecyclePhase; @@ -233,4 +237,50 @@ public boolean compressBundle() { return true; } + @Override + public boolean checkRuntimeDependency(String groupId, String artifactId, + Consumer missingDependencyMessage) { + Objects.requireNonNull(groupId, "groupId cannot be null"); + Objects.requireNonNull(artifactId, "artifactId cannot be null"); + if (missingDependencyMessage == null) { + missingDependencyMessage = text -> { + }; + } + + List deps = project.getArtifacts().stream() + .filter(artifact -> groupId.equals(artifact.getGroupId()) + && artifactId.equals(artifact.getArtifactId())) + .toList(); + if (deps.isEmpty()) { + missingDependencyMessage.accept(String.format( + """ + The dependency %1$s:%2$s has not been found in the project configuration. + Please add the following dependency to your POM file: + + + %1$s + %2$s + runtime + + """, + groupId, artifactId)); + return false; + } else if (deps.stream().noneMatch(artifact -> !artifact.isOptional() + && artifact.getArtifactHandler().isAddedToClasspath() + && (Artifact.SCOPE_COMPILE.equals(artifact.getScope()) + || Artifact.SCOPE_PROVIDED.equals(artifact.getScope()) + || Artifact.SCOPE_RUNTIME + .equals(artifact.getScope())))) { + missingDependencyMessage.accept(String.format( + """ + The dependency %1$s:%2$s has been found in the project configuration, + but with a scope that does not guarantee its presence at runtime. + Please check that the dependency has 'compile', 'provided' or 'runtime' scope. + To check the current dependency scope, you can run 'mvn dependency:tree -Dincludes=%1$s:%2$s' + """, + groupId, artifactId)); + return false; + } + return true; + } } diff --git a/flow-plugins/flow-plugin-base/pom.xml b/flow-plugins/flow-plugin-base/pom.xml index ec9027d6ef1..06467c40bfc 100644 --- a/flow-plugins/flow-plugin-base/pom.xml +++ b/flow-plugins/flow-plugin-base/pom.xml @@ -3,7 +3,7 @@ com.vaadin flow-plugins - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-plugin-base @@ -54,7 +54,7 @@ org.codehaus.plexus plexus-utils - 4.0.1 + 4.0.2 test diff --git a/flow-plugins/flow-plugin-base/src/main/java/com/vaadin/flow/plugin/base/BuildFrontendUtil.java b/flow-plugins/flow-plugin-base/src/main/java/com/vaadin/flow/plugin/base/BuildFrontendUtil.java index 01e499aa190..ec6d6c7501d 100644 --- a/flow-plugins/flow-plugin-base/src/main/java/com/vaadin/flow/plugin/base/BuildFrontendUtil.java +++ b/flow-plugins/flow-plugin-base/src/main/java/com/vaadin/flow/plugin/base/BuildFrontendUtil.java @@ -68,7 +68,6 @@ import static com.vaadin.flow.server.Constants.CONNECT_APPLICATION_PROPERTIES_TOKEN; import static com.vaadin.flow.server.Constants.CONNECT_JAVA_SOURCE_FOLDER_TOKEN; import static com.vaadin.flow.server.Constants.CONNECT_OPEN_API_FILE_TOKEN; -import static com.vaadin.flow.server.Constants.DAU_TOKEN; import static com.vaadin.flow.server.Constants.DISABLE_PREPARE_FRONTEND_CACHE; import static com.vaadin.flow.server.Constants.FRONTEND_TOKEN; import static com.vaadin.flow.server.Constants.JAVA_RESOURCE_FOLDER_TOKEN; @@ -752,20 +751,30 @@ public static void updateBuildFile(PluginAdapterBuild adapter, buildInfo.remove(Constants.CONNECT_OPEN_API_FILE_TOKEN); buildInfo.remove(Constants.PROJECT_FRONTEND_GENERATED_DIR_TOKEN); buildInfo.remove(InitParameters.BUILD_FOLDER); + // Premium features flag is always true, because Vaadin CI server + // uses Enterprise sub, thus it's always true. + // Thus, resets the premium feature flag and DAU flag before asking + // license-server + buildInfo.remove(Constants.PREMIUM_FEATURES); + buildInfo.remove(Constants.DAU_TOKEN); + buildInfo.put(SERVLET_PARAMETER_PRODUCTION_MODE, true); buildInfo.put(APPLICATION_IDENTIFIER, adapter.applicationIdentifier()); if (licenseRequired) { if (LocalSubscriptionKey.get() != null) { adapter.logInfo("Daily Active User tracking enabled"); - buildInfo.put(DAU_TOKEN, true); - } - if (LicenseChecker.isValidLicense("vaadin-commercial-cc-client", - null, BuildType.PRODUCTION)) { - adapter.logInfo("Premium Features are enabled"); - buildInfo.put(Constants.PREMIUM_FEATURES, true); + buildInfo.put(Constants.DAU_TOKEN, true); + checkLicenseCheckerAtRuntime(adapter); } } + if (isControlCenterAvailable(adapter.getClassFinder()) + && LicenseChecker.isValidLicense( + "vaadin-commercial-cc-client", null, + BuildType.PRODUCTION)) { + adapter.logInfo("Premium Features are enabled"); + buildInfo.put(Constants.PREMIUM_FEATURES, true); + } FileUtils.write(tokenFile, JsonUtil.stringify(buildInfo, 2) + "\n", StandardCharsets.UTF_8.name()); @@ -774,6 +783,31 @@ public static void updateBuildFile(PluginAdapterBuild adapter, } } + private static boolean isControlCenterAvailable(ClassFinder classFinder) { + if (classFinder == null) { + return false; + } + try { + classFinder.loadClass( + "com.vaadin.controlcenter.starter.actuate.endpoint.VaadinActuatorEndpoint"); + return true; + } catch (ClassNotFoundException e) { + return false; + } + } + + private static void checkLicenseCheckerAtRuntime( + PluginAdapterBuild adapter) { + adapter.checkRuntimeDependency("com.vaadin", "license-checker", + logMessage -> adapter.logWarn( + """ + Vaadin Subscription used to build the application requires + the artifact com.vaadin:license-checker to be present at runtime. + + """ + + logMessage)); + } + /** * Delete the build token file. This is used with dev-bundle build as token * file should never be added to the package. diff --git a/flow-plugins/flow-plugin-base/src/main/java/com/vaadin/flow/plugin/base/PluginAdapterBuild.java b/flow-plugins/flow-plugin-base/src/main/java/com/vaadin/flow/plugin/base/PluginAdapterBuild.java index f27173a3670..b452be2b917 100644 --- a/flow-plugins/flow-plugin-base/src/main/java/com/vaadin/flow/plugin/base/PluginAdapterBuild.java +++ b/flow-plugins/flow-plugin-base/src/main/java/com/vaadin/flow/plugin/base/PluginAdapterBuild.java @@ -16,8 +16,7 @@ package com.vaadin.flow.plugin.base; import java.io.File; - -import com.vaadin.flow.server.InitParameters; +import java.util.function.Consumer; /** * Gives access to plugin-specific implementations and configurations. @@ -95,4 +94,28 @@ public interface PluginAdapterBuild extends PluginAdapterBase { * @return {@code true} if the bundle should be compressed */ boolean compressBundle(); + + /** + * Checks if the artifact defined by given coordinates is a dependency of + * the project, present at runtime. + *

+ *

+ * If the dependency is missing or in invalid scope, the method produces a + * message containing the necessary instructions to fix the project and + * notifies the caller by invoking the provided message consumer, if + * present. + * + * @param groupId + * dependency groupId, not {@literal null}. + * @param artifactId + * dependency artifactId, not {@literal null}. + * @param missingDependencyMessageConsumer + * a consumer for missing dependency message produced by the + * adapter. + * @return {@literal true} if the given coordinates identify a project + * dependency present at runtime, otherwise {@literal false}. + */ + boolean checkRuntimeDependency(String groupId, String artifactId, + Consumer missingDependencyMessageConsumer); + } diff --git a/flow-plugins/flow-plugin-base/src/test/java/com/vaadin/controlcenter/starter/actuate/endpoint/VaadinActuatorEndpoint.java b/flow-plugins/flow-plugin-base/src/test/java/com/vaadin/controlcenter/starter/actuate/endpoint/VaadinActuatorEndpoint.java new file mode 100644 index 00000000000..5f0dcb853ea --- /dev/null +++ b/flow-plugins/flow-plugin-base/src/test/java/com/vaadin/controlcenter/starter/actuate/endpoint/VaadinActuatorEndpoint.java @@ -0,0 +1,23 @@ +/* + * Copyright 2000-2024 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.vaadin.controlcenter.starter.actuate.endpoint; + +/** + * Fake class to have mojo tests see Control Center. + */ +public class VaadinActuatorEndpoint { +} diff --git a/flow-plugins/flow-plugin-base/src/test/java/com/vaadin/flow/plugin/base/BuildFrontendUtilTest.java b/flow-plugins/flow-plugin-base/src/test/java/com/vaadin/flow/plugin/base/BuildFrontendUtilTest.java index 4528975cd4f..8e1e2166d56 100644 --- a/flow-plugins/flow-plugin-base/src/test/java/com/vaadin/flow/plugin/base/BuildFrontendUtilTest.java +++ b/flow-plugins/flow-plugin-base/src/test/java/com/vaadin/flow/plugin/base/BuildFrontendUtilTest.java @@ -39,6 +39,7 @@ import com.vaadin.flow.server.ExecutionFailedException; import com.vaadin.flow.server.InitParameters; import com.vaadin.flow.server.frontend.EndpointGeneratorTaskFactory; +import com.vaadin.flow.server.frontend.FileIOUtils; import com.vaadin.flow.server.frontend.FrontendTools; import com.vaadin.flow.server.frontend.FrontendUtils; import com.vaadin.flow.server.frontend.TaskGenerateEndpoint; @@ -54,6 +55,7 @@ import elemental.json.Json; import elemental.json.JsonObject; +import elemental.json.impl.JsonUtil; import static com.vaadin.flow.server.frontend.FrontendUtils.FEATURE_FLAGS_FILE_NAME; import static com.vaadin.flow.server.frontend.FrontendUtils.TOKEN_FILE; @@ -367,6 +369,8 @@ public void updateBuildFile_tokenExisting_licenseNotRequiredAndSubscriptionKey_d throws Exception { File tokenFile = prepareAndAssertTokenFile(); + addPremiumFeatureAndDAUFlagTrue(tokenFile); + String subscriptionKey = System.getProperty("vaadin.subscriptionKey"); System.setProperty("vaadin.subscriptionKey", "sub-123"); try { @@ -417,6 +421,16 @@ public void updateBuildFile_tokenExisting_licenseRequiredAndIsPremiumLike_premiu throws Exception { File tokenFile = prepareAndAssertTokenFile(); + addPremiumFeatureAndDAUFlagTrue(tokenFile); + + ClassLoader classLoader = new URLClassLoader( + new URL[] { new File(baseDir, "target/test-classes/").toURI() + .toURL() }, + BuildFrontendUtilTest.class.getClassLoader()); + ClassFinder classFinder = new ClassFinder.DefaultClassFinder( + classLoader); + Mockito.when(adapter.getClassFinder()).thenReturn(classFinder); + withMockedLicenseChecker(true, () -> { BuildFrontendUtil.updateBuildFile(adapter, true); Assert.assertTrue("Token file should still exist", @@ -435,6 +449,8 @@ public void updateBuildFile_tokenExisting_licenseRequiredAndIsNotPremiumLike_pre throws Exception { File tokenFile = prepareAndAssertTokenFile(); + addPremiumFeatureAndDAUFlagTrue(tokenFile); + withMockedLicenseChecker(false, () -> { BuildFrontendUtil.updateBuildFile(adapter, true); Assert.assertTrue("Token file should still exist", @@ -512,7 +528,8 @@ public void runNodeUpdater_generateFeatureFlagsJsFile() throws Exception { File generatedFeatureFlagsFile = new File(adapter.generatedTsFolder(), FEATURE_FLAGS_FILE_NAME); String featureFlagsJs = Files - .readString(generatedFeatureFlagsFile.toPath()); + .readString(generatedFeatureFlagsFile.toPath()) + .replace("\r\n", "\n"); Assert.assertTrue("Example feature flag is not set", featureFlagsJs.contains( @@ -578,4 +595,18 @@ private void setupPluginAdapterDefaults() throws URISyntaxException { this.getClass().getClassLoader())); Mockito.when(adapter.runNpmInstall()).thenReturn(true); } + + private void addPremiumFeatureAndDAUFlagTrue(File tokenFile) + throws IOException { + // simulates true value placed into pre-compiled bundle + // when bundle is compiled on Vaadin CI server + String tokenJson = FileUtils.readFileToString(tokenFile, + StandardCharsets.UTF_8); + JsonObject buildInfo = JsonUtil.parse(tokenJson); + buildInfo.put(Constants.PREMIUM_FEATURES, true); + buildInfo.put(Constants.DAU_TOKEN, true); + + FileIOUtils.writeIfChanged(tokenFile, + JsonUtil.stringify(buildInfo, 2) + "\n"); + } } diff --git a/flow-plugins/pom.xml b/flow-plugins/pom.xml index d7dd1cb6d3b..65042d8aeec 100644 --- a/flow-plugins/pom.xml +++ b/flow-plugins/pom.xml @@ -5,7 +5,7 @@ com.vaadin flow-project - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-plugins pom diff --git a/flow-polymer-template/pom.xml b/flow-polymer-template/pom.xml index 20804f1c2bb..8338465924d 100644 --- a/flow-polymer-template/pom.xml +++ b/flow-polymer-template/pom.xml @@ -6,7 +6,7 @@ com.vaadin flow-project - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-polymer-template Flow Polymer Templates Support @@ -111,7 +111,7 @@ com.mycila license-maven-plugin - 4.5 + 4.6
src/license/vclst/header.txt
false diff --git a/flow-polymer2lit/README.md b/flow-polymer2lit/README.md index 1fe3bee7f86..1becc8e266c 100644 --- a/flow-polymer2lit/README.md +++ b/flow-polymer2lit/README.md @@ -42,7 +42,7 @@ mvn vaadin:convert-polymer To convert a project that is based on Vaadin < 24, use the full Maven goal: ```bash -mvn com.vaadin:vaadin-maven-plugin:24.5-SNAPSHOT:convert-polymer +mvn com.vaadin:vaadin-maven-plugin:24.6-SNAPSHOT:convert-polymer ``` Or, in the case of using Gradle, add the following to `build.gradle`: @@ -50,7 +50,7 @@ Or, in the case of using Gradle, add the following to `build.gradle`: ```gradle buildscript { repositories { - classpath 'com.vaadin:flow-gradle-plugin:24.5-SNAPSHOT' + classpath 'com.vaadin:flow-gradle-plugin:24.6-SNAPSHOT' } } ``` diff --git a/flow-polymer2lit/pom.xml b/flow-polymer2lit/pom.xml index 394c70e7688..c458639384e 100644 --- a/flow-polymer2lit/pom.xml +++ b/flow-polymer2lit/pom.xml @@ -6,7 +6,7 @@ com.vaadin flow-project - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-polymer2lit Polymer to Lit converter diff --git a/flow-push/pom.xml b/flow-push/pom.xml index a12edbaeded..37c39a237cc 100644 --- a/flow-push/pom.xml +++ b/flow-push/pom.xml @@ -5,7 +5,7 @@ com.vaadin flow-project - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-push Flow Push diff --git a/flow-react/pom.xml b/flow-react/pom.xml index a5914da3919..bff702aaba9 100644 --- a/flow-react/pom.xml +++ b/flow-react/pom.xml @@ -6,7 +6,7 @@ com.vaadin flow-project - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-react diff --git a/flow-server-production-mode/pom.xml b/flow-server-production-mode/pom.xml index 4222db7a06e..7949d2685aa 100644 --- a/flow-server-production-mode/pom.xml +++ b/flow-server-production-mode/pom.xml @@ -5,7 +5,7 @@ com.vaadin flow-project - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-server-production-mode Flow Server Production Mode diff --git a/flow-server/pom.xml b/flow-server/pom.xml index e363e606a29..5656eefeeb5 100644 --- a/flow-server/pom.xml +++ b/flow-server/pom.xml @@ -5,7 +5,7 @@ com.vaadin flow-project - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-server Flow Server @@ -120,7 +120,7 @@ com.helger ph-css - 7.0.2 + 7.0.3 diff --git a/flow-server/src/main/java/com/vaadin/flow/component/ComponentUtil.java b/flow-server/src/main/java/com/vaadin/flow/component/ComponentUtil.java index e676500ca00..c6f13ddb902 100644 --- a/flow-server/src/main/java/com/vaadin/flow/component/ComponentUtil.java +++ b/flow-server/src/main/java/com/vaadin/flow/component/ComponentUtil.java @@ -45,6 +45,7 @@ import com.vaadin.flow.internal.StateTree; import com.vaadin.flow.internal.nodefeature.ElementData; import com.vaadin.flow.internal.nodefeature.VirtualChildrenList; +import com.vaadin.flow.router.Route; import com.vaadin.flow.router.Router; import com.vaadin.flow.server.Attributes; import com.vaadin.flow.server.VaadinService; @@ -723,4 +724,22 @@ public static Router getRouter(HasElement component) { return router; } + /** + * Walk up from given component until a Component with a Route annotation is + * found or empty if no Route is present in parents. + * + * @param component + * Component to find current route component for + * @return Optional containing Route component if found + */ + public static Optional getRouteComponent(Component component) { + if (component.getClass().isAnnotationPresent(Route.class)) { + return Optional.of(component); + } + if (component.getParent().isPresent()) { + return getRouteComponent(component.getParent().get()); + } + return Optional.empty(); + } + } diff --git a/flow-server/src/main/java/com/vaadin/flow/component/internal/ComponentTracker.java b/flow-server/src/main/java/com/vaadin/flow/component/internal/ComponentTracker.java index abbff25a419..7b97d072ff1 100644 --- a/flow-server/src/main/java/com/vaadin/flow/component/internal/ComponentTracker.java +++ b/flow-server/src/main/java/com/vaadin/flow/component/internal/ComponentTracker.java @@ -119,15 +119,21 @@ public int hashCode() { } /** - * Finds the Java file this location refers to. + * Finds the source file this location refers to. * * @param configuration * the application configuration - * @return the Java file the location refers to, or {@code null} + * @return the source file the location refers to, or {@code null} */ - public File findJavaFile(AbstractConfiguration configuration) { + public File findSourceFile(AbstractConfiguration configuration) { String cls = className(); - String filenameNoExt = filename().replace(".java", ""); + int indexOfExt = filename().lastIndexOf("."); + String ext = filename().substring(indexOfExt); + if (!ext.equals(".java") && !ext.equals(".kt")) { + return null; + } + + String filenameNoExt = filename().substring(0, indexOfExt); if (!cls.endsWith(filenameNoExt)) { // Check for inner class @@ -141,11 +147,28 @@ public File findJavaFile(AbstractConfiguration configuration) { } File src = configuration.getJavaSourceFolder(); + if (ext.equals(".kt") && src.getPath().endsWith("/java")) { + src = new File(src.getPath().substring(0, + src.getPath().lastIndexOf("/java")) + "/kotlin"); + } File javaFile = new File(src, - cls.replace(".", File.separator) + ".java"); + cls.replace(".", File.separator) + ext); return javaFile; } + /** + * Finds the Java file this location refers to. + * + * @param configuration + * the application configuration + * @return the Java file the location refers to, or {@code null} + * @deprecated use findSourceFile + */ + @Deprecated + public File findJavaFile(AbstractConfiguration configuration) { + return findSourceFile(configuration); + } + @Override public String toString() { return "Component '" + className + "' at '" + filename + "' (" diff --git a/flow-server/src/main/java/com/vaadin/flow/component/internal/UIInternals.java b/flow-server/src/main/java/com/vaadin/flow/component/internal/UIInternals.java index c5cc329da71..f33939089ea 100644 --- a/flow-server/src/main/java/com/vaadin/flow/component/internal/UIInternals.java +++ b/flow-server/src/main/java/com/vaadin/flow/component/internal/UIInternals.java @@ -699,12 +699,8 @@ public boolean containsPendingJavascript(String containsFilter) { */ public void setTitle(String title) { assert title != null; - JavaScriptInvocation invocation = new JavaScriptInvocation(""" - document.title = $0; - if(window?.Vaadin?.documentTitleSignal) { - window.Vaadin.documentTitleSignal.value = $0; - } - """.stripIndent(), title); + JavaScriptInvocation invocation = new JavaScriptInvocation( + generateTitleScript().stripIndent(), title); pendingTitleUpdateCanceler = new PendingJavaScriptInvocation( getStateTree().getRootNode(), invocation); @@ -713,6 +709,23 @@ public void setTitle(String title) { this.title = title; } + private String generateTitleScript() { + String setTitleScript = """ + document.title = $0; + if(window?.Vaadin?.documentTitleSignal) { + window.Vaadin.documentTitleSignal.value = $0; + } + """; + if (getSession().getConfiguration().isReactEnabled()) { + // For react-router we should wait for navigation to finish + // before updating the title. + setTitleScript = String.format( + "if(window.Vaadin.Flow.navigation) { window.addEventListener('vaadin-navigated', function(event) {%s}, {once:true}); } else { %1$s }", + setTitleScript); + } + return setTitleScript; + } + /** * Records the text content of the title tag in the application shell. *

diff --git a/flow-server/src/main/java/com/vaadin/flow/hotswap/Hotswapper.java b/flow-server/src/main/java/com/vaadin/flow/hotswap/Hotswapper.java index 650d7e48ced..73776c031f8 100644 --- a/flow-server/src/main/java/com/vaadin/flow/hotswap/Hotswapper.java +++ b/flow-server/src/main/java/com/vaadin/flow/hotswap/Hotswapper.java @@ -46,6 +46,8 @@ import com.vaadin.flow.server.SessionDestroyListener; import com.vaadin.flow.server.SessionInitEvent; import com.vaadin.flow.server.SessionInitListener; +import com.vaadin.flow.server.UIInitEvent; +import com.vaadin.flow.server.UIInitListener; import com.vaadin.flow.server.VaadinService; import com.vaadin.flow.server.VaadinSession; @@ -83,7 +85,7 @@ * @since 24.5 */ public class Hotswapper implements ServiceDestroyListener, SessionInitListener, - SessionDestroyListener { + SessionDestroyListener, UIInitListener { private static final Logger LOGGER = LoggerFactory .getLogger(Hotswapper.class); private final Set sessions = ConcurrentHashMap.newKeySet(); @@ -413,6 +415,11 @@ public void serviceDestroy(ServiceDestroyEvent event) { sessions.clear(); } + @Override + public void uiInit(UIInitEvent event) { + sessions.add(event.getUI().getSession()); + } + /** * Register the hotwsapper entry point for the given {@link VaadinService}. *

@@ -428,6 +435,7 @@ public void serviceDestroy(ServiceDestroyEvent event) { public static Optional register(VaadinService vaadinService) { if (!vaadinService.getDeploymentConfiguration().isProductionMode()) { Hotswapper hotswapper = new Hotswapper(vaadinService); + vaadinService.addUIInitListener(hotswapper); vaadinService.addSessionInitListener(hotswapper); vaadinService.addSessionDestroyListener(hotswapper); vaadinService.addServiceDestroyListener(hotswapper); diff --git a/flow-server/src/main/java/com/vaadin/flow/internal/DevModeHandlerManager.java b/flow-server/src/main/java/com/vaadin/flow/internal/DevModeHandlerManager.java index 503c0d19329..055d13cf8fc 100644 --- a/flow-server/src/main/java/com/vaadin/flow/internal/DevModeHandlerManager.java +++ b/flow-server/src/main/java/com/vaadin/flow/internal/DevModeHandlerManager.java @@ -15,10 +15,12 @@ */ package com.vaadin.flow.internal; +import java.io.Closeable; import java.util.Optional; import java.util.Set; import com.vaadin.flow.di.Lookup; +import com.vaadin.flow.server.Command; import com.vaadin.flow.server.VaadinContext; import com.vaadin.flow.server.VaadinService; import com.vaadin.flow.server.startup.VaadinInitializerException; @@ -49,7 +51,7 @@ public interface DevModeHandlerManager { * @param classes * classes to check for npm- and js modules * @param context - * servlet context we are running in + * Vaadin Context we are running in * * @throws VaadinInitializerException * if dev mode can't be initialized @@ -87,6 +89,24 @@ void initDevModeHandler(Set> classes, VaadinContext context) */ void launchBrowserInDevelopmentMode(String url); + /** + * Sets the application URL for the given application. + *

+ * This is only called if the URL is known. + * + * @param applicationUrl + * the application url + */ + void setApplicationUrl(String applicationUrl); + + /** + * Registers a command that will run when DevModeHandler is shut down + * + * @param command + * the command to run + */ + void registerShutdownCommand(Command command); + /** * Gets the {@link DevModeHandler}. * diff --git a/flow-server/src/main/java/com/vaadin/flow/router/BeforeEvent.java b/flow-server/src/main/java/com/vaadin/flow/router/BeforeEvent.java index 19025c3f4a6..dab5401eac5 100644 --- a/flow-server/src/main/java/com/vaadin/flow/router/BeforeEvent.java +++ b/flow-server/src/main/java/com/vaadin/flow/router/BeforeEvent.java @@ -58,6 +58,7 @@ public abstract class BeforeEvent extends EventObject { private String unknownReroute = null; private String externalForwardUrl = null; + private boolean useForwardCallback; /** * Constructs event from a NavigationEvent. @@ -340,6 +341,30 @@ public void forwardTo(Class forwardTargetComponent) { RouteParameters.empty(), null)); } + /** + * Forward the navigation to show the given component instead of the + * component that is currently about to be displayed. + *

+ * This function changes the browser URL as opposed to + * rerouteTo(). + *

+ * Note that query parameters of the event are preserved in the forwarded + * URL. + * + * @param forwardTargetComponent + * the component type to display, not {@code null} + * @param useForwardCallback + * {@literal true} to request navigation callback from client + */ + public void forwardTo(Class forwardTargetComponent, + boolean useForwardCallback) { + Objects.requireNonNull(forwardTargetComponent, + "forwardTargetComponent cannot be null"); + this.useForwardCallback = useForwardCallback; + forwardTo(getNavigationState(forwardTargetComponent, + RouteParameters.empty(), null)); + } + /** * Forward the navigation to show the given component with given route * parameter instead of the component that is currently about to be @@ -1139,6 +1164,17 @@ public ErrorParameter getErrorParameter() { return errorParameter; } + /** + * Determines is client side callback should be requested when executing + * pending forward operation. + * + * @return {@literal true} if callback should be used, + * {@literal false otherwise} + */ + public boolean isUseForwardCallback() { + return useForwardCallback; + } + /** * Gets the UI this navigation takes place inside. * diff --git a/flow-server/src/main/java/com/vaadin/flow/router/internal/AbstractNavigationStateRenderer.java b/flow-server/src/main/java/com/vaadin/flow/router/internal/AbstractNavigationStateRenderer.java index bdd1d34b6a2..e9866f9e216 100644 --- a/flow-server/src/main/java/com/vaadin/flow/router/internal/AbstractNavigationStateRenderer.java +++ b/flow-server/src/main/java/com/vaadin/flow/router/internal/AbstractNavigationStateRenderer.java @@ -737,20 +737,11 @@ private int forwardToExternalUrl(NavigationEvent event, private int forward(NavigationEvent event, BeforeEvent beforeNavigation) { NavigationHandler handler = beforeNavigation.getForwardTarget(); - Class forwardTargetType = beforeNavigation - .getForwardTargetType(); - - List> parentLayouts = RouteUtil - .getParentLayouts(event.getUI().getRouter().getRegistry(), - forwardTargetType, beforeNavigation.getForwardUrl()); - - boolean preserveOnRefreshTarget = isPreserveOnRefreshTarget( - forwardTargetType, parentLayouts); - NavigationEvent newNavigationEvent = getNavigationEvent(event, beforeNavigation); newNavigationEvent.getUI().getPage().getHistory().replaceState(null, - newNavigationEvent.getLocation(), !preserveOnRefreshTarget); + newNavigationEvent.getLocation(), + beforeNavigation.isUseForwardCallback()); return handler.handle(newNavigationEvent); } diff --git a/flow-server/src/main/java/com/vaadin/flow/server/auth/NavigationAccessControl.java b/flow-server/src/main/java/com/vaadin/flow/server/auth/NavigationAccessControl.java index 100f46e10a3..a33042392f8 100644 --- a/flow-server/src/main/java/com/vaadin/flow/server/auth/NavigationAccessControl.java +++ b/flow-server/src/main/java/com/vaadin/flow/server/auth/NavigationAccessControl.java @@ -187,6 +187,10 @@ public final boolean isEnabled() { * the Flow view to use as login view */ public final void setLoginView(Class loginView) { + if (loginView == this.loginView) { + // Probably hot reload + return; + } throwIfLoginViewSet(); this.loginView = loginView; } @@ -210,6 +214,11 @@ protected Class getLoginView() { * the frontend view to use as login view */ public void setLoginView(String loginUrl) { + if (loginUrl == this.loginUrl) { + // Probably hot reload + return; + } + throwIfLoginViewSet(); this.loginUrl = loginUrl; } @@ -246,7 +255,7 @@ public void beforeEnter(BeforeEnterEvent event) { if (context.getPrincipal() == null) { storeRedirectURL(event, request); if (loginView != null) { - event.forwardTo(loginView); + event.forwardTo(loginView, true); } else { if (loginUrl != null) { event.forwardToUrl(loginUrl); diff --git a/flow-server/src/main/java/com/vaadin/flow/server/auth/ViewAccessChecker.java b/flow-server/src/main/java/com/vaadin/flow/server/auth/ViewAccessChecker.java index 0a8087c3e93..eb65aa368da 100644 --- a/flow-server/src/main/java/com/vaadin/flow/server/auth/ViewAccessChecker.java +++ b/flow-server/src/main/java/com/vaadin/flow/server/auth/ViewAccessChecker.java @@ -206,7 +206,7 @@ public void beforeEnter(BeforeEnterEvent beforeEnterEvent) { } } if (loginView != null) { - beforeEnterEvent.forwardTo(loginView); + beforeEnterEvent.forwardTo(loginView, true); } else { if (loginUrl != null) { beforeEnterEvent.forwardToUrl(loginUrl); diff --git a/flow-server/src/main/java/com/vaadin/flow/server/communication/rpc/AbstractRpcInvocationHandler.java b/flow-server/src/main/java/com/vaadin/flow/server/communication/rpc/AbstractRpcInvocationHandler.java index 838fa4f57dc..3a4dda04a44 100644 --- a/flow-server/src/main/java/com/vaadin/flow/server/communication/rpc/AbstractRpcInvocationHandler.java +++ b/flow-server/src/main/java/com/vaadin/flow/server/communication/rpc/AbstractRpcInvocationHandler.java @@ -22,9 +22,14 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.vaadin.flow.component.Component; +import com.vaadin.flow.component.ComponentUtil; import com.vaadin.flow.component.PollEvent; import com.vaadin.flow.component.UI; +import com.vaadin.flow.dom.Element; import com.vaadin.flow.internal.StateNode; +import com.vaadin.flow.internal.nodefeature.ElementData; +import com.vaadin.flow.router.Route; import com.vaadin.flow.shared.JsonConstants; import elemental.json.JsonObject; @@ -59,21 +64,43 @@ public Optional handle(UI ui, JsonObject invocationJson) { // ignore RPC requests from the client side for the nodes that are // invisible, disabled or inert if (node.isInactive()) { - getLogger().info("Ignored RPC for invocation handler '{}' from " - + "the client side for an inactive (disabled or invisible) node id='{}'", - getClass().getName(), node.getId()); + logHandlingIgnoredMessage(node, "inactive (disabled or invisible)"); return Optional.empty(); } else if (!allowInert(ui, invocationJson) && node.isInert()) { - getLogger().info( - "Ignored RPC for invocation handler '{}' from " - + "the client side for an inert node id='{}'", - getClass().getName(), node.getId()); + logHandlingIgnoredMessage(node, "inert"); return Optional.empty(); } else { return handleNode(node, invocationJson); } } + private void logHandlingIgnoredMessage(StateNode node, String reason) { + StringBuilder targetInfo = new StringBuilder(); + if (node != null && node.hasFeature(ElementData.class)) { + Element element = Element.get(node); + Optional component = element.getComponent(); + targetInfo.append(" element with tag").append("'") + .append(element.getTag()).append("'"); + if (component.isPresent()) { + targetInfo.append(" Component: ").append("'") + .append(component.get().getClass().getName()) + .append("'"); + Optional routeComponent = ComponentUtil + .getRouteComponent(component.get()); + if (routeComponent.isPresent()) { + targetInfo.append(" Route: ").append("'") + .append(routeComponent.get().getClass() + .getAnnotation(Route.class).value()) + .append("'"); + } + } + } + getLogger().info( + "Ignored RPC for invocation handler '{}' from " + + "the client side for an {} node id='{}'{}", + getClass().getName(), reason, node.getId(), targetInfo); + } + /** * Checks whether a Poll RPC invocation is valid or not. * diff --git a/flow-server/src/main/java/com/vaadin/flow/server/frontend/FrontendTools.java b/flow-server/src/main/java/com/vaadin/flow/server/frontend/FrontendTools.java index b694d739784..78b44b7d463 100644 --- a/flow-server/src/main/java/com/vaadin/flow/server/frontend/FrontendTools.java +++ b/flow-server/src/main/java/com/vaadin/flow/server/frontend/FrontendTools.java @@ -66,7 +66,7 @@ public class FrontendTools { * the installed version is older than {@link #SUPPORTED_NODE_VERSION}, i.e. * {@value #SUPPORTED_NODE_MAJOR_VERSION}.{@value #SUPPORTED_NODE_MINOR_VERSION}. */ - public static final String DEFAULT_NODE_VERSION = "v20.17.0"; + public static final String DEFAULT_NODE_VERSION = "v22.9.0"; /** * This is the version shipped with the default Node version. */ diff --git a/flow-server/src/main/java/com/vaadin/flow/server/frontend/TaskGenerateReactFiles.java b/flow-server/src/main/java/com/vaadin/flow/server/frontend/TaskGenerateReactFiles.java index 6f173dded0d..7c24e4d1c52 100644 --- a/flow-server/src/main/java/com/vaadin/flow/server/frontend/TaskGenerateReactFiles.java +++ b/flow-server/src/main/java/com/vaadin/flow/server/frontend/TaskGenerateReactFiles.java @@ -20,6 +20,7 @@ import java.io.InputStream; import java.nio.file.Files; import java.nio.file.StandardCopyOption; +import java.util.Set; import java.util.regex.Pattern; import org.apache.commons.io.FileUtils; @@ -28,10 +29,14 @@ import org.slf4j.LoggerFactory; import com.vaadin.flow.internal.StringUtil; +import com.vaadin.flow.router.Layout; import com.vaadin.flow.router.Route; import com.vaadin.flow.server.ExecutionFailedException; import com.vaadin.flow.server.Version; +import elemental.json.Json; +import elemental.json.JsonArray; +import elemental.json.JsonObject; import static com.vaadin.flow.server.frontend.FileIOUtils.compareIgnoringIndentationEOLAndWhiteSpace; import static java.nio.charset.StandardCharsets.UTF_8; @@ -102,6 +107,7 @@ function build() { private static final String VAADIN_REACT_TSX = "vaadin-react.tsx"; private static final String REACT_ADAPTER_TEMPLATE = "ReactAdapter.template"; private static final String REACT_ADAPTER_TSX = "ReactAdapter.tsx"; + private static final String LAYOUTS_JSON = "layouts.json"; static final String FLOW_FLOW_TSX = "flow/" + FLOW_TSX; static final String FLOW_REACT_ADAPTER_TSX = "flow/" + REACT_ADAPTER_TSX; private static final String ROUTES_JS_IMPORT_PATH_TOKEN = "%routesJsImportPath%"; @@ -158,6 +164,8 @@ private void doExecute() throws ExecutionFailedException { writeFile(flowTsx, getFileContent(FLOW_TSX)); writeFile(vaadinReactTsx, getVaadinReactTsContent(routesTsx.exists())); + writeFile(new File(frontendGeneratedFolder, LAYOUTS_JSON), + layoutsContent()); if (fileAvailable(REACT_ADAPTER_TEMPLATE)) { String reactAdapterContent = getFileContent( REACT_ADAPTER_TEMPLATE); @@ -193,6 +201,19 @@ && serverRoutesAvailable()) { } } + private String layoutsContent() { + JsonArray availableLayouts = Json.createArray(); + Set> layoutClasses = options.getClassFinder() + .getAnnotatedClasses(Layout.class); + for (Class layout : layoutClasses) { + JsonObject layoutObject = Json.createObject(); + layoutObject.put("path", + layout.getAnnotation(Layout.class).value()); + availableLayouts.set(availableLayouts.length(), layoutObject); + } + return availableLayouts.toJson(); + } + private void cleanup() throws ExecutionFailedException { try { File frontendDirectory = options.getFrontendDirectory(); @@ -204,7 +225,9 @@ private void cleanup() throws ExecutionFailedException { FLOW_REACT_ADAPTER_TSX); File frontendGeneratedFolderRoutesTsx = new File( frontendGeneratedFolder, FrontendUtils.ROUTES_TSX); + File layoutsJson = new File(frontendGeneratedFolder, LAYOUTS_JSON); FileUtils.deleteQuietly(flowTsx); + FileUtils.deleteQuietly(layoutsJson); FileUtils.deleteQuietly(vaadinReactTsx); FileUtils.deleteQuietly(reactAdapterTsx); FileUtils.deleteQuietly(frontendGeneratedFolderRoutesTsx); diff --git a/flow-server/src/main/java/com/vaadin/flow/server/frontend/scanner/FrontendDependencies.java b/flow-server/src/main/java/com/vaadin/flow/server/frontend/scanner/FrontendDependencies.java index 66070f2e0d1..b8a1cfd80b4 100644 --- a/flow-server/src/main/java/com/vaadin/flow/server/frontend/scanner/FrontendDependencies.java +++ b/flow-server/src/main/java/com/vaadin/flow/server/frontend/scanner/FrontendDependencies.java @@ -51,6 +51,7 @@ import com.vaadin.flow.internal.ReflectTools; import com.vaadin.flow.router.DefaultRoutePathProvider; import com.vaadin.flow.router.HasErrorParameter; +import com.vaadin.flow.router.Layout; import com.vaadin.flow.router.Route; import com.vaadin.flow.router.internal.DependencyTrigger; import com.vaadin.flow.server.LoadDependenciesOnStartup; @@ -465,6 +466,11 @@ private void collectEntryPoints(boolean generateEmbeddableWebComponents) addInternalEntryPoint(initListener); } + for (Class layout : getFinder().getAnnotatedClasses( + getFinder().loadClass(Layout.class.getName()))) { + addInternalEntryPoint(layout); + } + for (Class appShell : getFinder().getSubTypesOf( getFinder().loadClass(AppShellConfigurator.class.getName()))) { addInternalEntryPoint(appShell); diff --git a/flow-server/src/main/java/com/vaadin/flow/server/menu/MenuRegistry.java b/flow-server/src/main/java/com/vaadin/flow/server/menu/MenuRegistry.java index 2ac6ba3e7b2..102ccc944aa 100644 --- a/flow-server/src/main/java/com/vaadin/flow/server/menu/MenuRegistry.java +++ b/flow-server/src/main/java/com/vaadin/flow/server/menu/MenuRegistry.java @@ -21,12 +21,15 @@ import java.net.MalformedURLException; import java.net.URL; import java.nio.file.Path; +import java.text.Collator; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Optional; import java.util.Set; @@ -41,6 +44,7 @@ import com.vaadin.flow.component.Component; import com.vaadin.flow.router.BeforeEnterListener; +import com.vaadin.flow.router.MenuData; import com.vaadin.flow.router.PageTitle; import com.vaadin.flow.router.RouteConfiguration; import com.vaadin.flow.router.RouteData; @@ -72,7 +76,48 @@ public class MenuRegistry { * @return routes with view information */ public static Map collectMenuItems() { - return new MenuRegistry().getMenuItems(true); + Map menuRoutes = new MenuRegistry() + .getMenuItems(true); + menuRoutes.entrySet() + .removeIf(entry -> Optional.ofNullable(entry.getValue()) + .map(AvailableViewInfo::menu).map(MenuData::isExclude) + .orElse(false)); + return menuRoutes; + } + + /** + * Collect ordered list of views with menu annotation for automatic menu + * population. All client views are collected and any accessible server + * views. + * + * @return ordered routes with view information + */ + public static List collectMenuItemsList() { + // en-US is used by default here to match with Hilla's + // createMenuItems.ts sorting algorithm. + return collectMenuItemsList(Locale.forLanguageTag("en-US")); + } + + /** + * Collect ordered list of views with menu annotation for automatic menu + * population. All client views are collected and any accessible server + * views. + * + * @param locale + * locale to use for ordering. null for default locale. + * @return ordered routes with view information + */ + public static List collectMenuItemsList(Locale locale) { + return collectMenuItems().entrySet().stream().map(entry -> { + AvailableViewInfo value = entry.getValue(); + return new AvailableViewInfo(value.title(), value.rolesAllowed(), + value.loginRequired(), entry.getKey(), value.lazy(), + value.register(), value.menu(), value.children(), + value.routeParameters(), value.flowLayout()); + }).sorted(getMenuOrderComparator( + (locale != null ? Collator.getInstance(locale) + : Collator.getInstance()))) + .toList(); } /** @@ -467,4 +512,16 @@ public static Map getClientRoutes( } return clientItems; } + + private static Comparator getMenuOrderComparator( + Collator collator) { + return (o1, o2) -> { + int ordersCompareTo = Optional.ofNullable(o1.menu()) + .map(MenuData::getOrder).orElse(Double.MAX_VALUE) + .compareTo(Optional.ofNullable(o2.menu()) + .map(MenuData::getOrder).orElse(Double.MAX_VALUE)); + return ordersCompareTo != 0 ? ordersCompareTo + : collator.compare(o1.route(), o2.route()); + }; + } } diff --git a/flow-server/src/main/java/com/vaadin/flow/server/startup/AbstractRouteRegistryInitializer.java b/flow-server/src/main/java/com/vaadin/flow/server/startup/AbstractRouteRegistryInitializer.java index 772dc490558..151e579f452 100644 --- a/flow-server/src/main/java/com/vaadin/flow/server/startup/AbstractRouteRegistryInitializer.java +++ b/flow-server/src/main/java/com/vaadin/flow/server/startup/AbstractRouteRegistryInitializer.java @@ -19,8 +19,11 @@ import java.io.Serializable; import java.lang.annotation.Annotation; +import java.util.Arrays; import java.util.List; +import java.util.Map; import java.util.Set; +import java.util.function.Function; import java.util.function.Supplier; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -34,6 +37,7 @@ import com.vaadin.flow.router.RouteAlias; import com.vaadin.flow.router.RouterLayout; import com.vaadin.flow.router.internal.RouteUtil; +import com.vaadin.flow.server.InvalidRouteConfigurationException; import com.vaadin.flow.server.InvalidRouteLayoutConfigurationException; import com.vaadin.flow.server.PWA; import com.vaadin.flow.server.VaadinContext; @@ -96,6 +100,30 @@ private void checkForConflictingAnnotations(VaadinContext context, } + RouteAlias[] aliases = route.getAnnotationsByType(RouteAlias.class); + if (aliases.length > 0) { + Route routeAnnotation = route.getAnnotation(Route.class); + Map stats = Arrays.stream(aliases) + .map(RouteAlias::value).collect(Collectors.groupingBy( + Function.identity(), Collectors.counting())); + if (stats.containsKey(routeAnnotation.value())) { + throw new InvalidRouteConfigurationException(String.format( + "'%s' declares '@%s' and '@%s' with the same path '%s'", + route.getCanonicalName(), Route.class.getSimpleName(), + RouteAlias.class.getSimpleName(), + routeAnnotation.value())); + } + String repeatedAliases = stats.entrySet().stream() + .filter(e -> e.getValue() > 1).map(Map.Entry::getKey) + .collect(Collectors.joining(", ")); + if (!repeatedAliases.isEmpty()) { + throw new InvalidRouteConfigurationException(String.format( + "'%s' declares multiple '@%s' with same paths: %s.", + route.getCanonicalName(), + RouteAlias.class.getSimpleName(), repeatedAliases)); + } + } + if (route.isAnnotationPresent(PageTitle.class) && HasDynamicTitle.class.isAssignableFrom(route)) { throw new DuplicateNavigationTitleException(String.format( @@ -110,8 +138,7 @@ private void checkForConflictingAnnotations(VaadinContext context, validateRouteAnnotation(context, route, annotation); - for (RouteAlias alias : route - .getAnnotationsByType(RouteAlias.class)) { + for (RouteAlias alias : aliases) { validateRouteAliasAnnotation(context, route, alias, annotation); } }); diff --git a/flow-server/src/main/resources/com/vaadin/flow/server/frontend/Flow.tsx b/flow-server/src/main/resources/com/vaadin/flow/server/frontend/Flow.tsx index c5668442091..5c9e29c1cb2 100644 --- a/flow-server/src/main/resources/com/vaadin/flow/server/frontend/Flow.tsx +++ b/flow-server/src/main/resources/com/vaadin/flow/server/frontend/Flow.tsx @@ -20,13 +20,15 @@ import React, { useEffect, useReducer, useRef, + useState, type ReactNode } from "react"; import { matchRoutes, useBlocker, useLocation, - useNavigate + useNavigate, + type NavigateOptions, } from "react-router-dom"; import type { AgnosticRouteObject } from '@remix-run/router'; import { createPortal } from "react-dom"; @@ -151,13 +153,16 @@ function extractPath(event: MouseEvent): void | string { * @param search search of navigation */ function fireNavigated(pathname:string, search: string) { - setTimeout(() => - window.dispatchEvent(new CustomEvent('vaadin-navigated', { - detail: { - pathname, - search - } - })) + setTimeout(() => { + window.dispatchEvent(new CustomEvent('vaadin-navigated', { + detail: { + pathname, + search + } + })); + // @ts-ignore + delete window.Vaadin.Flow.navigation; + } ) } @@ -197,6 +202,68 @@ function portalsReducer(portals: readonly PortalEntry[], action: PortalAction) { } } + +type NavigateOpts = { + to: string, + callback: boolean, + opts?: NavigateOptions +}; + +type NavigateFn = (to: string, callback: boolean, opts?: NavigateOptions) => void; + +/** + * A hook providing the `navigate(path: string, opts?: NavigateOptions)` function + * with React Router API that has more consistent history updates. Uses internal + * queue for processing navigate calls. + */ +function useQueuedNavigate(waitReference: React.MutableRefObject | undefined>, navigated: React.MutableRefObject): NavigateFn { + const navigate = useNavigate(); + const navigateQueue = useRef([]).current; + const [navigateQueueLength, setNavigateQueueLength] = useState(0); + + const dequeueNavigation = useCallback(() => { + const navigateArgs = navigateQueue.shift(); + if (navigateArgs === undefined) { + // Empty queue, do nothing. + return; + } + + const blockingNavigate = async () => { + if (waitReference.current) { + await waitReference.current; + waitReference.current = undefined; + } + navigated.current = !navigateArgs.callback; + navigate(navigateArgs.to, navigateArgs.opts); + setNavigateQueueLength(navigateQueue.length); + } + blockingNavigate(); + }, [navigate, setNavigateQueueLength]); + + const dequeueNavigationAfterCurrentTask = useCallback(() => { + queueMicrotask(dequeueNavigation); + }, [dequeueNavigation]); + + const enqueueNavigation = useCallback((to: string, callback: boolean, opts?: NavigateOptions) => { + navigateQueue.push({to: to, callback: callback, opts: opts}); + setNavigateQueueLength(navigateQueue.length); + if (navigateQueue.length === 1) { + // The first navigation can be started right after any pending sync + // jobs, which could add more navigations to the queue. + dequeueNavigationAfterCurrentTask(); + } + }, [setNavigateQueueLength, dequeueNavigationAfterCurrentTask]); + + useEffect(() => () => { + // The Flow component has rendered, but history might not be + // updated yet, as React Router does it asynchronously. + // Use microtask callback for history consistency. + dequeueNavigationAfterCurrentTask(); + }, [navigateQueueLength, dequeueNavigationAfterCurrentTask]); + + return enqueueNavigation; +} + function Flow() { const ref = useRef(null); const navigate = useNavigate(); @@ -204,10 +271,12 @@ function Flow() { navigated.current = navigated.current || (nextLocation.pathname === currentLocation.pathname && nextLocation.search === currentLocation.search && nextLocation.hash === currentLocation.hash); return true; }); - const {pathname, search, hash} = useLocation(); + const location = useLocation(); const navigated = useRef(false); const fromAnchor = useRef(false); const containerRef = useRef(undefined); + const roundTrip = useRef | undefined>(undefined); + const queuedNavigate = useQueuedNavigate(roundTrip, navigated); // portalsReducer function is used as state outside the Flow component. const [portals, dispatchPortalAction] = useReducer(portalsReducer, []); @@ -239,6 +308,8 @@ function Flow() { // in order to get a server round-trip even when navigating to the same URL again fromAnchor.current = true; navigate(path); + // Dispatch close event for overlay drawer on click navigation. + window.dispatchEvent(new CustomEvent('close-overlay-drawer')); }, [navigate]); const vaadinRouterGoEventHandler = useCallback((event: CustomEvent) => { @@ -253,9 +324,11 @@ function Flow() { }, [navigate]); const vaadinNavigateEventHandler = useCallback((event: CustomEvent<{state: unknown, url: string, replace?: boolean, callback: boolean}>) => { + // @ts-ignore + window.Vaadin.Flow.navigation = true; const path = '/' + event.detail.url; - navigated.current = !event.detail.callback; - navigate(path, { state: event.detail.state, replace: event.detail.replace}); + fromAnchor.current = false; + queuedNavigate(path, event.detail.callback, { state: event.detail.state, replace: event.detail.replace }); }, [navigate]); const redirect = useCallback((path: string) => { @@ -288,28 +361,34 @@ function Flow() { useEffect(() => { if (blocker.state === 'blocked') { + let blockingPromise: any; + roundTrip.current = new Promise((resolve,reject) => blockingPromise = {resolve:resolve,reject:reject}); + // Do not skip server round-trip if navigation originates from a click on a link if (navigated.current && !fromAnchor.current) { blocker.proceed(); + blockingPromise.resolve(); return; } fromAnchor.current = false; const {pathname, search} = blocker.location; const routes = ((window as any)?.Vaadin?.routesConfig || []) as AgnosticRouteObject[]; - let matched = matchRoutes(Array.from(routes), window.location.pathname); + let matched = matchRoutes(Array.from(routes), pathname); // Navigation between server routes // @ts-ignore if (matched && matched.filter(path => path.route?.element?.type?.name === Flow.name).length != 0) { containerRef.current?.onBeforeEnter?.call(containerRef?.current, - {pathname,search}, { + {pathname, search}, { prevent() { blocker.reset(); + blockingPromise.resolve(); navigated.current = false; }, redirect, continue() { blocker.proceed(); + blockingPromise.resolve(); } }, router); navigated.current = true; @@ -325,13 +404,16 @@ function Flow() { containerRef.current.serverConnected = (cancel) => { if (cancel) { blocker.reset(); + blockingPromise.resolve(); } else { blocker.proceed(); + blockingPromise.resolve(); } } } else { // permitted navigation: proceed with the blocker blocker.proceed(); + blockingPromise.resolve(); } }); } @@ -341,10 +423,10 @@ function Flow() { useEffect(() => { if (navigated.current) { navigated.current = false; - fireNavigated(pathname,search); + fireNavigated(location.pathname,location.search); return; } - flow.serverSideRoutes[0].action({pathname, search}) + flow.serverSideRoutes[0].action({pathname: location.pathname, search: location.search}) .then((container) => { const outlet = ref.current?.parentNode; if (outlet && outlet !== container.parentNode) { @@ -353,18 +435,18 @@ function Flow() { window.addEventListener('click', navigateEventHandler); containerRef.current = container } - return container.onBeforeEnter?.call(container, {pathname, search}, {prevent, redirect, continue() { - fireNavigated(pathname,search);}}, router); + return container.onBeforeEnter?.call(container, {pathname: location.pathname, search: location.search}, {prevent, redirect, continue() { + fireNavigated(location.pathname,location.search);}}, router); }) .then((result: unknown) => { if (typeof result === "function") { result(); } }); - }, [pathname, search, hash]); + }, [location]); return <> - + {portals.map(({children, domNode}) => createPortal(children, domNode))} ; } diff --git a/flow-server/src/main/resources/com/vaadin/flow/server/frontend/dependencies/react-router/package.json b/flow-server/src/main/resources/com/vaadin/flow/server/frontend/dependencies/react-router/package.json index be74bd3ac94..793de6168bb 100644 --- a/flow-server/src/main/resources/com/vaadin/flow/server/frontend/dependencies/react-router/package.json +++ b/flow-server/src/main/resources/com/vaadin/flow/server/frontend/dependencies/react-router/package.json @@ -14,7 +14,7 @@ "react-router-dom": "6.26.2" }, "devDependencies": { - "@types/react": "18.3.5", + "@types/react": "18.3.9", "@types/react-dom": "18.3.0" } } diff --git a/flow-server/src/main/resources/com/vaadin/flow/server/frontend/dependencies/vite/package.json b/flow-server/src/main/resources/com/vaadin/flow/server/frontend/dependencies/vite/package.json index d9e2d2b08ce..e87e9dee5c6 100644 --- a/flow-server/src/main/resources/com/vaadin/flow/server/frontend/dependencies/vite/package.json +++ b/flow-server/src/main/resources/com/vaadin/flow/server/frontend/dependencies/vite/package.json @@ -13,8 +13,8 @@ "vite": "6.0.0-beta.2", "@vitejs/plugin-react": "4.3.1", "@preact/signals-react-transform": "0.4.0", - "@rollup/plugin-replace": "5.0.7", - "@rollup/pluginutils": "5.1.0", + "@rollup/plugin-replace": "6.0.1", + "@rollup/pluginutils": "5.1.2", "@babel/preset-react": "7.24.7", "rollup-plugin-visualizer": "5.12.0", "rollup-plugin-brotli": "3.1.0", diff --git a/flow-server/src/main/resources/com/vaadin/flow/server/frontend/vaadin-react.tsx b/flow-server/src/main/resources/com/vaadin/flow/server/frontend/vaadin-react.tsx index 57466ef4ff6..549cdc83384 100644 --- a/flow-server/src/main/resources/com/vaadin/flow/server/frontend/vaadin-react.tsx +++ b/flow-server/src/main/resources/com/vaadin/flow/server/frontend/vaadin-react.tsx @@ -2,3 +2,13 @@ import { routes } from "%routesJsImportPath%"; (window as any).Vaadin ??= {}; (window as any).Vaadin.routesConfig = routes; + +export { routes as forHMROnly }; + +// @ts-ignore +if (import.meta.hot) { + // @ts-ignore + import.meta.hot.accept((module) => { + (window as any).Vaadin.routesConfig = module.forHMROnly; + }); +} diff --git a/flow-server/src/main/resources/vite.generated.ts b/flow-server/src/main/resources/vite.generated.ts index c96bdb377e6..46200d9c49d 100644 --- a/flow-server/src/main/resources/vite.generated.ts +++ b/flow-server/src/main/resources/vite.generated.ts @@ -722,7 +722,6 @@ export const vaadinConfig: UserConfigFn = (env) => { outDir: buildOutputFolder, emptyOutDir: devBundle, assetsDir: 'VAADIN/build', - target: ["esnext", "safari15"], rollupOptions: { input: { indexhtml: projectIndexHtml, diff --git a/flow-server/src/test/java/com/vaadin/flow/ComponentTrackerLocationTest.java b/flow-server/src/test/java/com/vaadin/flow/ComponentTrackerLocationTest.java index 3096b94bb45..3b25e498e99 100644 --- a/flow-server/src/test/java/com/vaadin/flow/ComponentTrackerLocationTest.java +++ b/flow-server/src/test/java/com/vaadin/flow/ComponentTrackerLocationTest.java @@ -42,7 +42,7 @@ public void findJavaFile_simpleClass() { .resolve(Path.of("com", "example", "app", "MyClass.java")) .toFile(); - File javaFile = location.findJavaFile(configuration); + File javaFile = location.findSourceFile(configuration); Assert.assertEquals(expectedFile, javaFile); } @@ -60,7 +60,7 @@ public void findJavaFile_simpleClass_dollarInPackage() { .resolve(Path.of("com", "exa$mple", "app", "MyClass.java")) .toFile(); - File javaFile = location.findJavaFile(configuration); + File javaFile = location.findSourceFile(configuration); Assert.assertEquals(expectedFile, javaFile); } @@ -79,7 +79,7 @@ public void findJavaFile_simpleClass_dollarInName() { Path.of("com", "example", "app", "MyClass$NotInner.java")) .toFile(); - File javaFile = location.findJavaFile(configuration); + File javaFile = location.findSourceFile(configuration); Assert.assertEquals(expectedFile, javaFile); } @@ -98,7 +98,7 @@ public void findJavaFile_innerClass() { .resolve(Path.of("com", "example", "app", "MyClass.java")) .toFile(); - File javaFile = location.findJavaFile(configuration); + File javaFile = location.findSourceFile(configuration); Assert.assertEquals(expectedFile, javaFile); } @@ -117,7 +117,26 @@ public void findJavaFile_nestedInnerClass() { .resolve(Path.of("com", "example", "app", "MyClass.java")) .toFile(); - File javaFile = location.findJavaFile(configuration); + File javaFile = location.findSourceFile(configuration); + Assert.assertEquals(expectedFile, javaFile); + } + + @Test + public void findKotlinFile_simpleClass() { + File defaultJavaSrcDir = new File("src/main/java"); + File kotlinExpectedSrcDir = new File("src/main/kotlin"); + AbstractConfiguration configuration = Mockito + .mock(AbstractConfiguration.class); + Mockito.when(configuration.getJavaSourceFolder()) + .thenReturn(defaultJavaSrcDir); + + ComponentTracker.Location location = new ComponentTracker.Location( + "com.example.app.MyClass", "MyClass.kt", "whoCares", 99); + File expectedFile = kotlinExpectedSrcDir.toPath() + .resolve(Path.of("com", "example", "app", "MyClass.kt")) + .toFile(); + + File javaFile = location.findSourceFile(configuration); Assert.assertEquals(expectedFile, javaFile); } diff --git a/flow-server/src/test/java/com/vaadin/flow/ComponentTrackerTest.java b/flow-server/src/test/java/com/vaadin/flow/ComponentTrackerTest.java index d8cbbf5704b..b83bc1d0a97 100644 --- a/flow-server/src/test/java/com/vaadin/flow/ComponentTrackerTest.java +++ b/flow-server/src/test/java/com/vaadin/flow/ComponentTrackerTest.java @@ -156,10 +156,10 @@ public void memoryIsReleased() throws Exception { private boolean isCleared(Map map) throws InterruptedException { for (int i = 0; i < 5; i++) { System.gc(); - if (map.size() == 0) { + if (map.isEmpty()) { return true; } - Thread.sleep(1); + Thread.sleep(100); } return false; } diff --git a/flow-server/src/test/java/com/vaadin/flow/hotswap/HotswapperTest.java b/flow-server/src/test/java/com/vaadin/flow/hotswap/HotswapperTest.java index 75ba7339643..a17fe5dd2b5 100644 --- a/flow-server/src/test/java/com/vaadin/flow/hotswap/HotswapperTest.java +++ b/flow-server/src/test/java/com/vaadin/flow/hotswap/HotswapperTest.java @@ -48,6 +48,7 @@ import com.vaadin.flow.server.SessionDestroyListener; import com.vaadin.flow.server.SessionInitEvent; import com.vaadin.flow.server.SessionInitListener; +import com.vaadin.flow.server.UIInitListener; import com.vaadin.flow.server.VaadinRequest; import com.vaadin.flow.server.VaadinService; import com.vaadin.flow.server.VaadinSession; @@ -504,6 +505,7 @@ public void register_developmentMode_trackingListenerInstalled() { AtomicBoolean sessionInitInstalled = new AtomicBoolean(); AtomicBoolean sessionDestroyInstalled = new AtomicBoolean(); AtomicBoolean serviceDestroyInstalled = new AtomicBoolean(); + AtomicBoolean uiInitInstalled = new AtomicBoolean(); MockDeploymentConfiguration configuration = new MockDeploymentConfiguration(); configuration.setProductionMode(false); VaadinService service = new MockVaadinServletService(configuration) { @@ -527,6 +529,12 @@ public Registration addServiceDestroyListener( serviceDestroyInstalled.set(true); return super.addServiceDestroyListener(listener); } + + @Override + public Registration addUIInitListener(UIInitListener listener) { + uiInitInstalled.set(true); + return super.addUIInitListener(listener); + } }; ApplicationConfiguration appConfig = Mockito .mock(ApplicationConfiguration.class); @@ -546,6 +554,9 @@ public Registration addServiceDestroyListener( Assert.assertTrue( "Expected hotswapper ServiceDestroyListener to be registered in development mode, but was not", serviceDestroyInstalled.get()); + Assert.assertTrue( + "Expected hotswapper UIInitListener to be registered in development mode, but was not", + uiInitInstalled.get()); } @Test @@ -553,6 +564,7 @@ public void register_productionMode_trackingListenerNotInstalled() { AtomicBoolean sessionInitInstalled = new AtomicBoolean(); AtomicBoolean sessionDestroyInstalled = new AtomicBoolean(); AtomicBoolean serviceDestroyInstalled = new AtomicBoolean(); + AtomicBoolean uiInitInstalled = new AtomicBoolean(); MockDeploymentConfiguration configuration = new MockDeploymentConfiguration(); configuration.setProductionMode(true); VaadinService service = new MockVaadinServletService(configuration) { @@ -588,6 +600,9 @@ public Registration addServiceDestroyListener( Assert.assertFalse( "Expected hotswapper ServiceDestroyListener not to be registered in production mode, but it was", serviceDestroyInstalled.get()); + Assert.assertFalse( + "Expected hotswapper UIInitListener not to be registered in production mode, but it was", + uiInitInstalled.get()); } @Tag("my-route") diff --git a/flow-server/src/test/java/com/vaadin/flow/server/VaadinServiceDauTest.java b/flow-server/src/test/java/com/vaadin/flow/server/VaadinServiceDauTest.java index 1a7bcaab451..f011794cc8a 100644 --- a/flow-server/src/test/java/com/vaadin/flow/server/VaadinServiceDauTest.java +++ b/flow-server/src/test/java/com/vaadin/flow/server/VaadinServiceDauTest.java @@ -10,14 +10,19 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.mockito.MockedStatic; +import org.mockito.Mockito; import com.vaadin.flow.di.Lookup; import com.vaadin.flow.server.dau.DAUCustomizer; import com.vaadin.flow.server.dau.DAUVaadinRequestInterceptor; import com.vaadin.flow.server.dau.UserIdentitySupplier; import com.vaadin.pro.licensechecker.LicenseException; +import com.vaadin.pro.licensechecker.dau.DauIntegration; import com.vaadin.tests.util.MockDeploymentConfiguration; +import static org.mockito.ArgumentMatchers.anyString; + public class VaadinServiceDauTest { private static final Predicate IS_DAU_INTERCEPTOR = interceptor -> interceptor instanceof DAUVaadinRequestInterceptor @@ -25,11 +30,13 @@ public class VaadinServiceDauTest { && wrapper.delegate instanceof DAUVaadinRequestInterceptor); private String subscriptionKey; + private MockedStatic dauIntegrationMock; @Before public void setUp() throws Exception { subscriptionKey = System.getProperty("vaadin.subscriptionKey"); System.setProperty("vaadin.subscriptionKey", "sub-1234"); + dauIntegrationMock = Mockito.mockStatic(DauIntegration.class); } @After @@ -39,6 +46,7 @@ public void tearDown() throws Exception { } else { System.clearProperty("vaadin.subscriptionKey"); } + dauIntegrationMock.close(); } @Test @@ -50,6 +58,7 @@ public void init_developmentMode_dauNotEnabled() { MockVaadinServletService service = new MockVaadinServletService(config); Assert.assertTrue("Expecting DAU interceptor not to be installed", vaadinInterceptors(service).noneMatch(IS_DAU_INTERCEPTOR)); + dauIntegrationMock.verifyNoInteractions(); } @Test @@ -61,6 +70,7 @@ public void init_productionMode_notDauBuild_dauNotEnabled() { MockVaadinServletService service = new MockVaadinServletService(config); Assert.assertTrue("Expecting DAU interceptor not to be installed", vaadinInterceptors(service).noneMatch(IS_DAU_INTERCEPTOR)); + dauIntegrationMock.verifyNoInteractions(); } @Test @@ -72,10 +82,15 @@ public void init_productionMode_dauBuild_dauEnabled() { MockVaadinServletService service = new MockVaadinServletService(config); Assert.assertTrue("Expecting DAU interceptor to be installed", vaadinInterceptors(service).anyMatch(IS_DAU_INTERCEPTOR)); + dauIntegrationMock + .verify(() -> DauIntegration.startTracking(anyString())); } @Test public void init_productionMode_dauBuild_subscriptionKeyNotAvailable_throws() { + dauIntegrationMock.reset(); + dauIntegrationMock.when(() -> DauIntegration.startTracking(anyString())) + .thenCallRealMethod(); System.clearProperty("vaadin.subscriptionKey"); MockDeploymentConfiguration config = new MockDeploymentConfiguration(); config.setProductionMode(true); diff --git a/flow-server/src/test/java/com/vaadin/flow/server/dau/DAUUtilsTest.java b/flow-server/src/test/java/com/vaadin/flow/server/dau/DAUUtilsTest.java index b39a490f596..97bc029361f 100644 --- a/flow-server/src/test/java/com/vaadin/flow/server/dau/DAUUtilsTest.java +++ b/flow-server/src/test/java/com/vaadin/flow/server/dau/DAUUtilsTest.java @@ -2,6 +2,7 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; + import java.util.HashMap; import java.util.Map; @@ -123,51 +124,65 @@ public void trackUser_notUidlRequest_track() { @Test public void jsonEnforcementResponse_noDauCustomizer_defaultMessages() { - VaadinService service = VaadinServiceDauTest.vaadinServiceWithDau(null); - VaadinRequest request = Mockito.mock(VaadinRequest.class); - Mockito.when(request.getService()).thenReturn(service); - String response = DAUUtils.jsonEnforcementResponse(request, - new DauEnforcementException(new EnforcementException("STOP"))); - - // remove JSON wrap - response = response.replace("for(;;);[", "").replaceFirst("]$", ""); - JsonObject json = Json.parse(response).getObject("meta") - .getObject("appError"); - - EnforcementNotificationMessages expectedMessages = EnforcementNotificationMessages.DEFAULT; - assertJsonErrorProperty("caption", expectedMessages.caption(), json); - assertJsonErrorProperty("message", expectedMessages.message(), json); - assertJsonErrorProperty("details", expectedMessages.details(), json); - assertJsonErrorProperty("url", expectedMessages.url(), json); + try (MockedStatic dauIntegrationMock = Mockito + .mockStatic(DauIntegration.class)) { + VaadinService service = VaadinServiceDauTest + .vaadinServiceWithDau(null); + VaadinRequest request = Mockito.mock(VaadinRequest.class); + Mockito.when(request.getService()).thenReturn(service); + String response = DAUUtils.jsonEnforcementResponse(request, + new DauEnforcementException( + new EnforcementException("STOP"))); + + // remove JSON wrap + response = response.replace("for(;;);[", "").replaceFirst("]$", ""); + JsonObject json = Json.parse(response).getObject("meta") + .getObject("appError"); + + EnforcementNotificationMessages expectedMessages = EnforcementNotificationMessages.DEFAULT; + assertJsonErrorProperty("caption", expectedMessages.caption(), + json); + assertJsonErrorProperty("message", expectedMessages.message(), + json); + assertJsonErrorProperty("details", expectedMessages.details(), + json); + assertJsonErrorProperty("url", expectedMessages.url(), json); + } } @Test public void jsonEnforcementResponse_customMessages() { - EnforcementNotificationMessages expectedMessages = new EnforcementNotificationMessages( - "caption", "message", "details", "url"); - DAUCustomizer customizer = new DAUCustomizer() { - @Override - public EnforcementNotificationMessages getEnforcementNotificationMessages( - SystemMessagesInfo systemMessagesInfo) { - return expectedMessages; - } - }; - VaadinService service = VaadinServiceDauTest - .vaadinServiceWithDau(customizer); - VaadinRequest request = Mockito.mock(VaadinRequest.class); - Mockito.when(request.getService()).thenReturn(service); - - String response = DAUUtils.jsonEnforcementResponse(request, - new DauEnforcementException(new EnforcementException("STOP"))); - response = response.replace("for(;;);[", "").replaceFirst("]$", ""); - JsonObject json = Json.parse(response).getObject("meta") - .getObject("appError"); - - assertJsonErrorProperty("caption", expectedMessages.caption(), json); - assertJsonErrorProperty("message", expectedMessages.message(), json); - assertJsonErrorProperty("details", expectedMessages.details(), json); - assertJsonErrorProperty("url", expectedMessages.url(), json); - + try (MockedStatic dauIntegrationMock = Mockito + .mockStatic(DauIntegration.class)) { + EnforcementNotificationMessages expectedMessages = new EnforcementNotificationMessages( + "caption", "message", "details", "url"); + DAUCustomizer customizer = new DAUCustomizer() { + @Override + public EnforcementNotificationMessages getEnforcementNotificationMessages( + SystemMessagesInfo systemMessagesInfo) { + return expectedMessages; + } + }; + VaadinService service = VaadinServiceDauTest + .vaadinServiceWithDau(customizer); + VaadinRequest request = Mockito.mock(VaadinRequest.class); + Mockito.when(request.getService()).thenReturn(service); + + String response = DAUUtils.jsonEnforcementResponse(request, + new DauEnforcementException( + new EnforcementException("STOP"))); + response = response.replace("for(;;);[", "").replaceFirst("]$", ""); + JsonObject json = Json.parse(response).getObject("meta") + .getObject("appError"); + + assertJsonErrorProperty("caption", expectedMessages.caption(), + json); + assertJsonErrorProperty("message", expectedMessages.message(), + json); + assertJsonErrorProperty("details", expectedMessages.details(), + json); + assertJsonErrorProperty("url", expectedMessages.url(), json); + } } @Test diff --git a/flow-server/src/test/java/com/vaadin/flow/server/frontend/TaskGenerateReactFilesTest.java b/flow-server/src/test/java/com/vaadin/flow/server/frontend/TaskGenerateReactFilesTest.java index 2b9fc7b4215..7080fe17309 100644 --- a/flow-server/src/test/java/com/vaadin/flow/server/frontend/TaskGenerateReactFilesTest.java +++ b/flow-server/src/test/java/com/vaadin/flow/server/frontend/TaskGenerateReactFilesTest.java @@ -31,7 +31,9 @@ import com.vaadin.flow.component.Component; import com.vaadin.flow.component.Tag; +import com.vaadin.flow.router.Layout; import com.vaadin.flow.router.Route; +import com.vaadin.flow.router.RouterLayout; import com.vaadin.flow.server.ExecutionFailedException; import com.vaadin.flow.server.frontend.scanner.ClassFinder; import com.vaadin.tests.util.MockOptions; @@ -82,6 +84,27 @@ public void reactFilesAreWrittenToFrontend() "routes.tsx").exists()); Assert.assertFalse("Missing ./frontend/routes.tsx", new File(frontend, "routes.tsx").exists()); + Assert.assertTrue( + "Missing ./frontend/" + FrontendUtils.GENERATED + + "layouts.json", + new File(new File(frontend, FrontendUtils.GENERATED), + "layouts.json").exists()); + } + + @Test + public void layoutsJson_containsExpectedPaths() + throws ExecutionFailedException, IOException { + Mockito.when(options.getClassFinder().getAnnotatedClasses(Layout.class)) + .thenReturn(Collections.singleton(TestLayout.class)); + + TaskGenerateReactFiles task = new TaskGenerateReactFiles(options); + task.execute(); + + String layoutsContent = FileUtils.readFileToString( + new File(options.getFrontendGeneratedFolder(), "layouts.json")); + + Assert.assertEquals("[{\"path\":\"/test\"}]", layoutsContent); + } @Test @@ -555,4 +578,9 @@ public void routesContainExport_oneSingleExport_exceptionThrown() @Route("test") private class TestRoute extends Component { } + + @Tag("div") + @Layout("/test") + private class TestLayout extends Component implements RouterLayout { + } } \ No newline at end of file diff --git a/flow-server/src/test/java/com/vaadin/flow/server/frontend/scanner/FrontendDependenciesTest.java b/flow-server/src/test/java/com/vaadin/flow/server/frontend/scanner/FrontendDependenciesTest.java index 4721df75016..95ca5aff4ac 100644 --- a/flow-server/src/test/java/com/vaadin/flow/server/frontend/scanner/FrontendDependenciesTest.java +++ b/flow-server/src/test/java/com/vaadin/flow/server/frontend/scanner/FrontendDependenciesTest.java @@ -37,8 +37,10 @@ import com.vaadin.flow.router.BeforeEnterEvent; import com.vaadin.flow.router.ErrorParameter; import com.vaadin.flow.router.HasErrorParameter; +import com.vaadin.flow.router.Layout; import com.vaadin.flow.router.NotFoundException; import com.vaadin.flow.router.Route; +import com.vaadin.flow.router.RouterLayout; import com.vaadin.flow.server.UIInitListener; import com.vaadin.flow.server.VaadinServiceInitListener; import com.vaadin.flow.server.frontend.scanner.samples.ErrorComponent; @@ -280,6 +282,24 @@ public void classInMultipleEntryPoints_collectEntryPointsNotOverrideInitial() { "@vaadin/common-frontend/ConnectionIndicator.js"); } + @Test // 20074 + public void layoutClasses_collectedAsEntrypoint() { + Mockito.when(classFinder.getAnnotatedClasses(Layout.class)) + .thenReturn(Collections.singleton(MainLayout.class)); + + FrontendDependencies dependencies = new FrontendDependencies( + classFinder, false); + + Optional layoutEndpointData = dependencies + .getEntryPoints().stream().filter(entryPoint -> entryPoint + .getName().equals(MainLayout.class.getName())) + .findAny(); + Assert.assertTrue("MainLayout should be visited", + layoutEndpointData.isPresent()); + DepsTests.assertImports(dependencies.getModules(), "reference.js", + "@vaadin/common-frontend/ConnectionIndicator.js"); + } + @Test // #9861 public void visitedExporter_previousEntryPointsNotOverridden() throws InstantiationException, IllegalAccessException { @@ -504,4 +524,9 @@ public static class ChildRoute extends ParentRoute { public static class GrandChildRoute extends ChildRoute { } + @Tag("div") + @Layout + @JsModule("reference.js") + public static class MainLayout extends Component implements RouterLayout { + } } diff --git a/flow-server/src/test/java/com/vaadin/flow/server/menu/MenuRegistryTest.java b/flow-server/src/test/java/com/vaadin/flow/server/menu/MenuRegistryTest.java index b405003af20..dcfe0487253 100644 --- a/flow-server/src/test/java/com/vaadin/flow/server/menu/MenuRegistryTest.java +++ b/flow-server/src/test/java/com/vaadin/flow/server/menu/MenuRegistryTest.java @@ -21,7 +21,9 @@ import java.nio.file.Files; import java.security.Principal; import java.util.Arrays; +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import jakarta.servlet.ServletContext; import net.jcip.annotations.NotThreadSafe; @@ -156,7 +158,7 @@ public void getMenuItemsNoFilteringContainsAllClientPaths() Assert.assertEquals(5, menuItems.size()); // Validate as if logged in as all routes should be available - assertClientRoutes(menuItems, true, true); + assertClientRoutes(menuItems, true, true, false); } @Test @@ -221,7 +223,7 @@ public void getMenuItemsContainBothClientAndServerPaths() } @Test - public void collectMenuItems_returnsCorrecPaths() throws IOException { + public void collectMenuItems_returnsCorrectPaths() throws IOException { File generated = tmpDir.newFolder(GENERATED); File clientFiles = new File(generated, FILE_ROUTES_JSON_NAME); Files.writeString(clientFiles.toPath(), testClientRouteFile); @@ -236,10 +238,10 @@ public void collectMenuItems_returnsCorrecPaths() throws IOException { Map menuItems = MenuRegistry .collectMenuItems(); - Assert.assertEquals(8, menuItems.size()); - assertClientRoutes(menuItems); + Assert.assertEquals(5, menuItems.size()); + assertClientRoutes(menuItems, false, false, true); assertServerRoutes(menuItems); - assertServerRoutesWithParameters(menuItems); + assertServerRoutesWithParameters(menuItems, true); } @Test @@ -257,7 +259,16 @@ public void testWithLoggedInUser_userHasRoles() throws IOException { .getMenuItems(true); Assert.assertEquals(5, menuItems.size()); - assertClientRoutes(menuItems, true, true); + assertClientRoutes(menuItems, true, true, false); + + // Verify that getMenuItemsList returns the same data + List menuItemsList = MenuRegistry + .collectMenuItemsList(); + Assert.assertEquals( + "List of menu items has incorrect size. Excluded menu item like /login is not expected.", + 4, menuItemsList.size()); + assertOrder(menuItemsList, + new String[] { "", "/about", "/hilla", "/hilla/sub" }); } @Test @@ -275,15 +286,62 @@ public void testWithLoggedInUser_noMatchingRoles() throws IOException { .getMenuItems(true); Assert.assertEquals(3, menuItems.size()); - assertClientRoutes(menuItems, true, false); + assertClientRoutes(menuItems, true, false, false); + } + + @Test + public void getMenuItemsList_returnsCorrectPaths() throws IOException { + File generated = tmpDir.newFolder(GENERATED); + File clientFiles = new File(generated, FILE_ROUTES_JSON_NAME); + Files.writeString(clientFiles.toPath(), testClientRouteFile); + + RouteConfiguration routeConfiguration = RouteConfiguration + .forRegistry(registry); + Arrays.asList(MyRoute.class, MyInfo.class, MyRequiredParamRoute.class, + MyRequiredAndOptionalParamRoute.class, + MyOptionalParamRoute.class, MyVarargsParamRoute.class) + .forEach(routeConfiguration::setAnnotatedRoute); + + List menuItems = MenuRegistry.collectMenuItemsList(); + Assert.assertEquals(5, menuItems.size()); + assertOrder(menuItems, new String[] { "", "/home", "/info", "/param", + "/param/varargs" }); + // verifying that data is same as with collectMenuItems + Map mapMenuItems = menuItems.stream() + .collect(Collectors.toMap(AvailableViewInfo::route, + item -> item)); + assertClientRoutes(mapMenuItems, false, false, true); + assertServerRoutes(mapMenuItems); + assertServerRoutesWithParameters(mapMenuItems, true); + } + + @Test + public void getMenuItemsList_assertOrder() { + RouteConfiguration routeConfiguration = RouteConfiguration + .forRegistry(registry); + Arrays.asList(TestRouteA.class, TestRouteB.class, TestRouteC.class, + TestRouteD.class, TestRouteDA.class, TestRouteDB.class) + .forEach(routeConfiguration::setAnnotatedRoute); + + List menuItems = MenuRegistry.collectMenuItemsList(); + Assert.assertEquals(4, menuItems.size()); + assertOrder(menuItems, + new String[] { "/d", "/c", "/a", "/b", "/d/a", "/d/b" }); + } + + private void assertOrder(List menuItems, + String[] expectedOrder) { + for (int i = 0; i < menuItems.size(); i++) { + Assert.assertEquals(expectedOrder[i], menuItems.get(i).route()); + } } private void assertClientRoutes(Map menuItems) { - assertClientRoutes(menuItems, false, false); + assertClientRoutes(menuItems, false, false, false); } private void assertClientRoutes(Map menuItems, - boolean authenticated, boolean hasRole) { + boolean authenticated, boolean hasRole, boolean excludeExpected) { Assert.assertTrue("Client route '' missing", menuItems.containsKey("")); Assert.assertEquals("Public", menuItems.get("").title()); Assert.assertNull("Public doesn't contain specific menu data", @@ -328,12 +386,17 @@ private void assertClientRoutes(Map menuItems, menuItems.containsKey("/hilla")); } - Assert.assertTrue("Client route 'login' missing", - menuItems.containsKey("/login")); - Assert.assertEquals("Login", menuItems.get("/login").title()); - Assert.assertNull(menuItems.get("/login").menu().title()); - Assert.assertTrue("Login view should be excluded", - menuItems.get("/login").menu().exclude()); + if (excludeExpected) { + Assert.assertFalse("Client route 'login' should be excluded", + menuItems.containsKey("/login")); + } else { + Assert.assertTrue("Client route 'login' missing", + menuItems.containsKey("/login")); + Assert.assertEquals("Login", menuItems.get("/login").title()); + Assert.assertNull(menuItems.get("/login").menu().title()); + Assert.assertTrue("Login view should be excluded", + menuItems.get("/login").menu().exclude()); + } } private void assertServerRoutes(Map menuItems) { @@ -350,17 +413,31 @@ private void assertServerRoutes(Map menuItems) { private void assertServerRoutesWithParameters( Map menuItems) { - Assert.assertTrue("Server route '/param/:param' missing", - menuItems.containsKey("/param/:param")); - Assert.assertTrue( - "Server route '/param/:param' should be excluded from menu", - menuItems.get("/param/:param").menu().exclude()); + assertServerRoutesWithParameters(menuItems, false); + } - Assert.assertTrue("Server route '/param/:param1' missing", - menuItems.containsKey("/param/:param1")); - Assert.assertTrue( - "Server route '/param/:param1' should be excluded from menu", - menuItems.get("/param/:param1").menu().exclude()); + private void assertServerRoutesWithParameters( + Map menuItems, boolean excludeExpected) { + if (excludeExpected) { + Assert.assertFalse( + "Server route '/param/:param' should be excluded", + menuItems.containsKey("/param/:param")); + Assert.assertFalse( + "Server route '/param/:param1' should be excluded", + menuItems.containsKey("/param/:param1")); + } else { + Assert.assertTrue("Server route '/param/:param' missing", + menuItems.containsKey("/param/:param")); + Assert.assertTrue( + "Server route '/param/:param' should be excluded from menu", + menuItems.get("/param/:param").menu().exclude()); + + Assert.assertTrue("Server route '/param/:param1' missing", + menuItems.containsKey("/param/:param1")); + Assert.assertTrue( + "Server route '/param/:param1' should be excluded from menu", + menuItems.get("/param/:param1").menu().exclude()); + } Assert.assertTrue( "Server route with optional parameters '/param' missing", @@ -413,6 +490,41 @@ private static class MyOptionalParamRoute extends Component { private static class MyVarargsParamRoute extends Component { } + @Tag("div") + @Route("a") + @Menu(order = 1.1) + private static class TestRouteA extends Component { + } + + @Tag("div") + @Route("b") + @Menu(order = 1.2) + private static class TestRouteB extends Component { + } + + @Tag("div") + @Route("c") + @Menu(order = 0.1) + private static class TestRouteC extends Component { + } + + @Tag("div") + @Route("d") + @Menu(order = 0) + private static class TestRouteD extends Component { + } + + @Tag("div") + @Route("d/b") + private static class TestRouteDB extends Component { + + } + + @Tag("div") + @Route("d/a") + private static class TestRouteDA extends Component { + } + /** * Extending class to let us mock the getRouteRegistry method for testing. */ diff --git a/flow-server/src/test/java/com/vaadin/flow/server/startup/AbstractRouteRegistryInitializerTest.java b/flow-server/src/test/java/com/vaadin/flow/server/startup/AbstractRouteRegistryInitializerTest.java index 7d82f8d6034..8734d6ccf21 100644 --- a/flow-server/src/test/java/com/vaadin/flow/server/startup/AbstractRouteRegistryInitializerTest.java +++ b/flow-server/src/test/java/com/vaadin/flow/server/startup/AbstractRouteRegistryInitializerTest.java @@ -25,7 +25,9 @@ import com.vaadin.flow.component.Tag; import com.vaadin.flow.router.ParentLayout; import com.vaadin.flow.router.Route; +import com.vaadin.flow.router.RouteAlias; import com.vaadin.flow.router.RouterLayout; +import com.vaadin.flow.server.InvalidRouteConfigurationException; import com.vaadin.flow.server.InvalidRouteLayoutConfigurationException; public class AbstractRouteRegistryInitializerTest { @@ -55,11 +57,59 @@ public static class RouteAndParentRouterLayout extends Component } + @Tag(Tag.DIV) + @Route("foo") + @RouteAlias("foo") + public static class RouteAndAliasWithSamePath extends Component { + + } + + @Tag(Tag.DIV) + @Route("foo") + @RouteAlias("bar") + @RouteAlias("baz") + @RouteAlias("bar") + @RouteAlias("baz") + @RouteAlias("hey") + public static class AliasesWithSamePath extends Component { + + } + @Test(expected = InvalidRouteLayoutConfigurationException.class) public void routeAndParentLayout_notRouterLayout_throws() { initializer.validateRouteClasses(null, Stream.of(RouteAndParentLayout.class)); + } + + @Test + public void validateRouteClasses_samePathForRouteAndAlias_throws() { + InvalidRouteConfigurationException exception = Assert.assertThrows( + InvalidRouteConfigurationException.class, + () -> initializer.validateRouteClasses(null, + Stream.of(RouteAndAliasWithSamePath.class))); + Assert.assertTrue(containsQuotedAnnotationName(exception.getMessage(), + Route.class)); + Assert.assertTrue(containsQuotedAnnotationName(exception.getMessage(), + RouteAlias.class)); + Assert.assertTrue(exception.getMessage().contains("same path")); + Assert.assertTrue(exception.getMessage().contains("foo")); + } + @Test + public void validateRouteClasses_samePathForRepeatableAlias_throws() { + InvalidRouteConfigurationException exception = Assert.assertThrows( + InvalidRouteConfigurationException.class, + () -> initializer.validateRouteClasses(null, + Stream.of(AliasesWithSamePath.class))); + Assert.assertFalse(containsQuotedAnnotationName(exception.getMessage(), + Route.class)); + Assert.assertTrue(containsQuotedAnnotationName(exception.getMessage(), + RouteAlias.class)); + Assert.assertTrue(exception.getMessage().contains("same paths")); + Assert.assertTrue(exception.getMessage().contains("bar")); + Assert.assertTrue(exception.getMessage().contains("baz")); + Assert.assertFalse(exception.getMessage().contains("foo")); + Assert.assertFalse(exception.getMessage().contains("hey")); } @Test @@ -72,4 +122,8 @@ public void routeAndParentLayout_routerLayout_returnsValidatedClass() { classes.iterator().next()); } + private static boolean containsQuotedAnnotationName(String message, + Class clazz) { + return message.contains("'@" + clazz.getSimpleName() + "'"); + } } diff --git a/flow-test-generic/pom.xml b/flow-test-generic/pom.xml index 26233c6bdfd..d05e4f29560 100644 --- a/flow-test-generic/pom.xml +++ b/flow-test-generic/pom.xml @@ -5,7 +5,7 @@ flow-project com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-test-util/pom.xml b/flow-test-util/pom.xml index cabbea05cbe..709edaeec22 100644 --- a/flow-test-util/pom.xml +++ b/flow-test-util/pom.xml @@ -5,7 +5,7 @@ com.vaadin flow-project - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-util diff --git a/flow-tests/pom.xml b/flow-tests/pom.xml index 0fe4eec3a7c..6d6038f5412 100644 --- a/flow-tests/pom.xml +++ b/flow-tests/pom.xml @@ -6,7 +6,7 @@ com.vaadin flow-project - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-tests Flow tests diff --git a/flow-tests/servlet-containers/pom.xml b/flow-tests/servlet-containers/pom.xml index 6f0cd8cdd6b..40106429f58 100644 --- a/flow-tests/servlet-containers/pom.xml +++ b/flow-tests/servlet-containers/pom.xml @@ -5,7 +5,7 @@ com.vaadin flow-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-servlet-containers-test flow-servlet-containers-test @@ -27,7 +27,7 @@ org.codehaus.cargo cargo-maven3-plugin - 1.10.14 + 1.10.15 standalone diff --git a/flow-tests/servlet-containers/tomcat10/pom.xml b/flow-tests/servlet-containers/tomcat10/pom.xml index 2e94b0a6251..87abc7aeba7 100644 --- a/flow-tests/servlet-containers/tomcat10/pom.xml +++ b/flow-tests/servlet-containers/tomcat10/pom.xml @@ -5,7 +5,7 @@ com.vaadin flow-servlet-containers-test - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-tomcat10-server Flow Tomcat 9 Test diff --git a/flow-tests/test-application-theme/pom.xml b/flow-tests/test-application-theme/pom.xml index 1673e1a7cfb..7b3565e3472 100644 --- a/flow-tests/test-application-theme/pom.xml +++ b/flow-tests/test-application-theme/pom.xml @@ -5,7 +5,7 @@ flow-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-application-theme/reusable-theme/pom.xml b/flow-tests/test-application-theme/reusable-theme/pom.xml index d7b49287ae3..0c5128fc478 100644 --- a/flow-tests/test-application-theme/reusable-theme/pom.xml +++ b/flow-tests/test-application-theme/reusable-theme/pom.xml @@ -5,7 +5,7 @@ test-application-theme com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-application-theme/test-reusable-as-parent-vite/pom.xml b/flow-tests/test-application-theme/test-reusable-as-parent-vite/pom.xml index 705a3745325..7ced91134fd 100644 --- a/flow-tests/test-application-theme/test-reusable-as-parent-vite/pom.xml +++ b/flow-tests/test-application-theme/test-reusable-as-parent-vite/pom.xml @@ -3,7 +3,7 @@ test-application-theme com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-application-theme/test-theme-component-live-reload/pom.xml b/flow-tests/test-application-theme/test-theme-component-live-reload/pom.xml index af4524b0037..53a7ae1f19e 100644 --- a/flow-tests/test-application-theme/test-theme-component-live-reload/pom.xml +++ b/flow-tests/test-application-theme/test-theme-component-live-reload/pom.xml @@ -3,7 +3,7 @@ test-application-theme com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 flow-test-application-theme-component-live-reload diff --git a/flow-tests/test-application-theme/test-theme-live-reload/pom.xml b/flow-tests/test-application-theme/test-theme-live-reload/pom.xml index ac615ec9080..4a0efa72acf 100644 --- a/flow-tests/test-application-theme/test-theme-live-reload/pom.xml +++ b/flow-tests/test-application-theme/test-theme-live-reload/pom.xml @@ -3,7 +3,7 @@ test-application-theme com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 flow-test-application-theme-live-reload diff --git a/flow-tests/test-application-theme/test-theme-reusable-vite/pom.xml b/flow-tests/test-application-theme/test-theme-reusable-vite/pom.xml index f4fc586ffe2..3843a2cd4bd 100644 --- a/flow-tests/test-application-theme/test-theme-reusable-vite/pom.xml +++ b/flow-tests/test-application-theme/test-theme-reusable-vite/pom.xml @@ -3,7 +3,7 @@ test-application-theme com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-ccdm-flow-navigation/pom-production.xml b/flow-tests/test-ccdm-flow-navigation/pom-production.xml index 4780222b5f1..b6994633276 100644 --- a/flow-tests/test-ccdm-flow-navigation/pom-production.xml +++ b/flow-tests/test-ccdm-flow-navigation/pom-production.xml @@ -3,7 +3,7 @@ com.vaadin flow-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-ccdm-flow-navigation/pom.xml b/flow-tests/test-ccdm-flow-navigation/pom.xml index 76b6180f190..31e4f5e5a39 100644 --- a/flow-tests/test-ccdm-flow-navigation/pom.xml +++ b/flow-tests/test-ccdm-flow-navigation/pom.xml @@ -4,7 +4,7 @@ com.vaadin flow-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-ccdm/pom-production.xml b/flow-tests/test-ccdm/pom-production.xml index be333e73240..a7ccdfbf86a 100644 --- a/flow-tests/test-ccdm/pom-production.xml +++ b/flow-tests/test-ccdm/pom-production.xml @@ -3,7 +3,7 @@ com.vaadin flow-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-ccdm/pom.xml b/flow-tests/test-ccdm/pom.xml index 37303342668..48e678f3644 100644 --- a/flow-tests/test-ccdm/pom.xml +++ b/flow-tests/test-ccdm/pom.xml @@ -5,7 +5,7 @@ com.vaadin flow-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-common/pom.xml b/flow-tests/test-common/pom.xml index bbdc8707175..cd499e87506 100644 --- a/flow-tests/test-common/pom.xml +++ b/flow-tests/test-common/pom.xml @@ -6,7 +6,7 @@ com.vaadin flow-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-common Flow common test UI classes diff --git a/flow-tests/test-custom-frontend-directory/pom.xml b/flow-tests/test-custom-frontend-directory/pom.xml index 67b31077f13..b2b7a592b35 100644 --- a/flow-tests/test-custom-frontend-directory/pom.xml +++ b/flow-tests/test-custom-frontend-directory/pom.xml @@ -5,7 +5,7 @@ flow-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-custom-frontend-directory/test-themes-custom-frontend-directory/pom-generatedTsDir.xml b/flow-tests/test-custom-frontend-directory/test-themes-custom-frontend-directory/pom-generatedTsDir.xml index d2a10380f87..12fa9397f0d 100644 --- a/flow-tests/test-custom-frontend-directory/test-themes-custom-frontend-directory/pom-generatedTsDir.xml +++ b/flow-tests/test-custom-frontend-directory/test-themes-custom-frontend-directory/pom-generatedTsDir.xml @@ -4,7 +4,7 @@ com.vaadin test-custom-frontend-directory - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-themes-custom-generatedTs-directory Flow themes tests in NPM mode with custom generatedTs directory diff --git a/flow-tests/test-custom-frontend-directory/test-themes-custom-frontend-directory/pom.xml b/flow-tests/test-custom-frontend-directory/test-themes-custom-frontend-directory/pom.xml index 1a82ab75ca8..7bf61a77047 100644 --- a/flow-tests/test-custom-frontend-directory/test-themes-custom-frontend-directory/pom.xml +++ b/flow-tests/test-custom-frontend-directory/test-themes-custom-frontend-directory/pom.xml @@ -5,7 +5,7 @@ com.vaadin test-custom-frontend-directory - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-themes-custom-frontend-directory-vite Flow themes tests in Vite with custom frontend directory diff --git a/flow-tests/test-custom-route-registry/pom.xml b/flow-tests/test-custom-route-registry/pom.xml index dfeffd7ced2..63b384cb89e 100644 --- a/flow-tests/test-custom-route-registry/pom.xml +++ b/flow-tests/test-custom-route-registry/pom.xml @@ -4,7 +4,7 @@ flow-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-custom-route-registry Test using Flow with a custom RouteRegistry implementation diff --git a/flow-tests/test-dev-mode/pom.xml b/flow-tests/test-dev-mode/pom.xml index 61e415b064b..7874ddb2cae 100644 --- a/flow-tests/test-dev-mode/pom.xml +++ b/flow-tests/test-dev-mode/pom.xml @@ -4,7 +4,7 @@ com.vaadin flow-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-dev-mode Flow tests for dev mode diff --git a/flow-tests/test-eager-bootstrap/pom.xml b/flow-tests/test-eager-bootstrap/pom.xml index c0ae4dc33e8..549bf704246 100644 --- a/flow-tests/test-eager-bootstrap/pom.xml +++ b/flow-tests/test-eager-bootstrap/pom.xml @@ -4,7 +4,7 @@ com.vaadin flow-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-eager-bootstrap Flow eager bootstrap (includes UIDL in first request) test diff --git a/flow-tests/test-embedding/embedding-reusable-custom-theme/pom.xml b/flow-tests/test-embedding/embedding-reusable-custom-theme/pom.xml index 911dd2306b2..f023a63f3aa 100644 --- a/flow-tests/test-embedding/embedding-reusable-custom-theme/pom.xml +++ b/flow-tests/test-embedding/embedding-reusable-custom-theme/pom.xml @@ -21,7 +21,7 @@ test-embedding com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-embedding/embedding-test-assets/pom.xml b/flow-tests/test-embedding/embedding-test-assets/pom.xml index e2ba8157d3a..247a344a4c3 100644 --- a/flow-tests/test-embedding/embedding-test-assets/pom.xml +++ b/flow-tests/test-embedding/embedding-test-assets/pom.xml @@ -21,7 +21,7 @@ test-embedding com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-embedding/pom.xml b/flow-tests/test-embedding/pom.xml index 03552724321..d373ecdd7b4 100644 --- a/flow-tests/test-embedding/pom.xml +++ b/flow-tests/test-embedding/pom.xml @@ -21,7 +21,7 @@ flow-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-embedding/test-embedding-application-theme/pom.xml b/flow-tests/test-embedding/test-embedding-application-theme/pom.xml index fc0b1a7684c..d765888521d 100644 --- a/flow-tests/test-embedding/test-embedding-application-theme/pom.xml +++ b/flow-tests/test-embedding/test-embedding-application-theme/pom.xml @@ -19,7 +19,7 @@ test-embedding com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-embedding/test-embedding-generic/pom.xml b/flow-tests/test-embedding/test-embedding-generic/pom.xml index 31964ebc60d..13f941ccab9 100644 --- a/flow-tests/test-embedding/test-embedding-generic/pom.xml +++ b/flow-tests/test-embedding/test-embedding-generic/pom.xml @@ -4,7 +4,7 @@ com.vaadin test-embedding - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-embedding-generic Flow Embedding, generic tests diff --git a/flow-tests/test-embedding/test-embedding-production-mode/pom.xml b/flow-tests/test-embedding/test-embedding-production-mode/pom.xml index 429b7e224a8..3118d23ddb3 100644 --- a/flow-tests/test-embedding/test-embedding-production-mode/pom.xml +++ b/flow-tests/test-embedding/test-embedding-production-mode/pom.xml @@ -4,7 +4,7 @@ com.vaadin test-embedding - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-embedding-production Flow Embedding, production tests diff --git a/flow-tests/test-embedding/test-embedding-reusable-theme/pom.xml b/flow-tests/test-embedding/test-embedding-reusable-theme/pom.xml index ecf4d164762..eec399698cc 100644 --- a/flow-tests/test-embedding/test-embedding-reusable-theme/pom.xml +++ b/flow-tests/test-embedding/test-embedding-reusable-theme/pom.xml @@ -19,7 +19,7 @@ test-embedding com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-embedding/test-embedding-theme-variant/pom.xml b/flow-tests/test-embedding/test-embedding-theme-variant/pom.xml index 6f1226b8159..fc0afece64b 100644 --- a/flow-tests/test-embedding/test-embedding-theme-variant/pom.xml +++ b/flow-tests/test-embedding/test-embedding-theme-variant/pom.xml @@ -20,7 +20,7 @@ com.vaadin test-embedding - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-embedding-theme-variant Flow Embedding, theme variant diff --git a/flow-tests/test-express-build/frontend-add-on/pom.xml b/flow-tests/test-express-build/frontend-add-on/pom.xml index a5668955572..37bb0298f94 100644 --- a/flow-tests/test-express-build/frontend-add-on/pom.xml +++ b/flow-tests/test-express-build/frontend-add-on/pom.xml @@ -5,7 +5,7 @@ com.vaadin test-express-build - 24.5-SNAPSHOT + 24.6-SNAPSHOT frontend-add-on jar diff --git a/flow-tests/test-express-build/java-add-on/pom.xml b/flow-tests/test-express-build/java-add-on/pom.xml index cf53f338a80..bbc62da3dfd 100644 --- a/flow-tests/test-express-build/java-add-on/pom.xml +++ b/flow-tests/test-express-build/java-add-on/pom.xml @@ -5,7 +5,7 @@ com.vaadin test-express-build - 24.5-SNAPSHOT + 24.6-SNAPSHOT java-add-on jar diff --git a/flow-tests/test-express-build/pom.xml b/flow-tests/test-express-build/pom.xml index 90a48cb1552..3520ad6cfa2 100644 --- a/flow-tests/test-express-build/pom.xml +++ b/flow-tests/test-express-build/pom.xml @@ -5,7 +5,7 @@ flow-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-express-build/test-dev-bundle-frontend-add-on/pom.xml b/flow-tests/test-express-build/test-dev-bundle-frontend-add-on/pom.xml index c3baf6b76f1..b5edddbdbed 100644 --- a/flow-tests/test-express-build/test-dev-bundle-frontend-add-on/pom.xml +++ b/flow-tests/test-express-build/test-dev-bundle-frontend-add-on/pom.xml @@ -19,7 +19,7 @@ test-express-build com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-express-build/test-dev-bundle-java-add-on/pom.xml b/flow-tests/test-express-build/test-dev-bundle-java-add-on/pom.xml index 1bc57b2fb0c..1c13b5e3c1c 100644 --- a/flow-tests/test-express-build/test-dev-bundle-java-add-on/pom.xml +++ b/flow-tests/test-express-build/test-dev-bundle-java-add-on/pom.xml @@ -19,7 +19,7 @@ test-express-build com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-express-build/test-dev-bundle-no-plugin/pom.xml b/flow-tests/test-express-build/test-dev-bundle-no-plugin/pom.xml index c7813dd1f5c..eacdb1dea06 100644 --- a/flow-tests/test-express-build/test-dev-bundle-no-plugin/pom.xml +++ b/flow-tests/test-express-build/test-dev-bundle-no-plugin/pom.xml @@ -19,7 +19,7 @@ test-express-build com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-express-build/test-dev-bundle/pom.xml b/flow-tests/test-express-build/test-dev-bundle/pom.xml index b74142a09c0..882d514c0e2 100644 --- a/flow-tests/test-express-build/test-dev-bundle/pom.xml +++ b/flow-tests/test-express-build/test-dev-bundle/pom.xml @@ -5,7 +5,7 @@ com.vaadin test-express-build - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-dev-bundle jar diff --git a/flow-tests/test-express-build/test-embedding-express-build/pom.xml b/flow-tests/test-express-build/test-embedding-express-build/pom.xml index 7d2d7145378..d3fdb974fd5 100644 --- a/flow-tests/test-express-build/test-embedding-express-build/pom.xml +++ b/flow-tests/test-express-build/test-embedding-express-build/pom.xml @@ -19,7 +19,7 @@ test-express-build com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-express-build/test-flow-maven-plugin/pom.xml b/flow-tests/test-express-build/test-flow-maven-plugin/pom.xml index 2c773238db3..1ac9fa2e8fc 100644 --- a/flow-tests/test-express-build/test-flow-maven-plugin/pom.xml +++ b/flow-tests/test-express-build/test-flow-maven-plugin/pom.xml @@ -4,7 +4,7 @@ test-express-build com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-flow-maven-plugin maven-plugin diff --git a/flow-tests/test-express-build/test-parent-theme-express-build/pom.xml b/flow-tests/test-express-build/test-parent-theme-express-build/pom.xml index f542f36098f..4b5ba41eee5 100644 --- a/flow-tests/test-express-build/test-parent-theme-express-build/pom.xml +++ b/flow-tests/test-express-build/test-parent-theme-express-build/pom.xml @@ -3,7 +3,7 @@ test-express-build com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 flow-test-parent-theme-express-bundle diff --git a/flow-tests/test-express-build/test-parent-theme-in-frontend-prod/pom.xml b/flow-tests/test-express-build/test-parent-theme-in-frontend-prod/pom.xml index 0f509f3b9d9..323199436a5 100644 --- a/flow-tests/test-express-build/test-parent-theme-in-frontend-prod/pom.xml +++ b/flow-tests/test-express-build/test-parent-theme-in-frontend-prod/pom.xml @@ -3,7 +3,7 @@ test-express-build com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 flow-test-parent-theme-in-frontend-prod diff --git a/flow-tests/test-express-build/test-parent-theme-in-frontend/pom.xml b/flow-tests/test-express-build/test-parent-theme-in-frontend/pom.xml index 9cea82ea93b..35b6894c95f 100644 --- a/flow-tests/test-express-build/test-parent-theme-in-frontend/pom.xml +++ b/flow-tests/test-express-build/test-parent-theme-in-frontend/pom.xml @@ -3,7 +3,7 @@ test-express-build com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 flow-test-parent-theme-in-frontend diff --git a/flow-tests/test-express-build/test-parent-theme-prod/pom.xml b/flow-tests/test-express-build/test-parent-theme-prod/pom.xml index 5d038967108..1297e447288 100644 --- a/flow-tests/test-express-build/test-parent-theme-prod/pom.xml +++ b/flow-tests/test-express-build/test-parent-theme-prod/pom.xml @@ -3,7 +3,7 @@ test-express-build com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 flow-test-parent-theme-prod diff --git a/flow-tests/test-express-build/test-prod-bundle-no-plugin/pom.xml b/flow-tests/test-express-build/test-prod-bundle-no-plugin/pom.xml index abeb293eb5f..54c380e88c9 100644 --- a/flow-tests/test-express-build/test-prod-bundle-no-plugin/pom.xml +++ b/flow-tests/test-express-build/test-prod-bundle-no-plugin/pom.xml @@ -19,7 +19,7 @@ test-express-build com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-express-build/test-prod-bundle/pom.xml b/flow-tests/test-express-build/test-prod-bundle/pom.xml index f1578a618b6..5fc3a1979c4 100644 --- a/flow-tests/test-express-build/test-prod-bundle/pom.xml +++ b/flow-tests/test-express-build/test-prod-bundle/pom.xml @@ -5,7 +5,7 @@ com.vaadin test-express-build - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-prod-bundle jar diff --git a/flow-tests/test-express-build/test-reusable-theme-express-build/pom.xml b/flow-tests/test-express-build/test-reusable-theme-express-build/pom.xml index da105386274..6a0b0e04fe3 100644 --- a/flow-tests/test-express-build/test-reusable-theme-express-build/pom.xml +++ b/flow-tests/test-express-build/test-reusable-theme-express-build/pom.xml @@ -3,7 +3,7 @@ test-express-build com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 flow-test-reusable-theme-express-build diff --git a/flow-tests/test-express-build/test-reusable-theme-no-assets/pom.xml b/flow-tests/test-express-build/test-reusable-theme-no-assets/pom.xml index e58c7f7192f..b7754ec7116 100644 --- a/flow-tests/test-express-build/test-reusable-theme-no-assets/pom.xml +++ b/flow-tests/test-express-build/test-reusable-theme-no-assets/pom.xml @@ -3,7 +3,7 @@ test-express-build com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 flow-test-reusable-theme-no-assets diff --git a/flow-tests/test-express-build/test-reusing-theme-express-build/pom.xml b/flow-tests/test-express-build/test-reusing-theme-express-build/pom.xml index a57c754985a..4a25dbc4d7f 100644 --- a/flow-tests/test-express-build/test-reusing-theme-express-build/pom.xml +++ b/flow-tests/test-express-build/test-reusing-theme-express-build/pom.xml @@ -3,7 +3,7 @@ test-express-build com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 flow-test-reusing-theme-express-bundle diff --git a/flow-tests/test-express-build/test-theme-dev-bundle/pom.xml b/flow-tests/test-express-build/test-theme-dev-bundle/pom.xml index 4ff69bd785e..9f7914c1cc9 100644 --- a/flow-tests/test-express-build/test-theme-dev-bundle/pom.xml +++ b/flow-tests/test-express-build/test-theme-dev-bundle/pom.xml @@ -3,7 +3,7 @@ test-express-build com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 flow-test-theme-dev-bundle diff --git a/flow-tests/test-express-build/test-theme-legacy-components-css-prod/pom.xml b/flow-tests/test-express-build/test-theme-legacy-components-css-prod/pom.xml index 8353e88f200..922e6eee088 100644 --- a/flow-tests/test-express-build/test-theme-legacy-components-css-prod/pom.xml +++ b/flow-tests/test-express-build/test-theme-legacy-components-css-prod/pom.xml @@ -3,7 +3,7 @@ test-express-build com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 flow-test-theme-legacy-components-css-prod diff --git a/flow-tests/test-frontend/addon-with-templates/pom.xml b/flow-tests/test-frontend/addon-with-templates/pom.xml index 7414bc3ccc5..5e1ee0cca9b 100644 --- a/flow-tests/test-frontend/addon-with-templates/pom.xml +++ b/flow-tests/test-frontend/addon-with-templates/pom.xml @@ -7,7 +7,7 @@ com.vaadin test-frontend - 24.5-SNAPSHOT + 24.6-SNAPSHOT addon-with-templates diff --git a/flow-tests/test-frontend/pom.xml b/flow-tests/test-frontend/pom.xml index bee3599b998..e3785a473aa 100644 --- a/flow-tests/test-frontend/pom.xml +++ b/flow-tests/test-frontend/pom.xml @@ -5,7 +5,7 @@ com.vaadin flow-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-frontend Frontend build (npm + Webpack + Vite) diff --git a/flow-tests/test-frontend/test-bun/pom-production.xml b/flow-tests/test-frontend/test-bun/pom-production.xml index 8dc89be9d2a..5f794b77174 100644 --- a/flow-tests/test-frontend/test-bun/pom-production.xml +++ b/flow-tests/test-frontend/test-bun/pom-production.xml @@ -4,7 +4,7 @@ test-frontend com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-bun-production Flow tests in bun and production mode diff --git a/flow-tests/test-frontend/test-bun/pom.xml b/flow-tests/test-frontend/test-bun/pom.xml index 92e0f7a5b01..fcff8756da5 100644 --- a/flow-tests/test-frontend/test-bun/pom.xml +++ b/flow-tests/test-frontend/test-bun/pom.xml @@ -4,7 +4,7 @@ test-frontend com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-bun-dev-mode Flow tests in bun and development mode diff --git a/flow-tests/test-frontend/test-npm/package-lock.json b/flow-tests/test-frontend/test-npm/package-lock.json index 2c642427e1f..918de5e54ed 100644 --- a/flow-tests/test-frontend/test-npm/package-lock.json +++ b/flow-tests/test-frontend/test-npm/package-lock.json @@ -9,30 +9,31 @@ "dependencies": { "@polymer/polymer": "3.5.1", "@vaadin/common-frontend": "0.0.19", - "@vaadin/text-field": "24.3.2", + "@vaadin/text-field": "24.4.9", "construct-style-sheets-polyfill": "3.1.0", - "lit": "3.1.3", + "lit": "3.2.0", "react": "18.3.1", "react-dom": "18.3.1", - "react-router-dom": "6.23.1" + "react-router-dom": "6.26.2" }, "devDependencies": { - "@babel/preset-react": "7.24.1", - "@rollup/plugin-replace": "5.0.5", + "@babel/preset-react": "7.24.7", + "@preact/signals-react-transform": "0.4.0", + "@rollup/plugin-replace": "5.0.7", "@rollup/pluginutils": "5.1.0", - "@types/react": "18.3.2", + "@types/react": "18.3.6", "@types/react-dom": "18.3.0", - "@vitejs/plugin-react": "4.2.1", - "async": "3.2.5", - "glob": "10.3.15", + "@vitejs/plugin-react": "4.3.1", + "async": "3.2.6", + "glob": "10.4.5", "rollup-plugin-brotli": "3.1.0", "rollup-plugin-visualizer": "5.12.0", "strip-css-comments": "5.0.0", "transform-ast": "2.4.4", - "typescript": "5.4.5", - "vite": "5.2.11", - "vite-plugin-checker": "0.6.4", - "workbox-build": "7.1.0", + "typescript": "5.6.2", + "vite": "5.4.6", + "vite-plugin-checker": "0.8.0", + "workbox-build": "7.1.1", "workbox-core": "7.1.0", "workbox-precaching": "7.1.0" } @@ -68,12 +69,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", - "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.24.2", + "@babel/highlight": "^7.24.7", "picocolors": "^1.0.0" }, "engines": { @@ -120,12 +122,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", - "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", + "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.5", + "@babel/types": "^7.25.6", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -135,12 +138,13 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -277,12 +281,14 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", - "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.0" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -320,10 +326,11 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz", - "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -399,28 +406,31 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", - "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", - "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -454,12 +464,13 @@ } }, "node_modules/@babel/highlight": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", - "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -469,10 +480,14 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", - "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.6" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -658,12 +673,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1393,12 +1409,13 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz", - "integrity": "sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz", + "integrity": "sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1408,16 +1425,17 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", - "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz", + "integrity": "sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/types": "^7.23.4" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/types": "^7.25.2" }, "engines": { "node": ">=6.9.0" @@ -1427,12 +1445,13 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", - "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz", + "integrity": "sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.22.5" + "@babel/plugin-transform-react-jsx": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1442,12 +1461,13 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", - "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz", + "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1457,12 +1477,13 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", - "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz", + "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1472,13 +1493,14 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz", - "integrity": "sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz", + "integrity": "sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1766,17 +1788,18 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.1.tgz", - "integrity": "sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.7.tgz", + "integrity": "sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-transform-react-display-name": "^7.24.1", - "@babel/plugin-transform-react-jsx": "^7.23.4", - "@babel/plugin-transform-react-jsx-development": "^7.22.5", - "@babel/plugin-transform-react-pure-annotations": "^7.24.1" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.24.7", + "@babel/plugin-transform-react-jsx-development": "^7.24.7", + "@babel/plugin-transform-react-pure-annotations": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1804,33 +1827,32 @@ } }, "node_modules/@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", - "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", + "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.24.5", - "@babel/parser": "^7.24.5", - "@babel/types": "^7.24.5", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.6", + "@babel/parser": "^7.25.6", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1839,13 +1861,14 @@ } }, "node_modules/@babel/types": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", - "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.24.1", - "@babel/helper-validator-identifier": "^7.24.5", + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1853,13 +1876,14 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", - "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" @@ -1869,13 +1893,14 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", - "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -1885,13 +1910,14 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", - "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -1901,13 +1927,14 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", - "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -1917,13 +1944,14 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", - "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1933,13 +1961,14 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", - "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1949,13 +1978,14 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", - "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -1965,13 +1995,14 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", - "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -1981,13 +2012,14 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", - "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1997,13 +2029,14 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", - "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2013,13 +2046,14 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", - "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2029,13 +2063,14 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", - "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2045,13 +2080,14 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", - "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", "cpu": [ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2061,13 +2097,14 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", - "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2077,13 +2114,14 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", - "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2093,13 +2131,14 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", - "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2109,13 +2148,14 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", - "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2125,13 +2165,14 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", - "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -2141,13 +2182,14 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", - "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -2157,13 +2199,14 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", - "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -2173,13 +2216,14 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", - "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -2189,13 +2233,14 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", - "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -2205,13 +2250,14 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", - "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -2225,6 +2271,7 @@ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -2296,14 +2343,16 @@ } }, "node_modules/@lit-labs/ssr-dom-shim": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz", - "integrity": "sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.1.tgz", + "integrity": "sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==", + "license": "BSD-3-Clause" }, "node_modules/@lit/reactive-element": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==", + "license": "BSD-3-Clause", "dependencies": { "@lit-labs/ssr-dom-shim": "^1.2.0" } @@ -2346,13 +2395,15 @@ "node_modules/@open-wc/dedupe-mixin": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@open-wc/dedupe-mixin/-/dedupe-mixin-1.4.0.tgz", - "integrity": "sha512-Sj7gKl1TLcDbF7B6KUhtvr+1UCxdhMbNY5KxdU5IfMFWqL8oy1ZeAcCANjoB1TL0AJTcPmcCFsCbHf8X2jGDUA==" + "integrity": "sha512-Sj7gKl1TLcDbF7B6KUhtvr+1UCxdhMbNY5KxdU5IfMFWqL8oy1ZeAcCANjoB1TL0AJTcPmcCFsCbHf8X2jGDUA==", + "license": "MIT" }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=14" @@ -2366,10 +2417,62 @@ "@webcomponents/shadycss": "^1.9.1" } }, + "node_modules/@preact/signals-core": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@preact/signals-core/-/signals-core-1.8.0.tgz", + "integrity": "sha512-OBvUsRZqNmjzCZXWLxkZfhcgT+Fk8DDcT/8vD6a1xhDemodyy87UJRJfASMuSD8FaAIeGgGm85ydXhm7lr4fyA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/@preact/signals-react": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@preact/signals-react/-/signals-react-2.2.0.tgz", + "integrity": "sha512-EPYlhXqqcOUxz2gTQGt4rtK6X7Jr04517DcJVZ4I5a7Gxy39haK24uFeVWtiU/tnEReRFcxpQN6poYra1jf68A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@preact/signals-core": "^1.7.0", + "use-sync-external-store": "^1.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + }, + "peerDependencies": { + "react": "^16.14.0 || 17.x || 18.x" + } + }, + "node_modules/@preact/signals-react-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@preact/signals-react-transform/-/signals-react-transform-0.4.0.tgz", + "integrity": "sha512-ZH8u5VrFPMmxggjAr7Rl9OLi3yvyDGi4lGQulftkszuiJB15jVy/MMraIfNvWKf2RfjtHLvp3K6Jk19xO/j7Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@preact/signals-react": "^2.1.0", + "debug": "^4.3.4", + "use-sync-external-store": "^1.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "react": "^16.14.0 || 17.x || 18.x" + } + }, "node_modules/@remix-run/router": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.16.1.tgz", - "integrity": "sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==", + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.2.tgz", + "integrity": "sha512-baiMx18+IMuD1yyvOGaHM9QrVUPGGG0jC+z+IPHnRJWUAUvaKuWKyE8gjDj2rzv3sz9zOGoRSPgeBVHRhZnBlA==", + "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -2400,10 +2503,11 @@ } }, "node_modules/@rollup/plugin-replace": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.5.tgz", - "integrity": "sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.7.tgz", + "integrity": "sha512-PqxSfuorkHz/SPpyngLyg5GCEkOcee9M1bkxiVDr41Pd61mqP1PLOoDPbpl44SB2mQGKwV/In74gqQmGITOhEQ==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.1", "magic-string": "^0.30.3" @@ -2465,208 +2569,224 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.2.tgz", - "integrity": "sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz", + "integrity": "sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.17.2.tgz", - "integrity": "sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz", + "integrity": "sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.2.tgz", - "integrity": "sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz", + "integrity": "sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.2.tgz", - "integrity": "sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz", + "integrity": "sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.17.2.tgz", - "integrity": "sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz", + "integrity": "sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.17.2.tgz", - "integrity": "sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz", + "integrity": "sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.17.2.tgz", - "integrity": "sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz", + "integrity": "sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.17.2.tgz", - "integrity": "sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz", + "integrity": "sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.17.2.tgz", - "integrity": "sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz", + "integrity": "sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.17.2.tgz", - "integrity": "sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz", + "integrity": "sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.17.2.tgz", - "integrity": "sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz", + "integrity": "sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.2.tgz", - "integrity": "sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz", + "integrity": "sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.2.tgz", - "integrity": "sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz", + "integrity": "sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.17.2.tgz", - "integrity": "sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz", + "integrity": "sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.17.2.tgz", - "integrity": "sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz", + "integrity": "sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.17.2.tgz", - "integrity": "sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz", + "integrity": "sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -2758,10 +2878,11 @@ "dev": true }, "node_modules/@types/react": { - "version": "18.3.2", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.2.tgz", - "integrity": "sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w==", + "version": "18.3.6", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.6.tgz", + "integrity": "sha512-CnGaRYNu2iZlkGXGrOYtdg5mLK8neySj0woZ4e2wF/eli2E6Sazmq5X+Nrj6OBrrFVQfJWTUFeqAzoRhWQXYvg==", "dev": true, + "license": "MIT", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -2788,13 +2909,14 @@ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" }, "node_modules/@vaadin/a11y-base": { - "version": "24.3.4", - "resolved": "https://registry.npmjs.org/@vaadin/a11y-base/-/a11y-base-24.3.4.tgz", - "integrity": "sha512-iMmHQmHItpyp+49K4GSQKOvF3z0OdU4Fov7mzaVzjbIWoMxHQzhOn7HOiyt4C3iW2GcoFdGbwanV1mn3tcmcbg==", + "version": "24.4.9", + "resolved": "https://registry.npmjs.org/@vaadin/a11y-base/-/a11y-base-24.4.9.tgz", + "integrity": "sha512-LRCGppMNG9xGQaq8eA59WXJ8M5iaRb+GvU97UHrygtgUrbmlTSZ3qWDR42arhDy1DDNEZ/xiiRaG1fQGMyUzfw==", + "license": "Apache-2.0", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~24.3.4", + "@vaadin/component-base": "~24.4.9", "lit": "^3.0.0" } }, @@ -2810,9 +2932,10 @@ } }, "node_modules/@vaadin/component-base": { - "version": "24.3.4", - "resolved": "https://registry.npmjs.org/@vaadin/component-base/-/component-base-24.3.4.tgz", - "integrity": "sha512-K7+rRMh5962O+0oJ/TE1Cnge5Ql5agCI/bPcpCH1RffGATK8eUcff17gbOGrxOY+S7TmsHuWyVg8YmssTch44w==", + "version": "24.4.9", + "resolved": "https://registry.npmjs.org/@vaadin/component-base/-/component-base-24.4.9.tgz", + "integrity": "sha512-W0JxJyDUjA0DwjeqVcPtMJNdYBkaYHSuQY7IeMnlJC/mr88NOHb0DYX/SfbGr9ND1hwhmGbfY+dGPb4cQoR36w==", + "license": "Apache-2.0", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", @@ -2822,100 +2945,109 @@ } }, "node_modules/@vaadin/field-base": { - "version": "24.3.4", - "resolved": "https://registry.npmjs.org/@vaadin/field-base/-/field-base-24.3.4.tgz", - "integrity": "sha512-SzRrPyXdjFOsAkKPkO41mYfUNx34YqQLV2aNfWpfayeSaxzZbid5niKOYGpRQWukht+8icMmbfyJrFEmuBMkSw==", + "version": "24.4.9", + "resolved": "https://registry.npmjs.org/@vaadin/field-base/-/field-base-24.4.9.tgz", + "integrity": "sha512-zvecoO0xtAMB0LHdUJ10hlVulnFB5F3qBwjGHS9nYNIt9jkylSmmlE4QTg7grEAWzkV85xfhrX7xGEwTT8/u0g==", + "license": "Apache-2.0", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/a11y-base": "~24.3.4", - "@vaadin/component-base": "~24.3.4", + "@vaadin/a11y-base": "~24.4.9", + "@vaadin/component-base": "~24.4.9", "lit": "^3.0.0" } }, "node_modules/@vaadin/icon": { - "version": "24.3.4", - "resolved": "https://registry.npmjs.org/@vaadin/icon/-/icon-24.3.4.tgz", - "integrity": "sha512-SsiSfpIKoqHxpSSpLIr8fBdgOp3fLdjq2tji61WIrQVVYbbE3t7jJY03cJUDSvDlFAhVv4XkLeJVLAVNAbAkvg==", + "version": "24.4.9", + "resolved": "https://registry.npmjs.org/@vaadin/icon/-/icon-24.4.9.tgz", + "integrity": "sha512-h3k0+/JY2cL4/6FFjwXIbpmtCbGY1CaPkuaxn6aEFD5I6LVpcWIfVZlvpUDMpjEgj1AGMgFp4GeJx3iPCh9phw==", + "license": "Apache-2.0", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~24.3.4", - "@vaadin/vaadin-lumo-styles": "~24.3.4", - "@vaadin/vaadin-themable-mixin": "~24.3.4", + "@vaadin/component-base": "~24.4.9", + "@vaadin/vaadin-lumo-styles": "~24.4.9", + "@vaadin/vaadin-themable-mixin": "~24.4.9", "lit": "^3.0.0" } }, "node_modules/@vaadin/input-container": { - "version": "24.3.4", - "resolved": "https://registry.npmjs.org/@vaadin/input-container/-/input-container-24.3.4.tgz", - "integrity": "sha512-izHc0Y5a0vr2X9Rkb6g6PhOBhWbOCd7AydbBOZBLmJWNVv/tavr8B3rqeAXDLS9yNz0XoIO5k95TUDtntF30GA==", + "version": "24.4.9", + "resolved": "https://registry.npmjs.org/@vaadin/input-container/-/input-container-24.4.9.tgz", + "integrity": "sha512-lR5Mhp2hUrLnJDf9i96wS06WDYbqQrQz1ybf/Z+eLcxyElXvSUHpXJZFIYpNskYaFPxO9uHwyklXQtb8ZeEtaQ==", + "license": "Apache-2.0", "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~24.3.4", - "@vaadin/vaadin-lumo-styles": "~24.3.4", - "@vaadin/vaadin-material-styles": "~24.3.4", - "@vaadin/vaadin-themable-mixin": "~24.3.4", + "@vaadin/component-base": "~24.4.9", + "@vaadin/vaadin-lumo-styles": "~24.4.9", + "@vaadin/vaadin-material-styles": "~24.4.9", + "@vaadin/vaadin-themable-mixin": "~24.4.9", "lit": "^3.0.0" } }, "node_modules/@vaadin/text-field": { - "version": "24.3.2", - "resolved": "https://registry.npmjs.org/@vaadin/text-field/-/text-field-24.3.2.tgz", - "integrity": "sha512-v+faXP3eyH6bESjgc9E01Rm1+PMgwVDjpIOZbClqeaehjtr6SqGPqeinXwTHslOV4m1UnyJ4PCFFdkpvlSWnZA==", + "version": "24.4.9", + "resolved": "https://registry.npmjs.org/@vaadin/text-field/-/text-field-24.4.9.tgz", + "integrity": "sha512-kghQFvpLBNK3kvkOK1zeKRdWOfhek8lGd9xENPGbh6p1St+dXW3BQzfX10Xb+yVKzL7B3j7j6b/kTrTv+SZRIw==", + "license": "Apache-2.0", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/a11y-base": "~24.3.2", - "@vaadin/component-base": "~24.3.2", - "@vaadin/field-base": "~24.3.2", - "@vaadin/input-container": "~24.3.2", - "@vaadin/vaadin-lumo-styles": "~24.3.2", - "@vaadin/vaadin-material-styles": "~24.3.2", - "@vaadin/vaadin-themable-mixin": "~24.3.2", + "@vaadin/a11y-base": "~24.4.9", + "@vaadin/component-base": "~24.4.9", + "@vaadin/field-base": "~24.4.9", + "@vaadin/input-container": "~24.4.9", + "@vaadin/vaadin-lumo-styles": "~24.4.9", + "@vaadin/vaadin-material-styles": "~24.4.9", + "@vaadin/vaadin-themable-mixin": "~24.4.9", "lit": "^3.0.0" } }, "node_modules/@vaadin/vaadin-development-mode-detector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@vaadin/vaadin-development-mode-detector/-/vaadin-development-mode-detector-2.0.6.tgz", - "integrity": "sha512-N6a5nLT/ytEUlpPo+nvdCKIGoyNjPsj3rzPGvGYK8x9Ceg76OTe1xI/GtN71mRW9e2HUScR0kCNOkl1Z63YDjw==" + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-development-mode-detector/-/vaadin-development-mode-detector-2.0.7.tgz", + "integrity": "sha512-9FhVhr0ynSR3X2ao+vaIEttcNU5XfzCbxtmYOV8uIRnUCtNgbvMOIcyGBvntsX9I5kvIP2dV3cFAOG9SILJzEA==", + "license": "Apache-2.0" }, "node_modules/@vaadin/vaadin-lumo-styles": { - "version": "24.3.4", - "resolved": "https://registry.npmjs.org/@vaadin/vaadin-lumo-styles/-/vaadin-lumo-styles-24.3.4.tgz", - "integrity": "sha512-c5caOhH/8P1ZiHeUsH6dsxGf9wplTeI5RN0BjM1bdT4ziOt3CUY1OZ8VtINjUz7gE7+x4H+QtarTLjMvrWNB0g==", + "version": "24.4.9", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-lumo-styles/-/vaadin-lumo-styles-24.4.9.tgz", + "integrity": "sha512-tQnbicQBIyvCsj21AHur/SmY+2fo1dKmNkgD/0aEWWjZpi1UcxHQpe8hXhyYVeY2g3hzfc/efXC9V/uLJKxUNA==", + "license": "Apache-2.0", "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~24.3.4", - "@vaadin/icon": "~24.3.4", - "@vaadin/vaadin-themable-mixin": "~24.3.4" + "@vaadin/component-base": "~24.4.9", + "@vaadin/icon": "~24.4.9", + "@vaadin/vaadin-themable-mixin": "~24.4.9" } }, "node_modules/@vaadin/vaadin-material-styles": { - "version": "24.3.4", - "resolved": "https://registry.npmjs.org/@vaadin/vaadin-material-styles/-/vaadin-material-styles-24.3.4.tgz", - "integrity": "sha512-xsiB34R/91VU/GUaym+QGu8T1dTOc3ZjN3qQMjkG8CcwCmNf9z/htXmJWsWDSu83gtFMW9mA1k0QFi5Bhoc1Vg==", + "version": "24.4.9", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-material-styles/-/vaadin-material-styles-24.4.9.tgz", + "integrity": "sha512-trOv8L/7YnCIosLvfYR0HCFbEoQGA/FwHbBMl6n1mStikDLtoEEea6tIb2JSLcMTL2vuTUzmgzINKebEuaqgDQ==", + "license": "Apache-2.0", "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~24.3.4", - "@vaadin/vaadin-themable-mixin": "~24.3.4" + "@vaadin/component-base": "~24.4.9", + "@vaadin/vaadin-themable-mixin": "~24.4.9" } }, "node_modules/@vaadin/vaadin-themable-mixin": { - "version": "24.3.4", - "resolved": "https://registry.npmjs.org/@vaadin/vaadin-themable-mixin/-/vaadin-themable-mixin-24.3.4.tgz", - "integrity": "sha512-4q9swB+THLbva6rwd95sWMQiNGvUjWltFnlH0GCY+KLuG0crQ1P4yGlIMK1GmzNjNGk6Q2qYpt05uMpk6EhJnw==", + "version": "24.4.9", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-themable-mixin/-/vaadin-themable-mixin-24.4.9.tgz", + "integrity": "sha512-9fxQuRGJ5AqooHBeeTvFN3S7etqFj9uv/8gUXr6qHyHVaqRYrPqI+gdPR/K7Q8fVIpONz/FNo0kby8FAwrY7lw==", + "license": "Apache-2.0", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "lit": "^3.0.0" } }, "node_modules/@vaadin/vaadin-usage-statistics": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@vaadin/vaadin-usage-statistics/-/vaadin-usage-statistics-2.1.2.tgz", - "integrity": "sha512-xKs1PvRfTXsG0eWWcImLXWjv7D+f1vfoIvovppv6pZ5QX8xgcxWUdNgERlOOdGt3CTuxQXukTBW3+Qfva+OXSg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-usage-statistics/-/vaadin-usage-statistics-2.1.3.tgz", + "integrity": "sha512-8r4TNknD7OJQADe3VygeofFR7UNAXZ2/jjBFP5dgI8+2uMfnuGYgbuHivasKr9WSQ64sPej6m8rDoM1uSllXjQ==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "@vaadin/vaadin-development-mode-detector": "^2.0.0" }, @@ -2924,16 +3056,17 @@ } }, "node_modules/@vitejs/plugin-react": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz", - "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz", + "integrity": "sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "^7.23.5", - "@babel/plugin-transform-react-jsx-self": "^7.23.3", - "@babel/plugin-transform-react-jsx-source": "^7.23.3", + "@babel/core": "^7.24.5", + "@babel/plugin-transform-react-jsx-self": "^7.24.5", + "@babel/plugin-transform-react-jsx-source": "^7.24.1", "@types/babel__core": "^7.20.5", - "react-refresh": "^0.14.0" + "react-refresh": "^0.14.2" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -3011,10 +3144,11 @@ } }, "node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -3027,6 +3161,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -3082,10 +3217,11 @@ } }, "node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", - "dev": true + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" }, "node_modules/at-least-node": { "version": "1.0.0", @@ -3294,6 +3430,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -3440,6 +3577,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } @@ -3448,7 +3586,8 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/commander": { "version": "8.3.0", @@ -3603,7 +3742,8 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ejs": { "version": "3.1.9", @@ -3630,7 +3770,8 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/es-abstract": { "version": "1.22.3", @@ -3717,11 +3858,12 @@ } }, "node_modules/esbuild": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", - "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -3729,29 +3871,29 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.20.2", - "@esbuild/android-arm": "0.20.2", - "@esbuild/android-arm64": "0.20.2", - "@esbuild/android-x64": "0.20.2", - "@esbuild/darwin-arm64": "0.20.2", - "@esbuild/darwin-x64": "0.20.2", - "@esbuild/freebsd-arm64": "0.20.2", - "@esbuild/freebsd-x64": "0.20.2", - "@esbuild/linux-arm": "0.20.2", - "@esbuild/linux-arm64": "0.20.2", - "@esbuild/linux-ia32": "0.20.2", - "@esbuild/linux-loong64": "0.20.2", - "@esbuild/linux-mips64el": "0.20.2", - "@esbuild/linux-ppc64": "0.20.2", - "@esbuild/linux-riscv64": "0.20.2", - "@esbuild/linux-s390x": "0.20.2", - "@esbuild/linux-x64": "0.20.2", - "@esbuild/netbsd-x64": "0.20.2", - "@esbuild/openbsd-x64": "0.20.2", - "@esbuild/sunos-x64": "0.20.2", - "@esbuild/win32-arm64": "0.20.2", - "@esbuild/win32-ia32": "0.20.2", - "@esbuild/win32-x64": "0.20.2" + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" } }, "node_modules/escalade": { @@ -4008,23 +4150,22 @@ } }, "node_modules/glob": { - "version": "10.3.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz", - "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.11.0" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -4118,6 +4259,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -4582,16 +4724,14 @@ "dev": true }, "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=14" - }, "funding": { "url": "https://github.com/sponsors/isaacs" }, @@ -4781,29 +4921,32 @@ } }, "node_modules/lit": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.3.tgz", - "integrity": "sha512-l4slfspEsnCcHVRTvaP7YnkTZEZggNFywLEIhQaGhYDczG+tu/vlgm/KaWIEjIp+ZyV20r2JnZctMb8LeLCG7Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.0.tgz", + "integrity": "sha512-s6tI33Lf6VpDu7u4YqsSX78D28bYQulM+VAzsGch4fx2H0eLZnJsUBsPWmGYSGoKDNbjtRv02rio1o+UdPVwvw==", + "license": "BSD-3-Clause", "dependencies": { "@lit/reactive-element": "^2.0.4", - "lit-element": "^4.0.4", - "lit-html": "^3.1.2" + "lit-element": "^4.1.0", + "lit-html": "^3.2.0" } }, "node_modules/lit-element": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.4.tgz", - "integrity": "sha512-98CvgulX6eCPs6TyAIQoJZBCQPo80rgXR+dVBs61cstJXqtI+USQZAbA4gFHh6L/mxBx9MrgPLHLsUgDUHAcCQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.1.0.tgz", + "integrity": "sha512-gSejRUQJuMQjV2Z59KAS/D4iElUhwKpIyJvZ9w+DIagIQjfJnhR20h2Q5ddpzXGS+fF0tMZ/xEYGMnKmaI/iww==", + "license": "BSD-3-Clause", "dependencies": { "@lit-labs/ssr-dom-shim": "^1.2.0", "@lit/reactive-element": "^2.0.4", - "lit-html": "^3.1.2" + "lit-html": "^3.2.0" } }, "node_modules/lit-html": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.2.tgz", - "integrity": "sha512-3OBZSUrPnAHoKJ9AMjRL/m01YJxQMf+TMHanNtTHG68ubjnZxK0RFl102DPzsw4mWnHibfZIBJm3LWCZ/LmMvg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.2.0.tgz", + "integrity": "sha512-pwT/HwoxqI9FggTrYVarkBKFN9MlTUpLrDHubTmW4SrkL3kkqW5gxwbxMMUnbbRHBC0WTZnYHcjDSCM559VyfA==", + "license": "BSD-3-Clause", "dependencies": { "@types/trusted-types": "^2.0.2" } @@ -4899,10 +5042,11 @@ } }, "node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -4914,10 +5058,11 @@ } }, "node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -5019,6 +5164,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -5115,6 +5261,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -5165,10 +5318,11 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", @@ -5183,9 +5337,9 @@ } }, "node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", "dev": true, "funding": [ { @@ -5201,10 +5355,11 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.2.0" + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -5299,20 +5454,22 @@ } }, "node_modules/react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react-router": { - "version": "6.23.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.23.1.tgz", - "integrity": "sha512-fzcOaRF69uvqbbM7OhvQyBTFDVrrGlsFdS3AL+1KfIBtGETibHzi3FkoTRyiDJnWNc2VxrfvR+657ROHjaNjqQ==", + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.2.tgz", + "integrity": "sha512-tvN1iuT03kHgOFnLPfLJ8V95eijteveqdOSk+srqfePtQvqCExB8eHOYnlilbOcyJyKnYkr1vJvf7YqotAJu1A==", + "license": "MIT", "dependencies": { - "@remix-run/router": "1.16.1" + "@remix-run/router": "1.19.2" }, "engines": { "node": ">=14.0.0" @@ -5322,12 +5479,13 @@ } }, "node_modules/react-router-dom": { - "version": "6.23.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.23.1.tgz", - "integrity": "sha512-utP+K+aSTtEdbWpC+4gxhdlPFwuEfDKq8ZrPFU65bbRJY+l706qjR7yaidBpo3MSeA/fzwbXWbKBI6ftOnP3OQ==", + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.2.tgz", + "integrity": "sha512-z7YkaEW0Dy35T3/QKPYB1LjMK2R1fxnHO8kWpUMTBdfVzZrWOiY9a7CtN8HqdWtDUWd5FY6Dl8HFsqVwH4uOtQ==", + "license": "MIT", "dependencies": { - "@remix-run/router": "1.16.1", - "react-router": "6.23.1" + "@remix-run/router": "1.19.2", + "react-router": "6.26.2" }, "engines": { "node": ">=14.0.0" @@ -5483,10 +5641,11 @@ } }, "node_modules/rollup": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.17.2.tgz", - "integrity": "sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.4.tgz", + "integrity": "sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "1.0.5" }, @@ -5498,22 +5657,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.17.2", - "@rollup/rollup-android-arm64": "4.17.2", - "@rollup/rollup-darwin-arm64": "4.17.2", - "@rollup/rollup-darwin-x64": "4.17.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.17.2", - "@rollup/rollup-linux-arm-musleabihf": "4.17.2", - "@rollup/rollup-linux-arm64-gnu": "4.17.2", - "@rollup/rollup-linux-arm64-musl": "4.17.2", - "@rollup/rollup-linux-powerpc64le-gnu": "4.17.2", - "@rollup/rollup-linux-riscv64-gnu": "4.17.2", - "@rollup/rollup-linux-s390x-gnu": "4.17.2", - "@rollup/rollup-linux-x64-gnu": "4.17.2", - "@rollup/rollup-linux-x64-musl": "4.17.2", - "@rollup/rollup-win32-arm64-msvc": "4.17.2", - "@rollup/rollup-win32-ia32-msvc": "4.17.2", - "@rollup/rollup-win32-x64-msvc": "4.17.2", + "@rollup/rollup-android-arm-eabi": "4.22.4", + "@rollup/rollup-android-arm64": "4.22.4", + "@rollup/rollup-darwin-arm64": "4.22.4", + "@rollup/rollup-darwin-x64": "4.22.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.22.4", + "@rollup/rollup-linux-arm-musleabihf": "4.22.4", + "@rollup/rollup-linux-arm64-gnu": "4.22.4", + "@rollup/rollup-linux-arm64-musl": "4.22.4", + "@rollup/rollup-linux-powerpc64le-gnu": "4.22.4", + "@rollup/rollup-linux-riscv64-gnu": "4.22.4", + "@rollup/rollup-linux-s390x-gnu": "4.22.4", + "@rollup/rollup-linux-x64-gnu": "4.22.4", + "@rollup/rollup-linux-x64-musl": "4.22.4", + "@rollup/rollup-win32-arm64-msvc": "4.22.4", + "@rollup/rollup-win32-ia32-msvc": "4.22.4", + "@rollup/rollup-win32-x64-msvc": "4.22.4", "fsevents": "~2.3.2" } }, @@ -5749,10 +5908,11 @@ } }, "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -5788,6 +5948,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -5806,6 +5967,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -5820,6 +5982,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5828,13 +5991,15 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/string-width-cjs/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, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -5935,6 +6100,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -5951,6 +6117,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -5963,6 +6130,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5996,6 +6164,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -6239,10 +6408,11 @@ } }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -6384,15 +6554,26 @@ "punycode": "^2.1.0" } }, + "node_modules/use-sync-external-store": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/vite": { - "version": "5.2.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.11.tgz", - "integrity": "sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==", + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.6.tgz", + "integrity": "sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==", "dev": true, + "license": "MIT", "dependencies": { - "esbuild": "^0.20.1", - "postcss": "^8.4.38", - "rollup": "^4.13.0" + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" }, "bin": { "vite": "bin/vite.js" @@ -6411,6 +6592,7 @@ "less": "*", "lightningcss": "^1.21.0", "sass": "*", + "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.4.0" @@ -6428,6 +6610,9 @@ "sass": { "optional": true }, + "sass-embedded": { + "optional": true + }, "stylus": { "optional": true }, @@ -6440,10 +6625,11 @@ } }, "node_modules/vite-plugin-checker": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/vite-plugin-checker/-/vite-plugin-checker-0.6.4.tgz", - "integrity": "sha512-2zKHH5oxr+ye43nReRbC2fny1nyARwhxdm0uNYp/ERy4YvU9iZpNOsueoi/luXw5gnpqRSvjcEPxXbS153O2wA==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/vite-plugin-checker/-/vite-plugin-checker-0.8.0.tgz", + "integrity": "sha512-UA5uzOGm97UvZRTdZHiQVYFnd86AVn8EVaD4L3PoVzxH+IZSfaAw14WGFwX9QS23UW3lV/5bVKZn6l0w+q9P0g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", "ansi-escapes": "^4.3.0", @@ -6453,7 +6639,6 @@ "fast-glob": "^3.2.7", "fs-extra": "^11.1.0", "npm-run-path": "^4.0.1", - "semver": "^7.5.0", "strip-ansi": "^6.0.0", "tiny-invariant": "^1.1.0", "vscode-languageclient": "^7.0.0", @@ -6465,6 +6650,7 @@ "node": ">=14.16" }, "peerDependencies": { + "@biomejs/biome": ">=1.7", "eslint": ">=7", "meow": "^9.0.0", "optionator": "^0.9.1", @@ -6473,9 +6659,12 @@ "vite": ">=2.0.0", "vls": "*", "vti": "*", - "vue-tsc": ">=1.3.9" + "vue-tsc": "~2.1.6" }, "peerDependenciesMeta": { + "@biomejs/biome": { + "optional": true + }, "eslint": { "optional": true }, @@ -6569,33 +6758,6 @@ "node": ">=8" } }, - "node_modules/vite-plugin-checker/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/vite-plugin-checker/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/vite-plugin-checker/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -6620,12 +6782,6 @@ "node": ">=8" } }, - "node_modules/vite-plugin-checker/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/vscode-jsonrpc": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", @@ -6831,10 +6987,11 @@ } }, "node_modules/workbox-build": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-7.1.0.tgz", - "integrity": "sha512-F6R94XAxjB2j4ETMkP1EXKfjECOtDmyvt0vz3BzgWJMI68TNSXIVNkgatwUKBlPGOfy9n2F/4voYRNAhEvPJNg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-7.1.1.tgz", + "integrity": "sha512-WdkVdC70VMpf5NBCtNbiwdSZeKVuhTEd5PV3mAwpTQCGAB5XbOny1P9egEgNdetv4srAMmMKjvBk4RD58LpooA==", "dev": true, + "license": "MIT", "dependencies": { "@apideck/better-ajv-errors": "^0.3.1", "@babel/core": "^7.24.4", @@ -7165,6 +7322,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -7183,6 +7341,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -7200,6 +7359,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7209,6 +7369,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -7224,6 +7385,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -7235,19 +7397,22 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7262,6 +7427,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -7274,6 +7440,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, diff --git a/flow-tests/test-frontend/test-npm/pom-production.xml b/flow-tests/test-frontend/test-npm/pom-production.xml index f16d7876c0f..292c3bee64e 100644 --- a/flow-tests/test-frontend/test-npm/pom-production.xml +++ b/flow-tests/test-frontend/test-npm/pom-production.xml @@ -4,7 +4,7 @@ test-frontend com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-npm-production Flow tests in npm and production mode diff --git a/flow-tests/test-frontend/test-npm/pom.xml b/flow-tests/test-frontend/test-npm/pom.xml index e22aa24ce2e..14b7483808f 100644 --- a/flow-tests/test-frontend/test-npm/pom.xml +++ b/flow-tests/test-frontend/test-npm/pom.xml @@ -4,7 +4,7 @@ test-frontend com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-npm-dev-mode Flow tests in npm and development mode diff --git a/flow-tests/test-frontend/test-pnpm/pom-production.xml b/flow-tests/test-frontend/test-pnpm/pom-production.xml index 763c46d3760..ffcddef88dc 100644 --- a/flow-tests/test-frontend/test-pnpm/pom-production.xml +++ b/flow-tests/test-frontend/test-pnpm/pom-production.xml @@ -4,7 +4,7 @@ test-frontend com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-pnpm-production Flow tests in pnpm and production mode diff --git a/flow-tests/test-frontend/test-pnpm/pom.xml b/flow-tests/test-frontend/test-pnpm/pom.xml index f969f76524a..538602647b5 100644 --- a/flow-tests/test-frontend/test-pnpm/pom.xml +++ b/flow-tests/test-frontend/test-pnpm/pom.xml @@ -4,7 +4,7 @@ test-frontend com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-pnpm-dev-mode Flow tests in pnpm and development mode diff --git a/flow-tests/test-frontend/vite-basics/package.json b/flow-tests/test-frontend/vite-basics/package.json index 8d4b3bb354d..a739f2f1974 100644 --- a/flow-tests/test-frontend/vite-basics/package.json +++ b/flow-tests/test-frontend/vite-basics/package.json @@ -10,42 +10,41 @@ "@testscope/all": "../vite-test-assets/packages/@testscope/all", "@testscope/button": "../vite-test-assets/packages/@testscope/button", "@testscope/map": "../vite-test-assets/packages/@testscope/map", - "@types/react": "18.2.50", - "@types/react-dom": "18.2.18", "@vaadin/bundles": "../vite-test-assets/packages/@vaadin/bundles", "@vaadin/common-frontend": "0.0.19", - "@vaadin/polymer-legacy-adapter": "24.3.2", - "@vaadin/text-field": "24.3.2", - "@vaadin/vaadin-lumo-styles": "24.3.2", - "@vaadin/vaadin-themable-mixin": "24.3.2", + "@vaadin/polymer-legacy-adapter": "24.4.9", + "@vaadin/text-field": "24.4.9", + "@vaadin/vaadin-lumo-styles": "24.4.9", + "@vaadin/vaadin-themable-mixin": "24.4.9", "construct-style-sheets-polyfill": "3.1.0", "copy-to-clipboard": "^3.3.1", - "lit": "3.1.2", + "lit": "3.2.0", "package-outside-npm": "file:../vite-test-assets/packages/package-outside-npm", "package2-outside-npm": "../vite-test-assets/packages/package2-outside-npm", - "react": "18.2.0", - "react-dom": "18.2.0", - "react-router-dom": "6.22.3" + "react": "18.3.1", + "react-dom": "18.3.1", + "react-router-dom": "6.26.2" }, "devDependencies": { - "@babel/preset-react": "7.24.1", - "@rollup/plugin-replace": "5.0.5", + "@babel/preset-react": "7.24.7", + "@preact/signals-react-transform": "0.4.0", + "@rollup/plugin-replace": "5.0.7", "@rollup/pluginutils": "5.1.0", - "@vitejs/plugin-react": "4.2.1", - "async": "3.2.5", - "glob": "10.3.12", + "@types/react": "18.3.6", + "@types/react-dom": "18.3.0", + "@vitejs/plugin-react": "4.3.1", + "async": "3.2.6", + "glob": "10.4.5", "rollup-plugin-brotli": "3.1.0", "rollup-plugin-visualizer": "5.12.0", "strip-css-comments": "5.0.0", "transform-ast": "2.4.4", - "typescript": "5.4.5", - "vite": "5.2.8", - "vite-plugin-checker": "0.6.4", - "workbox-build": "7.0.0", - "workbox-core": "7.0.0", - "workbox-precaching": "7.0.0", - "@types/react-dom": "18.2.24", - "@types/react": "18.2.75" + "typescript": "5.6.2", + "vite": "5.4.6", + "vite-plugin-checker": "0.8.0", + "workbox-build": "7.1.1", + "workbox-core": "7.1.0", + "workbox-precaching": "7.1.0" }, "overrides": { "@testscope/all": "$@testscope/all", @@ -80,39 +79,38 @@ "vaadin": { "dependencies": { "@polymer/polymer": "3.5.1", - "@types/react": "18.2.50", - "@types/react-dom": "18.2.18", "@vaadin/common-frontend": "0.0.19", - "@vaadin/polymer-legacy-adapter": "24.3.2", - "@vaadin/text-field": "24.3.2", - "@vaadin/vaadin-lumo-styles": "24.3.2", - "@vaadin/vaadin-themable-mixin": "24.3.2", + "@vaadin/polymer-legacy-adapter": "24.4.9", + "@vaadin/text-field": "24.4.9", + "@vaadin/vaadin-lumo-styles": "24.4.9", + "@vaadin/vaadin-themable-mixin": "24.4.9", "construct-style-sheets-polyfill": "3.1.0", - "lit": "3.1.2", - "react": "18.2.0", - "react-dom": "18.2.0", - "react-router-dom": "6.22.3" + "lit": "3.2.0", + "react": "18.3.1", + "react-dom": "18.3.1", + "react-router-dom": "6.26.2" }, "devDependencies": { - "@babel/preset-react": "7.24.1", - "@rollup/plugin-replace": "5.0.5", + "@babel/preset-react": "7.24.7", + "@preact/signals-react-transform": "0.4.0", + "@rollup/plugin-replace": "5.0.7", "@rollup/pluginutils": "5.1.0", - "@vitejs/plugin-react": "4.2.1", - "async": "3.2.5", - "glob": "10.3.12", + "@types/react": "18.3.6", + "@types/react-dom": "18.3.0", + "@vitejs/plugin-react": "4.3.1", + "async": "3.2.6", + "glob": "10.4.5", "rollup-plugin-brotli": "3.1.0", "rollup-plugin-visualizer": "5.12.0", "strip-css-comments": "5.0.0", "transform-ast": "2.4.4", - "typescript": "5.4.5", - "vite": "5.2.8", - "vite-plugin-checker": "0.6.4", - "workbox-build": "7.0.0", - "workbox-core": "7.0.0", - "workbox-precaching": "7.0.0", - "@types/react-dom": "18.2.24", - "@types/react": "18.2.75" + "typescript": "5.6.2", + "vite": "5.4.6", + "vite-plugin-checker": "0.8.0", + "workbox-build": "7.1.1", + "workbox-core": "7.1.0", + "workbox-precaching": "7.1.0" }, - "hash": "e90bc4a4ce1033473f055c0de880879f451c8c914377d7161e427eabede4c550" + "hash": "33293ce958b1055dda23f1f84cb691c7a7bb69dfd56804d54cc3cedf8d422ebd" } } diff --git a/flow-tests/test-frontend/vite-basics/pom.xml b/flow-tests/test-frontend/vite-basics/pom.xml index c2e4b51acfd..f9d84923740 100644 --- a/flow-tests/test-frontend/vite-basics/pom.xml +++ b/flow-tests/test-frontend/vite-basics/pom.xml @@ -6,7 +6,7 @@ com.vaadin test-frontend - 24.5-SNAPSHOT + 24.6-SNAPSHOT vite-basics Vite dev mode functionality diff --git a/flow-tests/test-frontend/vite-basics/src/main/java/com/vaadin/viteapp/views/empty/MainView.java b/flow-tests/test-frontend/vite-basics/src/main/java/com/vaadin/viteapp/views/empty/MainView.java index 86e56451a80..dc5b10301cc 100644 --- a/flow-tests/test-frontend/vite-basics/src/main/java/com/vaadin/viteapp/views/empty/MainView.java +++ b/flow-tests/test-frontend/vite-basics/src/main/java/com/vaadin/viteapp/views/empty/MainView.java @@ -20,7 +20,6 @@ @JsModule("./importdir.js") @JsModule("./bad.ts") @JsModule("./testfile.css.js") -@JsModule("./toplevelawait-main.js") @CssImport(value = "./cssimport-textfield.css", themeFor = "vaadin-text-field") @CssImport(value = "./cssimport.css") public class MainView extends Div { diff --git a/flow-tests/test-frontend/vite-basics/src/test/java/com/vaadin/viteapp/BasicsIT.java b/flow-tests/test-frontend/vite-basics/src/test/java/com/vaadin/viteapp/BasicsIT.java index fe045717fd7..0359e7d8f13 100644 --- a/flow-tests/test-frontend/vite-basics/src/test/java/com/vaadin/viteapp/BasicsIT.java +++ b/flow-tests/test-frontend/vite-basics/src/test/java/com/vaadin/viteapp/BasicsIT.java @@ -63,10 +63,4 @@ public void importFromDirectoryWorks() { public void bootstrapTsCanBeModified() { Assert.assertEquals(1L, executeScript("return window.bootstrapMod")); } - - @Test - public void toplevelAwaitWorks() { - Assert.assertEquals("This is the value set in other.js", - executeScript("return window.topLevelAwaitValue")); - } } diff --git a/flow-tests/test-frontend/vite-context-path/package.json b/flow-tests/test-frontend/vite-context-path/package.json index 002ff3725ae..2e493b8da78 100644 --- a/flow-tests/test-frontend/vite-context-path/package.json +++ b/flow-tests/test-frontend/vite-context-path/package.json @@ -7,77 +7,75 @@ "@testscope/all": "../vite-test-assets/packages/@testscope/all", "@testscope/button": "../vite-test-assets/packages/@testscope/button", "@testscope/map": "../vite-test-assets/packages/@testscope/map", - "@types/react": "18.2.50", - "@types/react-dom": "18.2.18", "@vaadin/bundles": "../vite-test-assets/packages/@vaadin/bundles-old", "@vaadin/common-frontend": "0.0.19", - "@vaadin/polymer-legacy-adapter": "24.3.2", - "@vaadin/text-field": "24.3.2", - "@vaadin/vaadin-lumo-styles": "24.3.2", - "@vaadin/vaadin-themable-mixin": "24.3.2", + "@vaadin/polymer-legacy-adapter": "24.4.9", + "@vaadin/text-field": "24.4.9", + "@vaadin/vaadin-lumo-styles": "24.4.9", + "@vaadin/vaadin-themable-mixin": "24.4.9", "construct-style-sheets-polyfill": "3.1.0", - "lit": "3.1.2", - "react": "18.2.0", - "react-dom": "18.2.0", - "react-router-dom": "6.22.3" + "lit": "3.2.0", + "react": "18.3.1", + "react-dom": "18.3.1", + "react-router-dom": "6.26.2" }, "devDependencies": { - "@babel/preset-react": "7.24.1", - "@rollup/plugin-replace": "5.0.5", + "@babel/preset-react": "7.24.7", + "@preact/signals-react-transform": "0.4.0", + "@rollup/plugin-replace": "5.0.7", "@rollup/pluginutils": "5.1.0", - "@vitejs/plugin-react": "4.2.1", - "async": "3.2.5", - "glob": "10.3.12", + "@types/react": "18.3.6", + "@types/react-dom": "18.3.0", + "@vitejs/plugin-react": "4.3.1", + "async": "3.2.6", + "glob": "10.4.5", "rollup-plugin-brotli": "3.1.0", "rollup-plugin-visualizer": "5.12.0", "strip-css-comments": "5.0.0", "transform-ast": "2.4.4", - "typescript": "5.4.3", - "vite": "5.2.7", - "vite-plugin-checker": "0.6.4", - "workbox-build": "7.0.0", - "workbox-core": "7.0.0", - "workbox-precaching": "7.0.0", - "@types/react-dom": "18.2.23", - "@types/react": "18.2.73" + "typescript": "5.6.2", + "vite": "5.4.6", + "vite-plugin-checker": "0.8.0", + "workbox-build": "7.1.1", + "workbox-core": "7.1.0", + "workbox-precaching": "7.1.0" }, "vaadin": { "dependencies": { "@polymer/polymer": "3.5.1", - "@types/react": "18.2.50", - "@types/react-dom": "18.2.18", "@vaadin/common-frontend": "0.0.19", - "@vaadin/polymer-legacy-adapter": "24.3.2", - "@vaadin/text-field": "24.3.2", - "@vaadin/vaadin-lumo-styles": "24.3.2", - "@vaadin/vaadin-themable-mixin": "24.3.2", + "@vaadin/polymer-legacy-adapter": "24.4.9", + "@vaadin/text-field": "24.4.9", + "@vaadin/vaadin-lumo-styles": "24.4.9", + "@vaadin/vaadin-themable-mixin": "24.4.9", "construct-style-sheets-polyfill": "3.1.0", - "lit": "3.1.2", - "react": "18.2.0", - "react-dom": "18.2.0", - "react-router-dom": "6.22.3" + "lit": "3.2.0", + "react": "18.3.1", + "react-dom": "18.3.1", + "react-router-dom": "6.26.2" }, "devDependencies": { - "@babel/preset-react": "7.24.1", - "@rollup/plugin-replace": "5.0.5", + "@babel/preset-react": "7.24.7", + "@preact/signals-react-transform": "0.4.0", + "@rollup/plugin-replace": "5.0.7", "@rollup/pluginutils": "5.1.0", - "@vitejs/plugin-react": "4.2.1", - "async": "3.2.5", - "glob": "10.3.12", + "@types/react": "18.3.6", + "@types/react-dom": "18.3.0", + "@vitejs/plugin-react": "4.3.1", + "async": "3.2.6", + "glob": "10.4.5", "rollup-plugin-brotli": "3.1.0", "rollup-plugin-visualizer": "5.12.0", "strip-css-comments": "5.0.0", "transform-ast": "2.4.4", - "typescript": "5.4.3", - "vite": "5.2.7", - "vite-plugin-checker": "0.6.4", - "workbox-build": "7.0.0", - "workbox-core": "7.0.0", - "workbox-precaching": "7.0.0", - "@types/react-dom": "18.2.23", - "@types/react": "18.2.73" + "typescript": "5.6.2", + "vite": "5.4.6", + "vite-plugin-checker": "0.8.0", + "workbox-build": "7.1.1", + "workbox-core": "7.1.0", + "workbox-precaching": "7.1.0" }, - "hash": "42b329c0496d035ac665b14342e70adcabb9da860f090fd050d89d40d2dc672d" + "hash": "40d6c597777a52f9e2889724347641d5be02fd06c9a1ae15479d6ebcf12bec2b" }, "overrides": { "@polymer/polymer": "$@polymer/polymer", diff --git a/flow-tests/test-frontend/vite-context-path/pom-production.xml b/flow-tests/test-frontend/vite-context-path/pom-production.xml index 9b95d1445f1..454696bcd37 100644 --- a/flow-tests/test-frontend/vite-context-path/pom-production.xml +++ b/flow-tests/test-frontend/vite-context-path/pom-production.xml @@ -6,7 +6,7 @@ com.vaadin test-frontend - 24.5-SNAPSHOT + 24.6-SNAPSHOT vite-context-path-production Vite with a context path (production mode) diff --git a/flow-tests/test-frontend/vite-context-path/pom.xml b/flow-tests/test-frontend/vite-context-path/pom.xml index 80ac113b3f2..751eaa80cc8 100644 --- a/flow-tests/test-frontend/vite-context-path/pom.xml +++ b/flow-tests/test-frontend/vite-context-path/pom.xml @@ -6,7 +6,7 @@ com.vaadin test-frontend - 24.5-SNAPSHOT + 24.6-SNAPSHOT vite-context-path Vite with a context path diff --git a/flow-tests/test-frontend/vite-embedded-webcomponent-resync/pom.xml b/flow-tests/test-frontend/vite-embedded-webcomponent-resync/pom.xml index 1fdc5750d2b..fbbb51ae3e4 100644 --- a/flow-tests/test-frontend/vite-embedded-webcomponent-resync/pom.xml +++ b/flow-tests/test-frontend/vite-embedded-webcomponent-resync/pom.xml @@ -6,7 +6,7 @@ com.vaadin test-frontend - 24.5-SNAPSHOT + 24.6-SNAPSHOT vite-embedded-webcomponent-resync Vite embedded app - session resync diff --git a/flow-tests/test-frontend/vite-embedded/pom-production.xml b/flow-tests/test-frontend/vite-embedded/pom-production.xml index d5109e9d79f..cd55c0fdb0d 100644 --- a/flow-tests/test-frontend/vite-embedded/pom-production.xml +++ b/flow-tests/test-frontend/vite-embedded/pom-production.xml @@ -6,7 +6,7 @@ com.vaadin test-frontend - 24.5-SNAPSHOT + 24.6-SNAPSHOT vite-embedded-production Vite embedded app (production mode) diff --git a/flow-tests/test-frontend/vite-embedded/pom.xml b/flow-tests/test-frontend/vite-embedded/pom.xml index 0f629b96f30..d9ff636c788 100644 --- a/flow-tests/test-frontend/vite-embedded/pom.xml +++ b/flow-tests/test-frontend/vite-embedded/pom.xml @@ -6,7 +6,7 @@ com.vaadin test-frontend - 24.5-SNAPSHOT + 24.6-SNAPSHOT vite-embedded Vite embedded app diff --git a/flow-tests/test-frontend/vite-production-custom-frontend/pom.xml b/flow-tests/test-frontend/vite-production-custom-frontend/pom.xml index 80a0d62a997..e2bf2a8118a 100644 --- a/flow-tests/test-frontend/vite-production-custom-frontend/pom.xml +++ b/flow-tests/test-frontend/vite-production-custom-frontend/pom.xml @@ -6,7 +6,7 @@ com.vaadin test-frontend - 24.5-SNAPSHOT + 24.6-SNAPSHOT vite-production-custom-frontend Vite production mode functionality (custom frontend directory) diff --git a/flow-tests/test-frontend/vite-production/package.json b/flow-tests/test-frontend/vite-production/package.json index 85c91283123..e9f645ee2e5 100644 --- a/flow-tests/test-frontend/vite-production/package.json +++ b/flow-tests/test-frontend/vite-production/package.json @@ -9,75 +9,75 @@ "@testscope/map": "../vite-test-assets/packages/@testscope/map", "@vaadin/bundles": "../vite-test-assets/packages/@vaadin/bundles", "@vaadin/common-frontend": "0.0.19", - "@vaadin/polymer-legacy-adapter": "24.3.2", - "@vaadin/text-field": "24.3.2", - "@vaadin/vaadin-lumo-styles": "24.3.2", - "@vaadin/vaadin-themable-mixin": "24.3.2", + "@vaadin/polymer-legacy-adapter": "24.4.9", + "@vaadin/text-field": "24.4.9", + "@vaadin/vaadin-lumo-styles": "24.4.9", + "@vaadin/vaadin-themable-mixin": "24.4.9", "construct-style-sheets-polyfill": "3.1.0", - "lit": "3.1.2", + "lit": "3.2.0", "package-outside-npm": "file:../vite-test-assets/packages/package-outside-npm", "package2-outside-npm": "../vite-test-assets/packages/package2-outside-npm", - "react": "18.2.0", - "react-dom": "18.2.0", - "react-router-dom": "6.22.3" + "react": "18.3.1", + "react-dom": "18.3.1", + "react-router-dom": "6.26.2" }, "devDependencies": { - "@babel/preset-react": "7.24.1", - "@rollup/plugin-replace": "5.0.5", + "@babel/preset-react": "7.24.7", + "@preact/signals-react-transform": "0.4.0", + "@rollup/plugin-replace": "5.0.7", "@rollup/pluginutils": "5.1.0", - "@types/react": "18.2.73", - "@types/react-dom": "18.2.23", - "@vaadin/hilla-file-router": "24.4.0-alpha10", - "@vitejs/plugin-react": "4.2.1", - "async": "3.2.5", - "glob": "10.3.12", + "@types/react": "18.3.6", + "@types/react-dom": "18.3.0", + "@vitejs/plugin-react": "4.3.1", + "async": "3.2.6", + "glob": "10.4.5", "rollup-plugin-brotli": "3.1.0", "rollup-plugin-visualizer": "5.12.0", "strip-css-comments": "5.0.0", "transform-ast": "2.4.4", - "typescript": "5.4.3", - "vite": "5.2.7", - "vite-plugin-checker": "0.6.4", - "workbox-build": "7.0.0", - "workbox-core": "7.0.0", - "workbox-precaching": "7.0.0" + "typescript": "5.6.2", + "vite": "5.4.6", + "vite-plugin-checker": "0.8.0", + "workbox-build": "7.1.1", + "workbox-core": "7.1.0", + "workbox-precaching": "7.1.0" }, "vaadin": { "dependencies": { "@polymer/polymer": "3.5.1", "@vaadin/common-frontend": "0.0.19", - "@vaadin/polymer-legacy-adapter": "24.3.2", - "@vaadin/text-field": "24.3.2", - "@vaadin/vaadin-lumo-styles": "24.3.2", - "@vaadin/vaadin-themable-mixin": "24.3.2", + "@vaadin/polymer-legacy-adapter": "24.4.9", + "@vaadin/text-field": "24.4.9", + "@vaadin/vaadin-lumo-styles": "24.4.9", + "@vaadin/vaadin-themable-mixin": "24.4.9", "construct-style-sheets-polyfill": "3.1.0", - "lit": "3.1.2", - "react": "18.2.0", - "react-dom": "18.2.0", - "react-router-dom": "6.22.3" + "lit": "3.2.0", + "react": "18.3.1", + "react-dom": "18.3.1", + "react-router-dom": "6.26.2" }, "devDependencies": { - "@babel/preset-react": "7.24.1", - "@rollup/plugin-replace": "5.0.5", + "@babel/preset-react": "7.24.7", + "@preact/signals-react-transform": "0.4.0", + "@rollup/plugin-replace": "5.0.7", "@rollup/pluginutils": "5.1.0", - "@types/react": "18.2.73", - "@types/react-dom": "18.2.23", - "@vaadin/hilla-file-router": "24.4.0-alpha10", - "@vitejs/plugin-react": "4.2.1", - "async": "3.2.5", - "glob": "10.3.12", + "@types/react": "18.3.6", + "@types/react-dom": "18.3.0", + "@vitejs/plugin-react": "4.3.1", + "async": "3.2.6", + "glob": "10.4.5", "rollup-plugin-brotli": "3.1.0", "rollup-plugin-visualizer": "5.12.0", "strip-css-comments": "5.0.0", "transform-ast": "2.4.4", - "typescript": "5.4.3", - "vite": "5.2.7", - "vite-plugin-checker": "0.6.4", - "workbox-build": "7.0.0", - "workbox-core": "7.0.0", - "workbox-precaching": "7.0.0" + "typescript": "5.6.2", + "vite": "5.4.6", + "vite-plugin-checker": "0.8.0", + "workbox-build": "7.1.1", + "workbox-core": "7.1.0", + "workbox-precaching": "7.1.0" }, - "hash": "3e6f5eb375e26456a9dd6ef61bb3b9cd65d133ad45ee8e1c5bc98cfef2de0dfa" + "hash": "9b9b16ace160b5a4c78b6bad7c1d56b4e004e91e796a1cc1c90073ab8c15742f" }, "overrides": { "@polymer/polymer": "$@polymer/polymer", diff --git a/flow-tests/test-frontend/vite-production/pom.xml b/flow-tests/test-frontend/vite-production/pom.xml index df0f1471b4a..e1e740db379 100644 --- a/flow-tests/test-frontend/vite-production/pom.xml +++ b/flow-tests/test-frontend/vite-production/pom.xml @@ -6,7 +6,7 @@ com.vaadin test-frontend - 24.5-SNAPSHOT + 24.6-SNAPSHOT vite-production Vite production mode functionality diff --git a/flow-tests/test-frontend/vite-production/src/main/java/com/vaadin/viteapp/views/empty/MainView.java b/flow-tests/test-frontend/vite-production/src/main/java/com/vaadin/viteapp/views/empty/MainView.java index 5dd028b33f6..4be45d9da48 100644 --- a/flow-tests/test-frontend/vite-production/src/main/java/com/vaadin/viteapp/views/empty/MainView.java +++ b/flow-tests/test-frontend/vite-production/src/main/java/com/vaadin/viteapp/views/empty/MainView.java @@ -15,7 +15,6 @@ @JsModule("@testscope/map") @JsModule("package-outside-npm/index.js") @JsModule("package2-outside-npm/index.js") -@JsModule("./toplevelawait-main.js") @CssImport("./image.css") public class MainView extends Div { diff --git a/flow-tests/test-frontend/vite-production/src/test/java/com/vaadin/viteapp/ProductionBasicsIT.java b/flow-tests/test-frontend/vite-production/src/test/java/com/vaadin/viteapp/ProductionBasicsIT.java index 79e53feae38..f762854846b 100644 --- a/flow-tests/test-frontend/vite-production/src/test/java/com/vaadin/viteapp/ProductionBasicsIT.java +++ b/flow-tests/test-frontend/vite-production/src/test/java/com/vaadin/viteapp/ProductionBasicsIT.java @@ -57,15 +57,4 @@ public void applicationHasThemeAndAssets() { Assert.assertEquals(200, size.getWidth()); Assert.assertEquals(200, size.getHeight()); } - - @Test - public void toplevelAwaitWorks() { - getDriver().get(getRootURL()); - waitForDevServer(); - String value = waitUntil(driver -> (String) executeScript( - "return window.topLevelAwaitValue")); - - Assert.assertEquals("This is the value set in other.js", value); - } - } diff --git a/flow-tests/test-frontend/vite-pwa-custom-offline-path/pom-production.xml b/flow-tests/test-frontend/vite-pwa-custom-offline-path/pom-production.xml index 8091f873564..464120fa7bf 100644 --- a/flow-tests/test-frontend/vite-pwa-custom-offline-path/pom-production.xml +++ b/flow-tests/test-frontend/vite-pwa-custom-offline-path/pom-production.xml @@ -6,7 +6,7 @@ com.vaadin test-frontend - 24.5-SNAPSHOT + 24.6-SNAPSHOT vite-pwa-custom-offline-path-production Vite PWA app with a custom offline path (production mode) diff --git a/flow-tests/test-frontend/vite-pwa-custom-offline-path/pom.xml b/flow-tests/test-frontend/vite-pwa-custom-offline-path/pom.xml index c6f2a4ca087..c863453177e 100644 --- a/flow-tests/test-frontend/vite-pwa-custom-offline-path/pom.xml +++ b/flow-tests/test-frontend/vite-pwa-custom-offline-path/pom.xml @@ -4,7 +4,7 @@ test-frontend com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT vite-pwa-custom-offline-path Vite PWA app with a custom offline path diff --git a/flow-tests/test-frontend/vite-pwa-disabled-offline/pom-production.xml b/flow-tests/test-frontend/vite-pwa-disabled-offline/pom-production.xml index d7961b8b0b7..30626a13fdc 100644 --- a/flow-tests/test-frontend/vite-pwa-disabled-offline/pom-production.xml +++ b/flow-tests/test-frontend/vite-pwa-disabled-offline/pom-production.xml @@ -4,7 +4,7 @@ test-frontend com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT vite-pwa-disabled-offline-production Vite PWA app with disabled offline (production mode) diff --git a/flow-tests/test-frontend/vite-pwa-disabled-offline/pom.xml b/flow-tests/test-frontend/vite-pwa-disabled-offline/pom.xml index 5882ef8ca96..846edade1a0 100644 --- a/flow-tests/test-frontend/vite-pwa-disabled-offline/pom.xml +++ b/flow-tests/test-frontend/vite-pwa-disabled-offline/pom.xml @@ -4,7 +4,7 @@ test-frontend com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT vite-pwa-disabled-offline Vite PWA app with disabled offline diff --git a/flow-tests/test-frontend/vite-pwa-production/pom.xml b/flow-tests/test-frontend/vite-pwa-production/pom.xml index a8401c683ae..16a504ca768 100644 --- a/flow-tests/test-frontend/vite-pwa-production/pom.xml +++ b/flow-tests/test-frontend/vite-pwa-production/pom.xml @@ -6,7 +6,7 @@ com.vaadin test-frontend - 24.5-SNAPSHOT + 24.6-SNAPSHOT vite-pwa-production Vite PWA app (production mode) diff --git a/flow-tests/test-frontend/vite-pwa/pom.xml b/flow-tests/test-frontend/vite-pwa/pom.xml index b8f00f883bc..2334c2b0e95 100644 --- a/flow-tests/test-frontend/vite-pwa/pom.xml +++ b/flow-tests/test-frontend/vite-pwa/pom.xml @@ -6,7 +6,7 @@ com.vaadin test-frontend - 24.5-SNAPSHOT + 24.6-SNAPSHOT vite-pwa Vite PWA app diff --git a/flow-tests/test-frontend/vite-test-assets/pom.xml b/flow-tests/test-frontend/vite-test-assets/pom.xml index 9310e041806..5766dbb45d9 100644 --- a/flow-tests/test-frontend/vite-test-assets/pom.xml +++ b/flow-tests/test-frontend/vite-test-assets/pom.xml @@ -21,7 +21,7 @@ test-frontend com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-frontend/vite-test-assets/src/main/resources/META-INF/frontend/toplevelawait-main.js b/flow-tests/test-frontend/vite-test-assets/src/main/resources/META-INF/frontend/toplevelawait-main.js deleted file mode 100644 index be133d5e2f6..00000000000 --- a/flow-tests/test-frontend/vite-test-assets/src/main/resources/META-INF/frontend/toplevelawait-main.js +++ /dev/null @@ -1,4 +0,0 @@ -import './toplevelawait-other.js'; - -window.topLevelAwaitValue = window.othervalue; -console.log('The value set in other is: ' + window.topLevelAwaitValue); diff --git a/flow-tests/test-frontend/vite-test-assets/src/main/resources/META-INF/frontend/toplevelawait-other.js b/flow-tests/test-frontend/vite-test-assets/src/main/resources/META-INF/frontend/toplevelawait-other.js deleted file mode 100644 index 03cc1a606aa..00000000000 --- a/flow-tests/test-frontend/vite-test-assets/src/main/resources/META-INF/frontend/toplevelawait-other.js +++ /dev/null @@ -1,13 +0,0 @@ - -let res; -const promise = new Promise((resolve, reject) => { - res = resolve; -}); - -setTimeout(() => { - window.othervalue = "This is the value set in other.js"; - res(); -}, 500); - - -await promise; diff --git a/flow-tests/test-legacy-frontend/pom.xml b/flow-tests/test-legacy-frontend/pom.xml index cf7e1f94ee0..ae082d2e636 100644 --- a/flow-tests/test-legacy-frontend/pom.xml +++ b/flow-tests/test-legacy-frontend/pom.xml @@ -4,7 +4,7 @@ com.vaadin flow-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-legacy-frontend Flow custom theme in legacy frontend folder diff --git a/flow-tests/test-live-reload-multimodule/library/pom-devbundle.xml b/flow-tests/test-live-reload-multimodule/library/pom-devbundle.xml index 38252a7f7e7..e5529a5e0b6 100644 --- a/flow-tests/test-live-reload-multimodule/library/pom-devbundle.xml +++ b/flow-tests/test-live-reload-multimodule/library/pom-devbundle.xml @@ -6,7 +6,7 @@ flow-test-live-reload-multimodule-devbundle com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT ../pom-devbundle.xml flow-test-live-reload-multimodule-library-devbundle diff --git a/flow-tests/test-live-reload-multimodule/library/pom.xml b/flow-tests/test-live-reload-multimodule/library/pom.xml index fa45c2d4b2d..e7fbd31a670 100644 --- a/flow-tests/test-live-reload-multimodule/library/pom.xml +++ b/flow-tests/test-live-reload-multimodule/library/pom.xml @@ -6,7 +6,7 @@ flow-test-live-reload-multimodule-hotdeploy com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-live-reload-multimodule-library-hotdeploy The frontend library module for a live reload multi module project (hotdeploy) diff --git a/flow-tests/test-live-reload-multimodule/pom-devbundle.xml b/flow-tests/test-live-reload-multimodule/pom-devbundle.xml index 5f6945f8a61..63cd03a0c8b 100644 --- a/flow-tests/test-live-reload-multimodule/pom-devbundle.xml +++ b/flow-tests/test-live-reload-multimodule/pom-devbundle.xml @@ -6,7 +6,7 @@ flow-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-live-reload-multimodule-devbundle The main module for a live reload multi module project (dev bundle) diff --git a/flow-tests/test-live-reload-multimodule/pom.xml b/flow-tests/test-live-reload-multimodule/pom.xml index 6495bb93d23..97442236172 100644 --- a/flow-tests/test-live-reload-multimodule/pom.xml +++ b/flow-tests/test-live-reload-multimodule/pom.xml @@ -6,7 +6,7 @@ flow-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-live-reload-multimodule-hotdeploy The main module for a live reload multi module project (hotdeploy) diff --git a/flow-tests/test-live-reload-multimodule/theme/pom-devbundle.xml b/flow-tests/test-live-reload-multimodule/theme/pom-devbundle.xml index 00135cc0566..a6ac3acc992 100644 --- a/flow-tests/test-live-reload-multimodule/theme/pom-devbundle.xml +++ b/flow-tests/test-live-reload-multimodule/theme/pom-devbundle.xml @@ -6,7 +6,7 @@ flow-test-live-reload-multimodule-devbundle com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT ../pom-devbundle.xml flow-test-live-reload-multimodule-theme-devbundle diff --git a/flow-tests/test-live-reload-multimodule/theme/pom.xml b/flow-tests/test-live-reload-multimodule/theme/pom.xml index a4b257c494a..f8da160b2cf 100644 --- a/flow-tests/test-live-reload-multimodule/theme/pom.xml +++ b/flow-tests/test-live-reload-multimodule/theme/pom.xml @@ -6,7 +6,7 @@ flow-test-live-reload-multimodule-hotdeploy com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-live-reload-multimodule-theme-hotdeploy The theme module for a live reload multi module project (hotdeploy) diff --git a/flow-tests/test-live-reload-multimodule/ui/pom-devbundle.xml b/flow-tests/test-live-reload-multimodule/ui/pom-devbundle.xml index 30c2296ffa4..52fd786f81d 100644 --- a/flow-tests/test-live-reload-multimodule/ui/pom-devbundle.xml +++ b/flow-tests/test-live-reload-multimodule/ui/pom-devbundle.xml @@ -6,7 +6,7 @@ flow-test-live-reload-multimodule-devbundle com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT ../pom-devbundle.xml flow-test-live-reload-multimodule-ui-devbundle diff --git a/flow-tests/test-live-reload-multimodule/ui/pom.xml b/flow-tests/test-live-reload-multimodule/ui/pom.xml index df700e483d7..165d7068150 100644 --- a/flow-tests/test-live-reload-multimodule/ui/pom.xml +++ b/flow-tests/test-live-reload-multimodule/ui/pom.xml @@ -6,7 +6,7 @@ flow-test-live-reload-multimodule-hotdeploy com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-live-reload-multimodule-ui-hotdeploy The UI module for a live reload multi module project (hotdeploy) diff --git a/flow-tests/test-live-reload/pom.xml b/flow-tests/test-live-reload/pom.xml index 5b107c2252a..fb50378e540 100644 --- a/flow-tests/test-live-reload/pom.xml +++ b/flow-tests/test-live-reload/pom.xml @@ -6,7 +6,7 @@ flow-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-live-reload-mode Flow tests for live reload in dev mode diff --git a/flow-tests/test-live-reload/src/test/java/com/vaadin/flow/uitest/ui/JavaLiveReloadIT.java b/flow-tests/test-live-reload/src/test/java/com/vaadin/flow/uitest/ui/JavaLiveReloadIT.java index f203b59eace..e72cb89312a 100644 --- a/flow-tests/test-live-reload/src/test/java/com/vaadin/flow/uitest/ui/JavaLiveReloadIT.java +++ b/flow-tests/test-live-reload/src/test/java/com/vaadin/flow/uitest/ui/JavaLiveReloadIT.java @@ -15,45 +15,17 @@ */ package com.vaadin.flow.uitest.ui; -import com.vaadin.flow.testutil.DevToolsElement; -import com.vaadin.testbench.TestBenchElement; - import net.jcip.annotations.NotThreadSafe; import org.junit.Assert; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; +import com.vaadin.flow.testutil.DevToolsElement; + @NotThreadSafe public class JavaLiveReloadIT extends AbstractLiveReloadIT { - @Test - public void splashMessageShownOnAutoReloadAndClosedOnBodyClick() { - open(); - - WebElement liveReloadTrigger = findElement( - By.id(JavaLiveReloadView.JAVA_LIVE_RELOAD_TRIGGER_BUTTON)); - liveReloadTrigger.click(); - - waitForLiveReload(); - - DevToolsElement liveReload = $(DevToolsElement.class).waitForFirst(); - WebElement devTools1 = liveReload.$("*") - .attributeContains("class", "dev-tools").first(); - - Assert.assertTrue(devTools1.getAttribute("class").contains("active")); - - findElement(By.tagName("body")).click(); - - DevToolsElement liveReload2 = $(DevToolsElement.class).waitForFirst(); - Assert.assertNotNull(liveReload2); - WebElement devTools2 = liveReload2.$("*") - .attributeContains("class", "dev-tools").first(); - Assert.assertFalse(devTools2.getAttribute("class").contains("active")); - Assert.assertTrue( - devTools2.getAttribute("class").contains("dev-tools")); - } - @Test public void deactivateLiveReload() { open(); @@ -71,8 +43,7 @@ public void deactivateLiveReload() { // then: page is not reloaded DevToolsElement liveReload2 = $(DevToolsElement.class).waitForFirst(); WebElement devTools2 = liveReload2.$("*") - .attributeContains("class", "dev-tools").first(); - Assert.assertFalse(devTools2.getAttribute("class").contains("active")); + .withAttributeContainingWord("class", "dev-tools").first(); Assert.assertTrue( devTools2.getAttribute("class").contains("dev-tools")); } diff --git a/flow-tests/test-lumo/pom.xml b/flow-tests/test-lumo/pom.xml index 5efb1bf66a7..71b46623822 100644 --- a/flow-tests/test-lumo/pom.xml +++ b/flow-tests/test-lumo/pom.xml @@ -6,7 +6,7 @@ com.vaadin flow-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-lumo Lumo class for use in test modules requiring LUMO diff --git a/flow-tests/test-misc/pom.xml b/flow-tests/test-misc/pom.xml index c713a9a4fd0..5c84e6bf6bf 100644 --- a/flow-tests/test-misc/pom.xml +++ b/flow-tests/test-misc/pom.xml @@ -4,7 +4,7 @@ flow-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-misc-test Flow Miscelaneous tests in npm diff --git a/flow-tests/test-multi-war/deployment/pom.xml b/flow-tests/test-multi-war/deployment/pom.xml index 277f1204484..7b0369929c6 100644 --- a/flow-tests/test-multi-war/deployment/pom.xml +++ b/flow-tests/test-multi-war/deployment/pom.xml @@ -4,7 +4,7 @@ flow-test-multi-war com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-multi-war-bundle Bundle testing multiple war deployment diff --git a/flow-tests/test-multi-war/pom.xml b/flow-tests/test-multi-war/pom.xml index 8fedb09b593..0c922d6b05f 100644 --- a/flow-tests/test-multi-war/pom.xml +++ b/flow-tests/test-multi-war/pom.xml @@ -6,7 +6,7 @@ flow-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-multi-war Flow tests with more than one war deployed at the same time diff --git a/flow-tests/test-multi-war/test-war1/pom.xml b/flow-tests/test-multi-war/test-war1/pom.xml index 253958a14e0..b70503157fd 100644 --- a/flow-tests/test-multi-war/test-war1/pom.xml +++ b/flow-tests/test-multi-war/test-war1/pom.xml @@ -6,7 +6,7 @@ flow-test-multi-war com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-multi-war1 First war for multi war tests diff --git a/flow-tests/test-multi-war/test-war2/pom.xml b/flow-tests/test-multi-war/test-war2/pom.xml index 7039ef54814..96441f8fbf2 100644 --- a/flow-tests/test-multi-war/test-war2/pom.xml +++ b/flow-tests/test-multi-war/test-war2/pom.xml @@ -6,7 +6,7 @@ flow-test-multi-war com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-multi-war2 Second war for multi war tests diff --git a/flow-tests/test-no-theme/pom.xml b/flow-tests/test-no-theme/pom.xml index a6a49bb0897..b9b1f314758 100644 --- a/flow-tests/test-no-theme/pom.xml +++ b/flow-tests/test-no-theme/pom.xml @@ -4,7 +4,7 @@ com.vaadin flow-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-no-theme Flow tests for no theme in NPM mode diff --git a/flow-tests/test-npm-only-features/pom.xml b/flow-tests/test-npm-only-features/pom.xml index f333e5e46d0..d98ac547833 100644 --- a/flow-tests/test-npm-only-features/pom.xml +++ b/flow-tests/test-npm-only-features/pom.xml @@ -21,7 +21,7 @@ flow-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-npm-only-features/test-npm-bytecode-scanning/pom-devmode.xml b/flow-tests/test-npm-only-features/test-npm-bytecode-scanning/pom-devmode.xml index c550167c87c..a27e52e040b 100644 --- a/flow-tests/test-npm-only-features/test-npm-bytecode-scanning/pom-devmode.xml +++ b/flow-tests/test-npm-only-features/test-npm-bytecode-scanning/pom-devmode.xml @@ -19,7 +19,7 @@ flow-test-npm-only-features com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-npm-only-features/test-npm-bytecode-scanning/pom-production.xml b/flow-tests/test-npm-only-features/test-npm-bytecode-scanning/pom-production.xml index 7d8eaa7a5c5..99482029874 100644 --- a/flow-tests/test-npm-only-features/test-npm-bytecode-scanning/pom-production.xml +++ b/flow-tests/test-npm-only-features/test-npm-bytecode-scanning/pom-production.xml @@ -19,7 +19,7 @@ flow-test-npm-only-features com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-npm-only-features/test-npm-custom-frontend-directory/pom.xml b/flow-tests/test-npm-only-features/test-npm-custom-frontend-directory/pom.xml index d8858f99fac..02d14f95b1e 100644 --- a/flow-tests/test-npm-only-features/test-npm-custom-frontend-directory/pom.xml +++ b/flow-tests/test-npm-only-features/test-npm-custom-frontend-directory/pom.xml @@ -19,7 +19,7 @@ flow-test-npm-only-features com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-npm-only-features/test-npm-general/pom.xml b/flow-tests/test-npm-only-features/test-npm-general/pom.xml index 2037600e06e..130826e623a 100644 --- a/flow-tests/test-npm-only-features/test-npm-general/pom.xml +++ b/flow-tests/test-npm-only-features/test-npm-general/pom.xml @@ -19,7 +19,7 @@ com.vaadin flow-test-npm-only-features - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-npm-only-features/test-npm-no-buildmojo/pom.xml b/flow-tests/test-npm-only-features/test-npm-no-buildmojo/pom.xml index 52fa653b30c..49ed6bc90bf 100644 --- a/flow-tests/test-npm-only-features/test-npm-no-buildmojo/pom.xml +++ b/flow-tests/test-npm-only-features/test-npm-no-buildmojo/pom.xml @@ -19,7 +19,7 @@ flow-test-npm-only-features com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-npm-only-features/test-npm-performance-regression/pom.xml b/flow-tests/test-npm-only-features/test-npm-performance-regression/pom.xml index 7bf159278a3..8908c80ec98 100644 --- a/flow-tests/test-npm-only-features/test-npm-performance-regression/pom.xml +++ b/flow-tests/test-npm-only-features/test-npm-performance-regression/pom.xml @@ -3,7 +3,7 @@ flow-test-npm-only-features com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT 4.0.0 diff --git a/flow-tests/test-pwa-disabled-offline/pom-production.xml b/flow-tests/test-pwa-disabled-offline/pom-production.xml index fc0182a71b2..d7ec76bd493 100644 --- a/flow-tests/test-pwa-disabled-offline/pom-production.xml +++ b/flow-tests/test-pwa-disabled-offline/pom-production.xml @@ -4,7 +4,7 @@ flow-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-pwa-disabled-offline-prod Flow tests for PWA annotation with disabled offline (production mode) diff --git a/flow-tests/test-pwa-disabled-offline/pom.xml b/flow-tests/test-pwa-disabled-offline/pom.xml index 91cfd3aeab1..f4f727cad86 100644 --- a/flow-tests/test-pwa-disabled-offline/pom.xml +++ b/flow-tests/test-pwa-disabled-offline/pom.xml @@ -4,7 +4,7 @@ flow-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-pwa-disabled-offline Flow tests for PWA annotation with disabled offline diff --git a/flow-tests/test-pwa/pom-production.xml b/flow-tests/test-pwa/pom-production.xml index a11da8d05d0..6a44449009f 100644 --- a/flow-tests/test-pwa/pom-production.xml +++ b/flow-tests/test-pwa/pom-production.xml @@ -4,7 +4,7 @@ flow-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-pwa-prod Flow tests for PWA annotation (production mode) diff --git a/flow-tests/test-pwa/pom.xml b/flow-tests/test-pwa/pom.xml index 54371cdde34..59747ccf2d9 100644 --- a/flow-tests/test-pwa/pom.xml +++ b/flow-tests/test-pwa/pom.xml @@ -4,7 +4,7 @@ flow-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-pwa Flow tests for PWA annotation diff --git a/flow-tests/test-react-adapter/pom-production.xml b/flow-tests/test-react-adapter/pom-production.xml index b36f82350c0..de2c9fb4fd7 100644 --- a/flow-tests/test-react-adapter/pom-production.xml +++ b/flow-tests/test-react-adapter/pom-production.xml @@ -4,7 +4,7 @@ flow-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-react-adapter-prod Flow tests for React adapter in production mode diff --git a/flow-tests/test-react-adapter/pom.xml b/flow-tests/test-react-adapter/pom.xml index 7d6ee80fe92..c0cafea45cc 100644 --- a/flow-tests/test-react-adapter/pom.xml +++ b/flow-tests/test-react-adapter/pom.xml @@ -4,7 +4,7 @@ flow-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-react-adapter Flow tests for React adapter diff --git a/flow-tests/test-react-router/pom-production.xml b/flow-tests/test-react-router/pom-production.xml index fd9017894b7..c67e975dc33 100644 --- a/flow-tests/test-react-router/pom-production.xml +++ b/flow-tests/test-react-router/pom-production.xml @@ -4,7 +4,7 @@ flow-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-react-router-prod Flow tests for routing using react-router in production mode diff --git a/flow-tests/test-react-router/pom.xml b/flow-tests/test-react-router/pom.xml index 02c2380fdd2..de1d0bb234a 100644 --- a/flow-tests/test-react-router/pom.xml +++ b/flow-tests/test-react-router/pom.xml @@ -4,7 +4,7 @@ flow-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-react-router Flow tests for routing using react-router diff --git a/flow-tests/test-react-router/src/main/java/com/vaadin/flow/BackNavFirstView.java b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/BackNavFirstView.java new file mode 100644 index 00000000000..93d47748d8d --- /dev/null +++ b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/BackNavFirstView.java @@ -0,0 +1,30 @@ +/* + * Copyright 2000-2024 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.vaadin.flow; + +import com.vaadin.flow.component.html.Div; +import com.vaadin.flow.component.html.NativeButton; +import com.vaadin.flow.router.Route; + +@Route("com.vaadin.flow.BackNavFirstView") +public class BackNavFirstView extends Div { + + public BackNavFirstView() { + add(new NativeButton("Navigate", event -> getUI() + .ifPresent(ui -> ui.navigate(BackNavSecondView.class)))); + } +} diff --git a/flow-tests/test-react-router/src/main/java/com/vaadin/flow/BackNavSecondView.java b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/BackNavSecondView.java new file mode 100644 index 00000000000..88b76d16cdd --- /dev/null +++ b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/BackNavSecondView.java @@ -0,0 +1,45 @@ +/* + * Copyright 2000-2024 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.vaadin.flow; + +import com.vaadin.flow.component.UI; +import com.vaadin.flow.component.html.Div; +import com.vaadin.flow.component.html.Span; +import com.vaadin.flow.router.AfterNavigationEvent; +import com.vaadin.flow.router.AfterNavigationObserver; +import com.vaadin.flow.router.Route; + +@Route("com.vaadin.flow.BackNavSecondView") +public class BackNavSecondView extends Div implements AfterNavigationObserver { + + public static final String CALLS = "calls"; + private int count = 0; + Span text = new Span("Second view: " + count); + + public BackNavSecondView() { + text.setId(CALLS); + add(text); + } + + @Override + public void afterNavigation(AfterNavigationEvent event) { + count++; + text.setText("Second view: " + count); + UI.getCurrent().getPage().getHistory().replaceState(null, + "com.vaadin.flow.BackNavSecondView?param"); + } +} diff --git a/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardTargetView.java b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardTargetView.java new file mode 100644 index 00000000000..8eb9893e40c --- /dev/null +++ b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardTargetView.java @@ -0,0 +1,25 @@ +/* + * Copyright 2000-2024 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.vaadin.flow; + +import com.vaadin.flow.component.html.Div; +import com.vaadin.flow.router.Route; + +@Route("com.vaadin.flow.ForwardTargetView") +public class ForwardTargetView extends Div { + +} diff --git a/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardTargetWithParametersView.java b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardTargetWithParametersView.java new file mode 100644 index 00000000000..1fac454f4ea --- /dev/null +++ b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardTargetWithParametersView.java @@ -0,0 +1,35 @@ +/* + * Copyright 2000-2024 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.vaadin.flow; + +import com.vaadin.flow.component.html.Div; +import com.vaadin.flow.component.html.Span; +import com.vaadin.flow.router.BeforeEvent; +import com.vaadin.flow.router.HasUrlParameter; +import com.vaadin.flow.router.OptionalParameter; +import com.vaadin.flow.router.Route; + +@Route("com.vaadin.flow.ForwardTargetWithParametersView") +public class ForwardTargetWithParametersView extends Div + implements HasUrlParameter { + + @Override + public void setParameter(BeforeEvent event, + @OptionalParameter String parameter) { + add(new Span("setParameter")); + } +} diff --git a/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardingToParametersView.java b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardingToParametersView.java new file mode 100644 index 00000000000..f2e253a7935 --- /dev/null +++ b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardingToParametersView.java @@ -0,0 +1,31 @@ +/* + * Copyright 2000-2024 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.vaadin.flow; + +import com.vaadin.flow.component.html.Div; +import com.vaadin.flow.router.BeforeEnterEvent; +import com.vaadin.flow.router.BeforeEnterObserver; +import com.vaadin.flow.router.Route; + +@Route("com.vaadin.flow.ForwardingToParametersView") +public class ForwardingToParametersView extends Div + implements BeforeEnterObserver { + @Override + public void beforeEnter(BeforeEnterEvent event) { + event.forwardTo(ForwardTargetWithParametersView.class); + } +} diff --git a/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardingView.java b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardingView.java new file mode 100644 index 00000000000..c94c4d31872 --- /dev/null +++ b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardingView.java @@ -0,0 +1,30 @@ +/* + * Copyright 2000-2024 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.vaadin.flow; + +import com.vaadin.flow.component.html.Div; +import com.vaadin.flow.router.BeforeEnterEvent; +import com.vaadin.flow.router.BeforeEnterObserver; +import com.vaadin.flow.router.Route; + +@Route("com.vaadin.flow.ForwardingView") +public class ForwardingView extends Div implements BeforeEnterObserver { + @Override + public void beforeEnter(BeforeEnterEvent event) { + event.forwardTo(ForwardTargetView.class); + } +} diff --git a/flow-tests/test-react-router/src/test/java/com/vaadin/flow/BackNavIT.java b/flow-tests/test-react-router/src/test/java/com/vaadin/flow/BackNavIT.java new file mode 100644 index 00000000000..35717877ce1 --- /dev/null +++ b/flow-tests/test-react-router/src/test/java/com/vaadin/flow/BackNavIT.java @@ -0,0 +1,121 @@ +package com.vaadin.flow; + +import org.junit.Assert; +import org.junit.Test; +import org.openqa.selenium.TimeoutException; + +import com.vaadin.flow.component.html.testbench.NativeButtonElement; +import com.vaadin.flow.component.html.testbench.SpanElement; +import com.vaadin.flow.testutil.ChromeBrowserTest; + +public class BackNavIT extends ChromeBrowserTest { + + public static final String BACK_NAV_FIRST_VIEW = "/view/com.vaadin.flow.BackNavFirstView"; + public static final String BACK_NAV_SECOND_VIEW = "/view/com.vaadin.flow.BackNavSecondView?param"; + + // Test for https://github.com/vaadin/flow/issues/19839 + @Test + public void testBackButtonAfterHistoryStateChange() { + getDriver().get(getTestURL(getRootURL(), BACK_NAV_FIRST_VIEW, null)); + + try { + waitUntil(arg -> driver.getCurrentUrl() + .endsWith(BACK_NAV_FIRST_VIEW)); + } catch (TimeoutException e) { + Assert.fail("URL wasn't updated to expected one: " + + BACK_NAV_FIRST_VIEW); + } + + $(NativeButtonElement.class).first().click(); + + try { + waitUntil(arg -> driver.getCurrentUrl() + .endsWith(BACK_NAV_SECOND_VIEW)); + } catch (TimeoutException e) { + Assert.fail("URL wasn't updated to expected one: " + + BACK_NAV_SECOND_VIEW); + } + + // Navigate back; ensure we get the first URL again + getDriver().navigate().back(); + try { + waitUntil(arg -> driver.getCurrentUrl() + .endsWith(BACK_NAV_FIRST_VIEW)); + } catch (TimeoutException e) { + Assert.fail("URL wasn't updated to expected one: " + + BACK_NAV_FIRST_VIEW); + } + + Assert.assertTrue("Expected button is not available.", + $(NativeButtonElement.class).first().isDisplayed()); + } + + @Test + public void backButtonWorksAndContentUpdatesAfterPageRefresh() { + getDriver().get(getTestURL(getRootURL(), BACK_NAV_FIRST_VIEW, null)); + + try { + waitUntil(arg -> driver.getCurrentUrl() + .endsWith(BACK_NAV_FIRST_VIEW)); + } catch (TimeoutException e) { + Assert.fail("URL wasn't updated to expected one: " + + BACK_NAV_FIRST_VIEW); + } + + $(NativeButtonElement.class).first().click(); + + try { + waitUntil(arg -> driver.getCurrentUrl() + .endsWith(BACK_NAV_SECOND_VIEW)); + } catch (TimeoutException e) { + Assert.fail("URL wasn't updated to expected one: " + + BACK_NAV_SECOND_VIEW); + } + // Refresh page + getDriver().navigate().refresh(); + + waitUntil(driver -> $(SpanElement.class).id(BackNavSecondView.CALLS) + .isDisplayed()); + + // Navigate back; ensure we get the first URL again + getDriver().navigate().back(); + + try { + waitUntil(arg -> driver.getCurrentUrl() + .endsWith(BACK_NAV_FIRST_VIEW)); + } catch (TimeoutException e) { + Assert.fail("URL wasn't updated to expected one: " + + BACK_NAV_FIRST_VIEW); + } + + Assert.assertTrue("Expected button is not available.", + $(NativeButtonElement.class).first().isDisplayed()); + } + + @Test + public void validateNoAfterNavigationForReplaceState() { + getDriver().get(getTestURL(getRootURL(), BACK_NAV_FIRST_VIEW, null)); + + try { + waitUntil(arg -> driver.getCurrentUrl() + .endsWith(BACK_NAV_FIRST_VIEW)); + } catch (TimeoutException e) { + Assert.fail("URL wasn't updated to expected one: " + + BACK_NAV_FIRST_VIEW); + } + + $(NativeButtonElement.class).first().click(); + + try { + waitUntil(arg -> driver.getCurrentUrl() + .endsWith(BACK_NAV_SECOND_VIEW)); + } catch (TimeoutException e) { + Assert.fail("URL wasn't updated to expected one: " + + BACK_NAV_SECOND_VIEW); + } + + Assert.assertEquals("Second view: 1", + $(SpanElement.class).id(BackNavSecondView.CALLS).getText()); + } + +} diff --git a/flow-tests/test-react-router/src/test/java/com/vaadin/flow/ForwardTargetIT.java b/flow-tests/test-react-router/src/test/java/com/vaadin/flow/ForwardTargetIT.java new file mode 100644 index 00000000000..332462847c0 --- /dev/null +++ b/flow-tests/test-react-router/src/test/java/com/vaadin/flow/ForwardTargetIT.java @@ -0,0 +1,61 @@ +package com.vaadin.flow; + +import org.junit.Assert; +import org.junit.Test; +import org.openqa.selenium.TimeoutException; + +import com.vaadin.flow.component.html.testbench.SpanElement; +import com.vaadin.flow.testutil.ChromeBrowserTest; + +public class ForwardTargetIT extends ChromeBrowserTest { + + public static final String FORWARD_TARGET_VIEW = "/view/com.vaadin.flow.ForwardTargetView"; + + // Test for https://github.com/vaadin/flow/issues/19794 + @Test + public void testUrlIsCorrectAfterForward() { + getDriver().get(getTestURL(getRootURL(), FORWARD_TARGET_VIEW, null)); + + try { + waitUntil(arg -> driver.getCurrentUrl() + .endsWith(FORWARD_TARGET_VIEW)); + } catch (TimeoutException e) { + Assert.fail("URL wasn't updated to expected one: " + + FORWARD_TARGET_VIEW); + } + + getDriver().get(getTestURL(getRootURL(), + "/view/com.vaadin.flow.ForwardingView", null)); + + try { + waitUntil(arg -> driver.getCurrentUrl() + .endsWith(FORWARD_TARGET_VIEW)); + } catch (TimeoutException e) { + Assert.fail("URL wasn't updated to expected one: " + + FORWARD_TARGET_VIEW); + } + + Assert.assertTrue("URL was not the expected one after forward call", + driver.getCurrentUrl().endsWith(FORWARD_TARGET_VIEW)); + } + + // Test for https://github.com/vaadin/flow/issues/19822 + @Test + public void testSetParameterCalledOnlyOnceAfterForward() { + getDriver().get(getTestURL(getRootURL(), + "/view/com.vaadin.flow.ForwardingToParametersView", null)); + + try { + waitUntil(arg -> driver.getCurrentUrl().endsWith( + "/view/com.vaadin.flow.ForwardTargetWithParametersView")); + } catch (TimeoutException e) { + Assert.fail("URL wasn't updated to expected one: " + + "/view/com.vaadin.flow.ForwardTargetWithParametersView"); + } + + Assert.assertEquals("setParameter was called more than once", 1, + $(SpanElement.class).all().stream() + .filter(span -> span.getText().equals("setParameter")) + .count()); + } +} diff --git a/flow-tests/test-redeployment-no-cache/pom.xml b/flow-tests/test-redeployment-no-cache/pom.xml index a5c50b6ce7e..383763ae9b3 100644 --- a/flow-tests/test-redeployment-no-cache/pom.xml +++ b/flow-tests/test-redeployment-no-cache/pom.xml @@ -4,7 +4,7 @@ flow-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-redeployment-no-cache Test to ensure dev mode caching is not used when it's disabled diff --git a/flow-tests/test-redeployment/pom.xml b/flow-tests/test-redeployment/pom.xml index a09f314d5f5..1efd99e1d7a 100644 --- a/flow-tests/test-redeployment/pom.xml +++ b/flow-tests/test-redeployment/pom.xml @@ -4,7 +4,7 @@ flow-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-redeployment Flow tests that require redeployment during the test diff --git a/flow-tests/test-resources/pom.xml b/flow-tests/test-resources/pom.xml index 9ffde258203..087efcfbc52 100644 --- a/flow-tests/test-resources/pom.xml +++ b/flow-tests/test-resources/pom.xml @@ -5,7 +5,7 @@ com.vaadin flow-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-resources Flow Test Resources diff --git a/flow-tests/test-resources/src/main/java/com/vaadin/flow/uitest/ui/dependencies/TestVersion.java b/flow-tests/test-resources/src/main/java/com/vaadin/flow/uitest/ui/dependencies/TestVersion.java index b61503a8dc1..c60aa52a674 100644 --- a/flow-tests/test-resources/src/main/java/com/vaadin/flow/uitest/ui/dependencies/TestVersion.java +++ b/flow-tests/test-resources/src/main/java/com/vaadin/flow/uitest/ui/dependencies/TestVersion.java @@ -2,7 +2,7 @@ public class TestVersion { - public static final String VAADIN = "24.3.12"; + public static final String VAADIN = "24.4.9"; public static final String FONTAWESOME = "5.15.1"; } diff --git a/flow-tests/test-root-context/pom.xml b/flow-tests/test-root-context/pom.xml index 2365d3c010f..941ced753cd 100644 --- a/flow-tests/test-root-context/pom.xml +++ b/flow-tests/test-root-context/pom.xml @@ -4,7 +4,7 @@ com.vaadin flow-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-root-context-npm Flow root context tests in NPM dev mode diff --git a/flow-tests/test-root-context/src/test/java/com/vaadin/flow/uitest/ui/PageIT.java b/flow-tests/test-root-context/src/test/java/com/vaadin/flow/uitest/ui/PageIT.java index d430936a813..adf95eeaf07 100644 --- a/flow-tests/test-root-context/src/test/java/com/vaadin/flow/uitest/ui/PageIT.java +++ b/flow-tests/test-root-context/src/test/java/com/vaadin/flow/uitest/ui/PageIT.java @@ -9,6 +9,7 @@ import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.Keys; +import org.openqa.selenium.TimeoutException; import com.vaadin.flow.component.html.testbench.DivElement; import com.vaadin.flow.component.html.testbench.InputTextElement; @@ -52,8 +53,12 @@ public void testPageTitleClears() { } private void verifyTitle(String title) { - Assert.assertEquals("Page title does not match", title, - getDriver().getTitle()); + try { + waitUntil(driver -> driver.getTitle().equals(title)); + } catch (TimeoutException te) { + Assert.fail("Page title does not match. Expected: " + title + + ", Actual: " + driver.getTitle()); + } } private void updateTitle(String title) { diff --git a/flow-tests/test-router-custom-context/pom.xml b/flow-tests/test-router-custom-context/pom.xml index 1c1afadf8fa..a2c42996bf0 100644 --- a/flow-tests/test-router-custom-context/pom.xml +++ b/flow-tests/test-router-custom-context/pom.xml @@ -4,7 +4,7 @@ com.vaadin flow-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-router-custom-context Flow Router on custom context test diff --git a/flow-tests/test-servlet/pom.xml b/flow-tests/test-servlet/pom.xml index 9cc7f77217b..313755d431f 100644 --- a/flow-tests/test-servlet/pom.xml +++ b/flow-tests/test-servlet/pom.xml @@ -4,7 +4,7 @@ com.vaadin flow-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-servlet Flow servlet registration test diff --git a/flow-tests/test-theme-no-polymer/pom.xml b/flow-tests/test-theme-no-polymer/pom.xml index 9d842f477a9..1055788054c 100644 --- a/flow-tests/test-theme-no-polymer/pom.xml +++ b/flow-tests/test-theme-no-polymer/pom.xml @@ -4,7 +4,7 @@ com.vaadin flow-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-theme-no-polymer Flow custom theme test without polymer components diff --git a/flow-tests/test-themes/pom-devbundle.xml b/flow-tests/test-themes/pom-devbundle.xml index 55852bfdcaf..a3d4a6ad8be 100644 --- a/flow-tests/test-themes/pom-devbundle.xml +++ b/flow-tests/test-themes/pom-devbundle.xml @@ -6,7 +6,7 @@ com.vaadin flow-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-themes-devbundle Flow themes tests, dev bundle diff --git a/flow-tests/test-themes/pom-production.xml b/flow-tests/test-themes/pom-production.xml index 4751d500d79..55818e6e0ac 100644 --- a/flow-tests/test-themes/pom-production.xml +++ b/flow-tests/test-themes/pom-production.xml @@ -6,7 +6,7 @@ com.vaadin flow-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-themes-production Flow themes tests, production diff --git a/flow-tests/test-themes/pom.xml b/flow-tests/test-themes/pom.xml index 483c1cb2a56..949f67c4cfd 100644 --- a/flow-tests/test-themes/pom.xml +++ b/flow-tests/test-themes/pom.xml @@ -6,7 +6,7 @@ com.vaadin flow-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-themes-hotdeploy Flow themes tests, dev hotdeploy diff --git a/flow-tests/test-webpush/pom.xml b/flow-tests/test-webpush/pom.xml index 14f007e340b..8646e5e0223 100644 --- a/flow-tests/test-webpush/pom.xml +++ b/flow-tests/test-webpush/pom.xml @@ -4,7 +4,7 @@ com.vaadin flow-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-test-webpush Flow webpush integration test diff --git a/flow-tests/vaadin-spring-tests/pom.xml b/flow-tests/vaadin-spring-tests/pom.xml index 644883e2591..6e6a0e43af9 100644 --- a/flow-tests/vaadin-spring-tests/pom.xml +++ b/flow-tests/vaadin-spring-tests/pom.xml @@ -6,7 +6,7 @@ com.vaadin flow-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT vaadin-spring-tests Vaadin Spring tests @@ -16,8 +16,8 @@ true - 24.4.11 - 9.41 + 24.4.12 + 9.41.1 @@ -177,7 +177,7 @@ de.skuzzle.enforcer restrict-imports-enforcer-rule - 2.5.0 + 2.6.0 diff --git a/flow-tests/vaadin-spring-tests/test-mvc-without-endpoints/pom.xml b/flow-tests/vaadin-spring-tests/test-mvc-without-endpoints/pom.xml index e1c829390f8..92f64b87f11 100644 --- a/flow-tests/vaadin-spring-tests/test-mvc-without-endpoints/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-mvc-without-endpoints/pom.xml @@ -6,7 +6,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-ts-mvc-without-endpoints Integration tests for a Spring MVC project without using endpoints diff --git a/flow-tests/vaadin-spring-tests/test-plain-spring-boot-reload-time/pom.xml b/flow-tests/vaadin-spring-tests/test-plain-spring-boot-reload-time/pom.xml index d3f452b1daf..9e276b5c8c7 100644 --- a/flow-tests/vaadin-spring-tests/test-plain-spring-boot-reload-time/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-plain-spring-boot-reload-time/pom.xml @@ -6,7 +6,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-plain-spring-boot-reload-time Testing reload time of a plain Spring boot project diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-contextpath/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-contextpath/pom.xml index ad9d4c09be6..1eafaecb891 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-boot-contextpath/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-boot-contextpath/pom.xml @@ -5,7 +5,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT vaadin-test-spring-boot-contextpath Vaadin Spring Boot integration tests when deployed using a context path diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-jar/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-jar/pom.xml index 701ffabc0a3..55b13240722 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-boot-jar/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-boot-jar/pom.xml @@ -5,7 +5,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT vaadin-test-spring-boot-jar Vaadin Spring Boot executable Jar integration tests diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/generator/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/generator/pom.xml index 1e230da30f7..f46a2a9051e 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/generator/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/generator/pom.xml @@ -6,7 +6,7 @@ test-spring-boot-multimodule-reload-time com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-spring-boot-multimodule-reload-time-generator The code generator Maven plugin for a Spring boot multimodule reload diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/library/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/library/pom.xml index b9911871ec5..2c43d8481b1 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/library/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/library/pom.xml @@ -6,7 +6,7 @@ test-spring-boot-multimodule-reload-time com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-spring-boot-multimodule-reload-time-library The frontend library module for a Spring boot multimodule reload time diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/pom.xml index 3cf709f06bb..772344c7eaa 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/pom.xml @@ -6,7 +6,7 @@ vaadin-spring-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-spring-boot-multimodule-reload-time The main module for a Spring boot multimodule reload time project diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/theme/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/theme/pom.xml index 039b3e5e979..922885b67ab 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/theme/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/theme/pom.xml @@ -6,7 +6,7 @@ test-spring-boot-multimodule-reload-time com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-spring-boot-multimodule-reload-time-theme The theme module for a Spring boot multimodule reload time project diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/ui/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/ui/pom.xml index fb500fd6199..ac1d95106a9 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/ui/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/ui/pom.xml @@ -6,7 +6,7 @@ com.vaadin test-spring-boot-multimodule-reload-time - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-spring-boot-multimodule-reload-time-ui The UI module for a Spring boot multimodule reload time project diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-only-prepare/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-only-prepare/pom.xml index c38e52514f6..a75a61795de 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-boot-only-prepare/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-boot-only-prepare/pom.xml @@ -5,7 +5,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT vaadin-test-spring-boot-prepare Vaadin Spring Boot integration tests with only prepare goal diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-reload-time/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-reload-time/pom.xml index 9dfb0b930f5..2349d018294 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-boot-reload-time/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-boot-reload-time/pom.xml @@ -6,7 +6,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-spring-boot-reload-time Testing reload time of a Vaadin Spring boot project diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-reverseproxy/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-reverseproxy/pom.xml index 5acc82c40f8..b714dc0fb48 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-boot-reverseproxy/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-boot-reverseproxy/pom.xml @@ -4,7 +4,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT vaadin-test-spring-boot-reverseproxy Vaadin Spring Boot integration tests when deployed behind a reverse proxy diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-scan/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-scan/pom.xml index 9f5518c0b62..af044a074dc 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-boot-scan/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-boot-scan/pom.xml @@ -6,7 +6,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT vaadin-test-spring-boot-scan Vaadin Spring Boot integration tests with custom packages to scan diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-undertow/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-undertow/pom.xml index 51c4d2ad752..22dc87c0169 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-boot-undertow/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-boot-undertow/pom.xml @@ -4,7 +4,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT vaadin-test-spring-boot-undertow Vaadin Spring Boot integration tests when running on Undertow @@ -165,4 +165,4 @@ - \ No newline at end of file + diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot/pom.xml index 43ec782e803..70b8801f68c 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-boot/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-boot/pom.xml @@ -5,7 +5,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT vaadin-test-spring-boot Vaadin Spring Boot integration tests diff --git a/flow-tests/vaadin-spring-tests/test-spring-common/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-common/pom.xml index 45bb34dfbd5..5159ad5efb1 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-common/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-common/pom.xml @@ -4,7 +4,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT vaadin-test-spring-common Flow Spring Common UI components diff --git a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/allowed-ui/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/allowed-ui/pom.xml index 05073878f71..260c641307b 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/allowed-ui/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/allowed-ui/pom.xml @@ -21,7 +21,7 @@ vaadin-test-spring-filter-packages com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT vaadin-test-spring-filter-packages-allowed-ui Test UI with allowed-packages properties diff --git a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-allowed/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-allowed/pom.xml index 4bfc2a17e1a..5cffb8ecd04 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-allowed/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-allowed/pom.xml @@ -21,7 +21,7 @@ vaadin-test-spring-filter-packages com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT vaadin-test-spring-filter-packages-lib-allowed Library with vaadin.allowed-packages property diff --git a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-blocked/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-blocked/pom.xml index 15a6afbb362..79b42eedcfb 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-blocked/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-blocked/pom.xml @@ -21,7 +21,7 @@ vaadin-test-spring-filter-packages com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT vaadin-test-spring-filter-packages-lib-blocked Library with vaadin.blocked-packages property diff --git a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-exclude/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-exclude/pom.xml index 71fb3f7a0ce..981e4474394 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-exclude/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-exclude/pom.xml @@ -21,7 +21,7 @@ vaadin-test-spring-filter-packages com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT vaadin-test-spring-filter-packages-lib-exclude Library with vaadin.blocked-jar property diff --git a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/pom.xml index 5337212328b..f24fd53e5be 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/pom.xml @@ -21,7 +21,7 @@ vaadin-spring-tests com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT vaadin-test-spring-filter-packages The main module for a Spring boot package filter tests diff --git a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/ui/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/ui/pom.xml index 9d62193152c..294f79898ca 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/ui/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/ui/pom.xml @@ -21,7 +21,7 @@ vaadin-test-spring-filter-packages com.vaadin - 24.5-SNAPSHOT + 24.6-SNAPSHOT vaadin-test-spring-filter-packages-ui jar diff --git a/flow-tests/vaadin-spring-tests/test-spring-helpers/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-helpers/pom.xml index 32300f56b6c..81f35ee595f 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-helpers/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-helpers/pom.xml @@ -4,7 +4,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT vaadin-test-spring-helpers Flow Spring test helpers diff --git a/flow-tests/vaadin-spring-tests/test-spring-security-flow-contextpath/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-security-flow-contextpath/pom.xml index e8ad2cb6ee8..810c51cb697 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-security-flow-contextpath/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-security-flow-contextpath/pom.xml @@ -5,7 +5,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-spring-security-flow-contextpath Integration tests for Vaadin Spring Security and Flow With Context Path diff --git a/flow-tests/vaadin-spring-tests/test-spring-security-flow-methodsecurity/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-security-flow-methodsecurity/pom.xml index a42cd318ae5..62ff20c1619 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-security-flow-methodsecurity/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-security-flow-methodsecurity/pom.xml @@ -5,7 +5,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-spring-security-flow-methodsecurity Vaadin Spring Security test for Enabled Method Security diff --git a/flow-tests/vaadin-spring-tests/test-spring-security-flow-reverseproxy/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-security-flow-reverseproxy/pom.xml index 5cd44a54ed3..c0e5d04e3ff 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-security-flow-reverseproxy/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-security-flow-reverseproxy/pom.xml @@ -4,7 +4,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-spring-security-flow-revereproxy Integration tests for Vaadin Spring Security and Flow when using a reverse proxy diff --git a/flow-tests/vaadin-spring-tests/test-spring-security-flow-routepathaccesschecker/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-security-flow-routepathaccesschecker/pom.xml index 68c22a60453..ee54f6ab2f2 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-security-flow-routepathaccesschecker/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-security-flow-routepathaccesschecker/pom.xml @@ -5,7 +5,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-spring-security-flow-routepathaccesscheker Integration tests for Vaadin Spring Security and Flow secured by RoutePathAccessChecker diff --git a/flow-tests/vaadin-spring-tests/test-spring-security-flow-standalone-routepathaccesschecker/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-security-flow-standalone-routepathaccesschecker/pom.xml index 2073170ca29..3f076046370 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-security-flow-standalone-routepathaccesschecker/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-security-flow-standalone-routepathaccesschecker/pom.xml @@ -5,7 +5,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-spring-security-flow-standalone-routepathaccesscheker Integration tests for Spring Security with standalone RoutePathAccessChecker diff --git a/flow-tests/vaadin-spring-tests/test-spring-security-flow-urlmapping/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-security-flow-urlmapping/pom.xml index 2d01480996f..224430765f6 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-security-flow-urlmapping/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-security-flow-urlmapping/pom.xml @@ -5,7 +5,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-spring-security-flow-urlmapping Integration tests for Vaadin Spring Security and Flow With Vaadin URL mapping diff --git a/flow-tests/vaadin-spring-tests/test-spring-security-flow/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-security-flow/pom.xml index fc3efee7d18..b48ffaa7c3f 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-security-flow/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-security-flow/pom.xml @@ -5,7 +5,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-spring-security-flow Integration tests for Vaadin Spring Security and Flow diff --git a/flow-tests/vaadin-spring-tests/test-spring-security-webicons-urlmapping/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-security-webicons-urlmapping/pom.xml index 6c05c8c7e11..d5873153c66 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-security-webicons-urlmapping/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-security-webicons-urlmapping/pom.xml @@ -5,7 +5,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-spring-security-webicons-urlmapping Integration tests for Vaadin Spring Security and Custom PWA icon, Favicon paths and URL mapping diff --git a/flow-tests/vaadin-spring-tests/test-spring-security-webicons/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-security-webicons/pom.xml index 742e4a2ac23..70e13a468b0 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-security-webicons/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-security-webicons/pom.xml @@ -5,7 +5,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT test-spring-security-webicons Integration tests for Vaadin Spring Security and Custom PWA icon and Favicon paths diff --git a/flow-tests/vaadin-spring-tests/test-spring-war/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-war/pom.xml index 8f1b5f05cd6..062e5ded05e 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-war/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-war/pom.xml @@ -5,7 +5,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT vaadin-test-spring-war Vaadin Spring Boot deployable integration tests diff --git a/flow-tests/vaadin-spring-tests/test-spring-white-list/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-white-list/pom.xml index 8a079dac912..31259769363 100644 --- a/flow-tests/vaadin-spring-tests/test-spring-white-list/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring-white-list/pom.xml @@ -22,7 +22,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT vaadin-test-spring-white-list diff --git a/flow-tests/vaadin-spring-tests/test-spring/pom.xml b/flow-tests/vaadin-spring-tests/test-spring/pom.xml index d88c9f6027f..ddadde35e38 100644 --- a/flow-tests/vaadin-spring-tests/test-spring/pom.xml +++ b/flow-tests/vaadin-spring-tests/test-spring/pom.xml @@ -4,7 +4,7 @@ com.vaadin vaadin-spring-tests - 24.5-SNAPSHOT + 24.6-SNAPSHOT vaadin-test-spring Flow Spring deployable integration tests diff --git a/flow-webpush/pom.xml b/flow-webpush/pom.xml index 710c869f7e5..ba7d9c2d032 100644 --- a/flow-webpush/pom.xml +++ b/flow-webpush/pom.xml @@ -5,7 +5,7 @@ com.vaadin flow-project - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow-webpush diff --git a/flow/pom.xml b/flow/pom.xml index e7631b2bd2a..29cc4acd204 100644 --- a/flow/pom.xml +++ b/flow/pom.xml @@ -5,7 +5,7 @@ com.vaadin flow-project - 24.5-SNAPSHOT + 24.6-SNAPSHOT flow pom diff --git a/pom.xml b/pom.xml index 26276002e89..ce56cc9c0c0 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ flow-project Flow pom - 24.5-SNAPSHOT + 24.6-SNAPSHOT com.vaadin @@ -85,17 +85,17 @@ false - 3.3.3 + 3.4.0-M3 2.9.0 8.0.1.Final 2.0.16 2.6.1 - 2.17.2 + 2.18.0 ${jackson.version} 3.0.2 2.1.1 4.0.5 - 33.3.0-jre + 33.3.1-jre 2.1.1 @@ -106,7 +106,7 @@ 3.0.2 3.4.0 1.6.0 - 9.3.4 + 9.3.5 12.0.13 1.2.1 3.6.0 @@ -172,6 +172,14 @@ false + + repository.spring.milestone + Spring Milestone Repository + https://repo.spring.io/milestone + + true + + @@ -191,6 +199,14 @@ true + + repository.spring.milestone + Spring Milestone Repository + https://repo.spring.io/milestone + + true + + @@ -212,7 +228,7 @@ commons-io commons-io - 2.16.1 + 2.17.0 org.apache.commons @@ -241,7 +257,7 @@ net.bytebuddy byte-buddy - 1.15.1 + 1.15.3 org.ow2.asm @@ -251,7 +267,7 @@ com.vaadin license-checker - 1.13.0.alpha5 + 1.13.0.rc1 @@ -268,7 +284,7 @@ org.mockito mockito-core - 5.13.0 + 5.14.1 org.mockito @@ -472,7 +488,7 @@ de.skuzzle.enforcer restrict-imports-enforcer-rule - 2.5.0 + 2.6.0 diff --git a/vaadin-dev-server/pom.xml b/vaadin-dev-server/pom.xml index 99ac111efa2..57c97308037 100644 --- a/vaadin-dev-server/pom.xml +++ b/vaadin-dev-server/pom.xml @@ -6,7 +6,7 @@ com.vaadin flow-project - 24.5-SNAPSHOT + 24.6-SNAPSHOT vaadin-dev-server Vaadin Development Mode Server @@ -36,7 +36,7 @@ com.vaadin open - 8.5.0.2 + 8.5.0.3 diff --git a/vaadin-dev-server/src/main/frontend/vaadin-dev-tools.ts b/vaadin-dev-server/src/main/frontend/vaadin-dev-tools.ts index 1baaaf47944..c2fca024438 100644 --- a/vaadin-dev-server/src/main/frontend/vaadin-dev-tools.ts +++ b/vaadin-dev-server/src/main/frontend/vaadin-dev-tools.ts @@ -589,9 +589,6 @@ export class VaadinDevTools extends LitElement { return active === null || active !== 'false'; } - @property({ type: String, attribute: false }) - splashMessage?: string; - @property({ type: String, attribute: false }) frontendStatus: ConnectionStatus = ConnectionStatus.UNAVAILABLE; @@ -609,8 +606,6 @@ export class VaadinDevTools extends LitElement { private nextMessageId: number = 1; - private disableEventListener?: EventListener; - private transitionDuration: number = 0; elementTelemetry() { @@ -662,7 +657,6 @@ export class VaadinDevTools extends LitElement { }) }); } else { - this.showSplashMessage('Reloading…'); const lastReload = window.sessionStorage.getItem(VaadinDevTools.TRIGGERED_COUNT_KEY_IN_SESSION_STORAGE); const nextReload = lastReload ? parseInt(lastReload, 10) + 1 : 1; window.sessionStorage.setItem(VaadinDevTools.TRIGGERED_COUNT_KEY_IN_SESSION_STORAGE, nextReload.toString()); @@ -759,10 +753,6 @@ export class VaadinDevTools extends LitElement { super.connectedCallback(); this.conf = (window.Vaadin as any).devToolsConf || this.conf; - // when focus or clicking anywhere, move the splash message to the message tray - this.disableEventListener = (_: any) => this.demoteSplashMessage(); - document.body.addEventListener('focus', this.disableEventListener); - document.body.addEventListener('click', this.disableEventListener); const lastReload = window.sessionStorage.getItem(VaadinDevTools.TRIGGERED_KEY_IN_SESSION_STORAGE); if (lastReload) { @@ -770,7 +760,6 @@ export class VaadinDevTools extends LitElement { const reloaded = `${`0${now.getHours()}`.slice(-2)}:${`0${now.getMinutes()}`.slice( -2 )}:${`0${now.getSeconds()}`.slice(-2)}`; - this.showSplashMessage(`Page reloaded at ${reloaded}`); window.sessionStorage.removeItem(VaadinDevTools.TRIGGERED_KEY_IN_SESSION_STORAGE); } @@ -806,29 +795,6 @@ export class VaadinDevTools extends LitElement { return o.toString(); } - disconnectedCallback() { - if (this.disableEventListener) { - document.body.removeEventListener('focus', this.disableEventListener!); - document.body.removeEventListener('click', this.disableEventListener!); - } - super.disconnectedCallback(); - } - - - showSplashMessage(msg: string | undefined) { - this.splashMessage = msg; - if (this.splashMessage) { - // automatically move notification to message tray after a certain amount of time - setTimeout(() => { - this.demoteSplashMessage(); - }, VaadinDevTools.AUTO_DEMOTE_NOTIFICATION_DELAY); - } - } - - demoteSplashMessage() { - this.showSplashMessage(undefined); - } - checkLicense(productInfo: Product) { if (this.frontendConnection) { this.frontendConnection.send('checkLicense', productInfo); @@ -848,9 +814,8 @@ export class VaadinDevTools extends LitElement { return html`

` : nothing} `; } diff --git a/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DebugWindowConnection.java b/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DebugWindowConnection.java index 6764c3e9d6a..71c5dbafa91 100644 --- a/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DebugWindowConnection.java +++ b/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DebugWindowConnection.java @@ -250,7 +250,13 @@ public boolean isLiveReload(AtmosphereResource resource) { return getRef(resource) != null; } - private void send(JsonObject msg) { + /** + * Broadcasts the given message to all connected clients. + * + * @param msg + * the message to broadcast + */ + public void broadcast(JsonObject msg) { resources.keySet().forEach(resourceRef -> { AtmosphereResource resource = resourceRef.get(); if (resource != null) { @@ -264,7 +270,7 @@ private void send(JsonObject msg) { public void reload() { JsonObject msg = Json.createObject(); msg.put("command", "reload"); - send(msg); + broadcast(msg); } @Override @@ -272,7 +278,7 @@ public void refresh(boolean refreshLayouts) { JsonObject msg = Json.createObject(); msg.put("command", "reload"); msg.put("strategy", refreshLayouts ? "full-refresh" : "refresh"); - send(msg); + broadcast(msg); } @Override @@ -281,7 +287,7 @@ public void update(String path, String content) { msg.put("command", "update"); msg.put("path", path); msg.put("content", content); - send(msg); + broadcast(msg); } @SuppressWarnings("FutureReturnValueIgnored") diff --git a/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DevModeHandlerManagerImpl.java b/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DevModeHandlerManagerImpl.java index c9b80950cf5..cde5c77efcd 100644 --- a/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DevModeHandlerManagerImpl.java +++ b/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DevModeHandlerManagerImpl.java @@ -15,6 +15,7 @@ */ package com.vaadin.base.devserver; +import com.vaadin.flow.server.Command; import jakarta.servlet.annotation.HandlesTypes; import java.io.Closeable; @@ -66,7 +67,10 @@ private static final class DevModeHandlerAlreadyStartedAttribute private DevModeHandler devModeHandler; private BrowserLauncher browserLauncher; - final private Set watchers = new HashSet<>(); + private final Set shutdownCommands = new HashSet<>(); + + private String applicationUrl; + private boolean fullyStarted = false; @Override public Class[] getHandlesTypes() { @@ -104,9 +108,9 @@ public void initDevModeHandler(Set> classes, VaadinContext context) ApplicationConfiguration config = ApplicationConfiguration .get(context); - startWatchingThemeFolder(context, config); watchExternalDependencies(context, config); + setFullyStarted(true); }); setDevModeStarted(context); this.browserLauncher = new BrowserLauncher(context); @@ -117,7 +121,7 @@ private void watchExternalDependencies(VaadinContext context, File frontendFolder = FrontendUtils.getProjectFrontendDir(config); File jarFrontendResourcesFolder = FrontendUtils .getJarResourcesFolder(frontendFolder); - watchers.add(new ExternalDependencyWatcher(context, + registerWatcherShutdownCommand(new ExternalDependencyWatcher(context, jarFrontendResourcesFolder)); } @@ -142,7 +146,8 @@ private void startWatchingThemeFolder(VaadinContext context, for (String themeName : activeThemes) { File themeFolder = ThemeUtils.getThemeFolder( FrontendUtils.getProjectFrontendDir(config), themeName); - watchers.add(new ThemeLiveUpdater(themeFolder, context)); + registerWatcherShutdownCommand( + new ThemeLiveUpdater(themeFolder, context)); } } catch (Exception e) { getLogger().error("Failed to start live-reload for theme files", e); @@ -154,15 +159,16 @@ public void stopDevModeHandler() { devModeHandler.stop(); devModeHandler = null; } - for (Closeable watcher : watchers) { + for (Command shutdownCommand : shutdownCommands) { try { - watcher.close(); - } catch (IOException e) { - getLogger().error("Failed to stop watcher " - + watcher.getClass().getName(), e); + shutdownCommand.execute(); + } catch (Exception e) { + getLogger().error("Failed to execute shut down command {}", + shutdownCommand.getClass().getName(), e); } } - watchers.clear(); + shutdownCommands.clear(); + } @Override @@ -170,11 +176,44 @@ public void launchBrowserInDevelopmentMode(String url) { browserLauncher.launchBrowserInDevelopmentMode(url); } + @Override + public void setApplicationUrl(String applicationUrl) { + this.applicationUrl = applicationUrl; + reportApplicationUrl(); + } + + private void setFullyStarted(boolean fullyStarted) { + this.fullyStarted = fullyStarted; + reportApplicationUrl(); + } + + private void reportApplicationUrl() { + if (fullyStarted && applicationUrl != null) { + getLogger().info("Application running at {}", applicationUrl); + } + } + private void setDevModeStarted(VaadinContext context) { context.setAttribute(DevModeHandlerAlreadyStartedAttribute.class, new DevModeHandlerAlreadyStartedAttribute()); } + private void registerWatcherShutdownCommand(Closeable watcher) { + registerShutdownCommand(() -> { + try { + watcher.close(); + } catch (Exception e) { + getLogger().error("Failed to stop watcher {}", + watcher.getClass().getName(), e); + } + }); + } + + @Override + public void registerShutdownCommand(Command command) { + shutdownCommands.add(command); + } + /** * Shows whether {@link DevModeHandler} has been already started or not. * diff --git a/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/startup/DevModeStartupListener.java b/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/startup/DevModeStartupListener.java index 7a792bd19f5..4c48660db85 100644 --- a/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/startup/DevModeStartupListener.java +++ b/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/startup/DevModeStartupListener.java @@ -39,6 +39,7 @@ import com.vaadin.flow.internal.DevModeHandlerManager; import com.vaadin.flow.internal.Template; import com.vaadin.flow.router.HasErrorParameter; +import com.vaadin.flow.router.Layout; import com.vaadin.flow.router.Route; import com.vaadin.flow.server.LoadDependenciesOnStartup; import com.vaadin.flow.server.PWA; @@ -68,7 +69,7 @@ JavaScript.Container.class, Theme.class, NoTheme.class, HasErrorParameter.class, PWA.class, AppShellConfigurator.class, Template.class, LoadDependenciesOnStartup.class, - TypeScriptBootstrapModifier.class, Component.class }) + TypeScriptBootstrapModifier.class, Component.class, Layout.class }) @WebListener public class DevModeStartupListener implements VaadinServletContextStartupInitializer, Serializable, diff --git a/vaadin-dev-server/src/test/java/com/vaadin/base/devserver/startup/DevModeClassFinderTest.java b/vaadin-dev-server/src/test/java/com/vaadin/base/devserver/startup/DevModeClassFinderTest.java index 0cdf55312fe..b0d3ab49511 100644 --- a/vaadin-dev-server/src/test/java/com/vaadin/base/devserver/startup/DevModeClassFinderTest.java +++ b/vaadin-dev-server/src/test/java/com/vaadin/base/devserver/startup/DevModeClassFinderTest.java @@ -37,6 +37,7 @@ import com.vaadin.flow.component.page.AppShellConfigurator; import com.vaadin.flow.internal.Template; import com.vaadin.flow.router.HasErrorParameter; +import com.vaadin.flow.router.Layout; import com.vaadin.flow.router.Route; import com.vaadin.flow.server.LoadDependenciesOnStartup; import com.vaadin.flow.server.PWA; @@ -69,7 +70,8 @@ public void applicableClasses_knownClasses() { CssImport.Container.class, Theme.class, NoTheme.class, HasErrorParameter.class, PWA.class, AppShellConfigurator.class, Template.class, LoadDependenciesOnStartup.class, - Component.class, TypeScriptBootstrapModifier.class); + Component.class, TypeScriptBootstrapModifier.class, + Layout.class); for (Class clz : classes) { assertTrue("should be a known class " + clz.getName(), diff --git a/vaadin-spring/pom.xml b/vaadin-spring/pom.xml index ffdfd50f498..1e5c1215687 100644 --- a/vaadin-spring/pom.xml +++ b/vaadin-spring/pom.xml @@ -7,7 +7,7 @@ com.vaadin flow-project - 24.5-SNAPSHOT + 24.6-SNAPSHOT vaadin-spring diff --git a/vaadin-spring/src/main/java/com/vaadin/flow/spring/DevModeBrowserLauncher.java b/vaadin-spring/src/main/java/com/vaadin/flow/spring/DevModeBrowserLauncher.java index 3b6dce95a80..66ab4045576 100644 --- a/vaadin-spring/src/main/java/com/vaadin/flow/spring/DevModeBrowserLauncher.java +++ b/vaadin-spring/src/main/java/com/vaadin/flow/spring/DevModeBrowserLauncher.java @@ -50,9 +50,8 @@ public void ready(ConfigurableApplicationContext context, VaadinConfigurationProperties properties = context .getBean(VaadinConfigurationProperties.class); - if (properties.isLaunchBrowser()) { - launchBrowserInDevelopmentMode(context); - } + maybeLaunchBrowserInDevelopmentMode(context, + properties.isLaunchBrowser()); } catch (Exception e) { getLogger().debug("Failed to launch browser", e); } @@ -66,8 +65,11 @@ public void ready(ConfigurableApplicationContext context, * * @param appContext * the application context + * @param launch + * true to launch the browser, false to only report the url */ - private void launchBrowserInDevelopmentMode(ApplicationContext appContext) { + private void maybeLaunchBrowserInDevelopmentMode( + ApplicationContext appContext, boolean launch) { if (!(appContext instanceof GenericWebApplicationContext)) { getLogger().warn( "Unable to determine production mode for an Spring Boot application context of type " @@ -82,8 +84,11 @@ private void launchBrowserInDevelopmentMode(ApplicationContext appContext) { DevModeHandlerManager devModeHandlerManager = lookup .lookup(DevModeHandlerManager.class); if (devModeHandlerManager != null) { - devModeHandlerManager - .launchBrowserInDevelopmentMode(getUrl(webAppContext)); + String url = getUrl(webAppContext); + devModeHandlerManager.setApplicationUrl(url); + if (launch) { + devModeHandlerManager.launchBrowserInDevelopmentMode(url); + } } } diff --git a/vaadin-spring/src/main/java/com/vaadin/flow/spring/ReloadCache.java b/vaadin-spring/src/main/java/com/vaadin/flow/spring/ReloadCache.java index 273a0cd0bb3..40446a3ecb8 100644 --- a/vaadin-spring/src/main/java/com/vaadin/flow/spring/ReloadCache.java +++ b/vaadin-spring/src/main/java/com/vaadin/flow/spring/ReloadCache.java @@ -29,6 +29,7 @@ class ReloadCache implements Serializable { static Set skippedResources = new HashSet<>(); static Set dynamicWhiteList; static Set routePackages; + static Set layoutPackages; static Set jarClassNames = new HashSet<>(); static Set> jarClasses = new HashSet<>(); } \ No newline at end of file diff --git a/vaadin-spring/src/main/java/com/vaadin/flow/spring/VaadinServletContextInitializer.java b/vaadin-spring/src/main/java/com/vaadin/flow/spring/VaadinServletContextInitializer.java index 52cd193c24a..3f32b6e0dac 100644 --- a/vaadin-spring/src/main/java/com/vaadin/flow/spring/VaadinServletContextInitializer.java +++ b/vaadin-spring/src/main/java/com/vaadin/flow/spring/VaadinServletContextInitializer.java @@ -21,7 +21,6 @@ import jakarta.servlet.ServletContextListener; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.HandlesTypes; - import java.io.File; import java.io.IOException; import java.io.Serializable; @@ -65,6 +64,7 @@ import com.vaadin.flow.di.LookupInitializer; import com.vaadin.flow.internal.DevModeHandlerManager; import com.vaadin.flow.router.HasErrorParameter; +import com.vaadin.flow.router.Layout; import com.vaadin.flow.router.Route; import com.vaadin.flow.router.RouteAlias; import com.vaadin.flow.router.RouteConfiguration; @@ -75,7 +75,6 @@ import com.vaadin.flow.server.RouteRegistry; import com.vaadin.flow.server.VaadinServletContext; import com.vaadin.flow.server.communication.IndexHtmlRequestHandler; -import com.vaadin.flow.router.Layout; import com.vaadin.flow.server.startup.AbstractRouteRegistryInitializer; import com.vaadin.flow.server.startup.AnnotationValidator; import com.vaadin.flow.server.startup.ApplicationConfiguration; @@ -327,7 +326,7 @@ public void failFastContextInitialized(ServletContextEvent event) { getLogger().debug("There are no discovered routes yet. " + "Start to collect all routes from the classpath..."); try { - Collection routePackages = null; + Collection routePackages; if (devModeCachingEnabled && ReloadCache.routePackages != null) { routePackages = ReloadCache.routePackages; @@ -356,11 +355,27 @@ public void failFastContextInitialized(ServletContextEvent event) { "There are {} navigation targets after filtering route classes: {}", navigationTargets.size(), navigationTargets); + Collection layoutPackages; + if (devModeCachingEnabled + && ReloadCache.layoutPackages != null) { + layoutPackages = ReloadCache.layoutPackages; + } else { + layoutPackages = getDefaultPackages(); + } + Set> layoutClasses = findByAnnotation( - routePackages, Layout.class) + layoutPackages, Layout.class) .collect(Collectors.toSet()); + + if (devModeCachingEnabled) { + ReloadCache.layoutPackages = layoutClasses.stream() + .map(Class::getPackageName) + .collect(Collectors.toSet()); + } + RouteRegistryInitializer .validateLayoutAnnotations(layoutClasses); + // Collect all layouts to use with Hilla as a main layout layoutClasses.stream().filter( clazz -> RouterLayout.class.isAssignableFrom(clazz)) @@ -1070,7 +1085,7 @@ private Resource[] collectResources(String locationPattern) AtomicBoolean parentIsAllowedByPackageProperties = new AtomicBoolean( true); if (parents.stream() - .anyMatch(parent -> shouldPathBeScanned( + .allMatch(parent -> shouldPathBeScanned( path.substring(parent.length()), parent, parentIsAllowedByPackageProperties))) { diff --git a/vaadin-spring/src/test/java/com/vaadin/flow/spring/DevModeHandlerStopTest.java b/vaadin-spring/src/test/java/com/vaadin/flow/spring/DevModeHandlerStopTest.java index 9cd2a6fe2b9..36db79851be 100644 --- a/vaadin-spring/src/test/java/com/vaadin/flow/spring/DevModeHandlerStopTest.java +++ b/vaadin-spring/src/test/java/com/vaadin/flow/spring/DevModeHandlerStopTest.java @@ -16,9 +16,14 @@ package com.vaadin.flow.spring; +import com.vaadin.base.devserver.DevModeHandlerManagerImpl; +import com.vaadin.flow.server.Command; import jakarta.servlet.ServletContext; import jakarta.servlet.ServletContextEvent; +import java.io.Closeable; +import java.io.IOException; +import java.util.HashSet; import java.util.Set; import java.util.concurrent.atomic.AtomicReference; @@ -78,6 +83,23 @@ void devModeStartupListener_contextDestroyAfterSpringContextClosed_shouldNotThro "Expecting DevModeHandler to be stopped by DevModeHandlerManager, but it was not"); } + @Test + void shutdownCommandsShouldBeExecutedOnStoppingDevModeHandlerManager() { + AtomicReference watcherClosed = new AtomicReference<>(false); + DevModeHandlerManager devModeHandlerManager = new DevModeHandlerManagerImpl(); + + Closeable mockWatcher = () -> watcherClosed.set(true); + devModeHandlerManager.registerShutdownCommand(() -> { + try { + mockWatcher.close(); + } catch (Exception ex) { + throw new IllegalStateException(ex); + } + }); + devModeHandlerManager.stopDevModeHandler(); + Assertions.assertTrue(watcherClosed.get()); + } + private static class MockDevModeHandlerManager implements DevModeHandlerManager { @@ -113,6 +135,15 @@ public DevModeHandler getDevModeHandler() { public void launchBrowserInDevelopmentMode(String url) { } + + @Override + public void setApplicationUrl(String applicationUrl) { + } + + @Override + public void registerShutdownCommand(Command command) { + + } } @TestConfiguration diff --git a/vaadin-spring/src/test/java/com/vaadin/flow/spring/security/stateless/JwtStatelessAuthenticationTest.java b/vaadin-spring/src/test/java/com/vaadin/flow/spring/security/stateless/JwtStatelessAuthenticationTest.java index fe0ea15bad9..3d4a2dd39c4 100644 --- a/vaadin-spring/src/test/java/com/vaadin/flow/spring/security/stateless/JwtStatelessAuthenticationTest.java +++ b/vaadin-spring/src/test/java/com/vaadin/flow/spring/security/stateless/JwtStatelessAuthenticationTest.java @@ -80,8 +80,7 @@ @ExtendWith(SpringExtension.class) @WebAppConfiguration @WebMvcTest -@ContextConfiguration(classes = { SecurityAutoConfiguration.class, - SpringBootAutoConfiguration.class, +@ContextConfiguration(classes = { SpringBootAutoConfiguration.class, SpringSecurityAutoConfiguration.class, JwtStatelessAuthenticationTest.WorkaroundConfig.class, JwtStatelessAuthenticationTest.SecurityConfig.class })