diff --git a/package-lock.json b/package-lock.json index d8402136..2c89d161 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,7 @@ "@xterm/addon-fit": "^0.11.0", "animate.css": "^4.1.1", "apexcharts": "^5.10.4", - "axios": "1.15.0", + "axios": "1.13.5", "buefy": "^3.0.3", "bulma": "^1.0.2", "bulma-block-list": "^1.1.0", @@ -73,7 +73,7 @@ "otpauth": "^9.5.0", "prettier": "2.8.8", "sass-embedded": "^1.81.0", - "vite": "8.0.5", + "vite": "7.1.11", "vite-plugin-pwa": "^1.0.2", "vite-plugin-vue-devtools": "^7.5.4", "vitest": "^2.1.9" @@ -230,8 +230,8 @@ "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -261,6 +261,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -556,6 +557,7 @@ "version": "7.29.2", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.28.6", @@ -1947,13 +1949,6 @@ "node": ">=0.12.0" } }, - "node_modules/@bubblewrap/core/node_modules/undici-types": { - "version": "7.19.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz", - "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==", - "license": "MIT", - "optional": true - }, "node_modules/@bubblewrap/validator": { "version": "1.22.0", "resolved": "https://registry.npmjs.org/@bubblewrap/validator/-/validator-1.22.0.tgz", @@ -1971,7 +1966,7 @@ "version": "2.11.0", "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.11.0.tgz", "integrity": "sha512-sBXGT13cpmPR5BMgHE6UEEfEaShh5Ror6rfN3yEK5si7QVrtZg8LEPQb0VVhiLRUslD2yLnXtnRzG035J/mZXQ==", - "devOptional": true, + "dev": true, "license": "(Apache-2.0 AND BSD-3-Clause)" }, "node_modules/@creativebulma/bulma-badge": { @@ -2075,7 +2070,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=20.19.0" }, @@ -2124,28 +2118,18 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=20.19.0" } }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", - "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", - "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", "cpu": [ "ppc64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2156,12 +2140,13 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", - "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2172,12 +2157,13 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", - "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2188,12 +2174,13 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", - "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2204,12 +2191,13 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", - "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2220,12 +2208,13 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", - "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2236,12 +2225,13 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", - "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2252,12 +2242,13 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", - "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2268,12 +2259,13 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", - "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2284,12 +2276,13 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", - "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2300,12 +2293,13 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", - "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", "cpu": [ "ia32" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2316,12 +2310,13 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", - "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", "cpu": [ "loong64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2332,12 +2327,13 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", - "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", "cpu": [ "mips64el" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2348,12 +2344,13 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", - "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", "cpu": [ "ppc64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2364,12 +2361,13 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", - "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", "cpu": [ "riscv64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2380,12 +2378,13 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", - "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", "cpu": [ "s390x" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2396,12 +2395,13 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", - "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2412,12 +2412,13 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", - "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2428,12 +2429,13 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", - "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2444,12 +2446,13 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", - "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2460,12 +2463,13 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", - "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2476,12 +2480,13 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", - "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2492,12 +2497,13 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", - "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2508,12 +2514,13 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", - "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2524,28 +2531,13 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", - "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", "cpu": [ "ia32" ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", - "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", - "cpu": [ - "x64" - ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2588,7 +2580,6 @@ "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-6.1.20.tgz", "integrity": "sha512-1cukXLlePFiJ8YKXn/4tMKsy0etxYLCkXk8nUCFi11nRONF2Ba2CD5b21/ovtOO2tL6afTJfwmc1ed3HG7eB1g==", "license": "MIT", - "peer": true, "dependencies": { "preact": "~10.12.1" } @@ -2832,7 +2823,6 @@ "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.22.12.tgz", "integrity": "sha512-xcmww1O/JFP2MrlGUMd3Q78S3Qu6W3mYTXYuIqFq33EorgYHV/HqymHfXy9GjiCJ7OI+7lWx6nYFOzU7M4rd1Q==", "license": "MIT", - "peer": true, "dependencies": { "@jimp/core": "^0.22.12" } @@ -2869,7 +2859,6 @@ "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.22.12.tgz", "integrity": "sha512-xslz2ZoFZOPLY8EZ4dC29m168BtDx95D6K80TzgUi8gqT7LY6CsajWO0FAxDwHz6h0eomHMfyGX0stspBrTKnQ==", "license": "MIT", - "peer": true, "dependencies": { "@jimp/utils": "^0.22.12" }, @@ -2882,7 +2871,6 @@ "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.22.12.tgz", "integrity": "sha512-S0vJADTuh1Q9F+cXAwFPlrKWzDj2F9t/9JAbUvaaDuivpyWuImEKXVz5PUZw2NbpuSHjwssbTpOZ8F13iJX4uw==", "license": "MIT", - "peer": true, "dependencies": { "@jimp/utils": "^0.22.12" }, @@ -2907,7 +2895,6 @@ "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.22.12.tgz", "integrity": "sha512-xImhTE5BpS8xa+mAN6j4sMRWaUgUDLoaGHhJhpC+r7SKKErYDR0WQV4yCE4gP+N0gozD0F3Ka1LUSaMXrn7ZIA==", "license": "MIT", - "peer": true, "dependencies": { "@jimp/utils": "^0.22.12", "tinycolor2": "^1.6.0" @@ -2951,7 +2938,6 @@ "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.22.12.tgz", "integrity": "sha512-FNuUN0OVzRCozx8XSgP9MyLGMxNHHJMFt+LJuFjn1mu3k0VQxrzqbN06yIl46TVejhyAhcq5gLzqmSCHvlcBVw==", "license": "MIT", - "peer": true, "dependencies": { "@jimp/utils": "^0.22.12" }, @@ -3075,7 +3061,6 @@ "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.22.12.tgz", "integrity": "sha512-3NyTPlPbTnGKDIbaBgQ3HbE6wXbAlFfxHVERmrbqAi8R3r6fQPxpCauA8UVDnieg5eo04D0T8nnnNIX//i/sXg==", "license": "MIT", - "peer": true, "dependencies": { "@jimp/utils": "^0.22.12" }, @@ -3088,7 +3073,6 @@ "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.22.12.tgz", "integrity": "sha512-9YNEt7BPAFfTls2FGfKBVgwwLUuKqy+E8bDGGEsOqHtbuhbshVGxN2WMZaD4gh5IDWvR+emmmPPWGgaYNYt1gA==", "license": "MIT", - "peer": true, "dependencies": { "@jimp/utils": "^0.22.12" }, @@ -3104,7 +3088,6 @@ "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.22.12.tgz", "integrity": "sha512-dghs92qM6MhHj0HrV2qAwKPMklQtjNpoYgAB94ysYpsXslhRTiPisueSIELRwZGEr0J0VUxpUY7HgJwlSIgGZw==", "license": "MIT", - "peer": true, "dependencies": { "@jimp/utils": "^0.22.12" }, @@ -3239,6 +3222,7 @@ "version": "2.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -3258,7 +3242,7 @@ "version": "0.3.11", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -3307,24 +3291,6 @@ "@types/gapi.client.discovery-v1": "*" } }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.3.tgz", - "integrity": "sha512-xK9sGVbJWYb08+mTJt3/YV24WxvxpXcXtP6B172paPZ+Ts69Re9dAr7lKwJoeIx8OoeuimEiRZ7umkiUVClmmQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "@tybys/wasm-util": "^0.10.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" - } - }, "node_modules/@noble/hashes": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz", @@ -3345,15 +3311,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@oxc-project/types": { - "version": "0.122.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.122.0.tgz", - "integrity": "sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/Boshen" - } - }, "node_modules/@parcel/watcher": { "version": "2.5.6", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", @@ -3909,246 +3866,6 @@ "node": ">= 10" } }, - "node_modules/@rolldown/binding-android-arm64": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.12.tgz", - "integrity": "sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.12.tgz", - "integrity": "sha512-cFYr6zTG/3PXXF3pUO+umXxt1wkRK/0AYT8lDwuqvRC+LuKYWSAQAQZjCWDQpAH172ZV6ieYrNnFzVVcnSflAg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.12.tgz", - "integrity": "sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.12.tgz", - "integrity": "sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.12.tgz", - "integrity": "sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.12.tgz", - "integrity": "sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.12.tgz", - "integrity": "sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.12.tgz", - "integrity": "sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.12.tgz", - "integrity": "sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.12.tgz", - "integrity": "sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.12.tgz", - "integrity": "sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.12.tgz", - "integrity": "sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.12.tgz", - "integrity": "sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg==", - "cpu": [ - "wasm32" - ], - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^1.1.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.12.tgz", - "integrity": "sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.12.tgz", - "integrity": "sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, "node_modules/@rolldown/pluginutils": { "version": "1.0.0-rc.2", "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.2.tgz", @@ -4234,6 +3951,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4247,6 +3965,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4260,6 +3979,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4273,6 +3993,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4286,6 +4007,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4299,6 +4021,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4312,6 +4035,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4325,6 +4049,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4338,6 +4063,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4351,6 +4077,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4364,6 +4091,7 @@ "cpu": [ "loong64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4377,6 +4105,7 @@ "cpu": [ "loong64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4390,6 +4119,7 @@ "cpu": [ "ppc64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4403,6 +4133,7 @@ "cpu": [ "ppc64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4416,6 +4147,7 @@ "cpu": [ "riscv64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4429,6 +4161,7 @@ "cpu": [ "riscv64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4442,6 +4175,7 @@ "cpu": [ "s390x" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4455,6 +4189,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4468,6 +4203,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4481,6 +4217,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4494,6 +4231,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4507,6 +4245,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4520,6 +4259,7 @@ "cpu": [ "ia32" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4533,6 +4273,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4612,16 +4353,6 @@ "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", "license": "MIT" }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@types/cli-progress": { "version": "3.11.6", "resolved": "https://registry.npmjs.org/@types/cli-progress/-/cli-progress-3.11.6.tgz", @@ -4671,6 +4402,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, "license": "MIT" }, "node_modules/@types/event-calendar__core": { @@ -5349,21 +5081,6 @@ "vue": "^3.0.0" } }, - "node_modules/@vue/devtools-core/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/@vue/devtools-core/node_modules/nanoid": { "version": "5.1.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.7.tgz", @@ -5383,95 +5100,6 @@ "node": "^18 || >=20" } }, - "node_modules/@vue/devtools-core/node_modules/vite": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.2.tgz", - "integrity": "sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "esbuild": "^0.27.0", - "fdir": "^6.5.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", - "tinyglobby": "^0.2.15" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "lightningcss": "^1.21.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/@vue/devtools-core/node_modules/vite-hot-client": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/vite-hot-client/-/vite-hot-client-2.1.0.tgz", - "integrity": "sha512-7SpgZmU7R+dDnSmvXE1mfDtnHLHQSisdySVR7lO8ceAXvM0otZeuQQ6C8LrS5d/aYyP/QZ0hI0L+dIPrm4YlFQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0" - } - }, "node_modules/@vue/devtools-kit": { "version": "7.7.9", "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.9.tgz", @@ -5746,9 +5374,8 @@ "version": "8.16.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", - "devOptional": true, + "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -5783,7 +5410,6 @@ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -5877,8 +5503,7 @@ "version": "5.10.4", "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-5.10.4.tgz", "integrity": "sha512-gt0VUqZ2+mr25ScbUcKZgJr96jKYm4vjOcxEWCEh/E5F4dWqhyo3dBhPRvNNnkKiWxkMd2cBwj3ZYH3rK39fkA==", - "license": "SEE LICENSE IN LICENSE", - "peer": true + "license": "SEE LICENSE IN LICENSE" }, "node_modules/aria-query": { "version": "5.3.1", @@ -5998,15 +5623,14 @@ } }, "node_modules/axios": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.15.0.tgz", - "integrity": "sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", + "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", "license": "MIT", - "peer": true, "dependencies": { "follow-redirects": "^1.15.11", "form-data": "^4.0.5", - "proxy-from-env": "^2.1.0" + "proxy-from-env": "^1.1.0" } }, "node_modules/axobject-query": { @@ -6217,7 +5841,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -6302,8 +5925,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/bulma/-/bulma-1.0.4.tgz", "integrity": "sha512-Ffb6YGXDiZYX3cqvSbHWqQ8+LkX6tVoTcZuVB3lm93sbAVXlO0D6QlOTMnV6g18gILpAXqkG2z9hf9z4hCjz2g==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/bulma-block-list": { "version": "1.1.0", @@ -6561,7 +6183,6 @@ "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.1.tgz", "integrity": "sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==", "license": "MIT", - "peer": true, "dependencies": { "@kurkle/color": "^0.3.0" }, @@ -6750,7 +6371,7 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/colors": { @@ -6824,6 +6445,7 @@ "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, "license": "MIT" }, "node_modules/copy-anything": { @@ -6975,7 +6597,6 @@ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", "license": "ISC", - "peer": true, "engines": { "node": ">=12" } @@ -7164,7 +6785,6 @@ "integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==", "deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.", "license": "MIT", - "peer": true, "dependencies": { "@vue/compiler-sfc": "2.7.16", "csstype": "^3.1.0" @@ -7337,6 +6957,7 @@ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "license": "Apache-2.0", + "optional": true, "engines": { "node": ">=8" } @@ -7598,10 +7219,10 @@ } }, "node_modules/esbuild": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", - "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", - "devOptional": true, + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, "hasInstallScript": true, "license": "MIT", "bin": { @@ -7611,32 +7232,49 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.7", - "@esbuild/android-arm": "0.27.7", - "@esbuild/android-arm64": "0.27.7", - "@esbuild/android-x64": "0.27.7", - "@esbuild/darwin-arm64": "0.27.7", - "@esbuild/darwin-x64": "0.27.7", - "@esbuild/freebsd-arm64": "0.27.7", - "@esbuild/freebsd-x64": "0.27.7", - "@esbuild/linux-arm": "0.27.7", - "@esbuild/linux-arm64": "0.27.7", - "@esbuild/linux-ia32": "0.27.7", - "@esbuild/linux-loong64": "0.27.7", - "@esbuild/linux-mips64el": "0.27.7", - "@esbuild/linux-ppc64": "0.27.7", - "@esbuild/linux-riscv64": "0.27.7", - "@esbuild/linux-s390x": "0.27.7", - "@esbuild/linux-x64": "0.27.7", - "@esbuild/netbsd-arm64": "0.27.7", - "@esbuild/netbsd-x64": "0.27.7", - "@esbuild/openbsd-arm64": "0.27.7", - "@esbuild/openbsd-x64": "0.27.7", - "@esbuild/openharmony-arm64": "0.27.7", - "@esbuild/sunos-x64": "0.27.7", - "@esbuild/win32-arm64": "0.27.7", - "@esbuild/win32-ia32": "0.27.7", - "@esbuild/win32-x64": "0.27.7" + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, "node_modules/escalade": { @@ -7907,6 +7545,7 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12.0.0" @@ -8161,6 +7800,7 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -8254,6 +7894,7 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -8677,8 +8318,7 @@ "version": "6.2.2", "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.2.tgz", "integrity": "sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==", - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/ieee754": { "version": "1.2.1", @@ -9583,6 +9223,7 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, "license": "MIT", "bin": { "json5": "lib/cli.js" @@ -9662,256 +9303,6 @@ "node": ">=6" } }, - "node_modules/lightningcss": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", - "license": "MPL-2.0", - "peer": true, - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" - } - }, - "node_modules/lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", - "cpu": [ - "arm" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, "node_modules/load-bmfont": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.2.tgz", @@ -10193,16 +9584,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/moment": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", - "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", - "license": "MIT", - "peer": true, - "engines": { - "node": "*" - } - }, "node_modules/mrmime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", @@ -10767,6 +10148,7 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=12" @@ -10964,13 +10346,10 @@ "license": "ISC" }, "node_modules/proxy-from-env": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", - "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", - "license": "MIT", - "engines": { - "node": ">=10" - } + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" }, "node_modules/psl": { "version": "1.15.0", @@ -10998,7 +10377,6 @@ "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz", "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==", "license": "MIT", - "peer": true, "dependencies": { "dijkstrajs": "^1.0.1", "pngjs": "^5.0.0", @@ -11348,51 +10726,12 @@ "node": ">= 0.8.15" } }, - "node_modules/rolldown": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.12.tgz", - "integrity": "sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A==", - "license": "MIT", - "dependencies": { - "@oxc-project/types": "=0.122.0", - "@rolldown/pluginutils": "1.0.0-rc.12" - }, - "bin": { - "rolldown": "bin/cli.mjs" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.0.0-rc.12", - "@rolldown/binding-darwin-arm64": "1.0.0-rc.12", - "@rolldown/binding-darwin-x64": "1.0.0-rc.12", - "@rolldown/binding-freebsd-x64": "1.0.0-rc.12", - "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.12", - "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.12", - "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.12", - "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.12", - "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.12", - "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.12", - "@rolldown/binding-linux-x64-musl": "1.0.0-rc.12", - "@rolldown/binding-openharmony-arm64": "1.0.0-rc.12", - "@rolldown/binding-wasm32-wasi": "1.0.0-rc.12", - "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.12", - "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.12" - } - }, - "node_modules/rolldown/node_modules/@rolldown/pluginutils": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.12.tgz", - "integrity": "sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw==", - "license": "MIT" - }, "node_modules/rollup": { "version": "4.60.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.0.tgz", "integrity": "sha512-yqjxruMGBQJ2gG4HtjZtAfXArHomazDHoFwFFmZZl0r7Pdo7qCIXKqKHZc8yeoMgzJJ+pO6pEEHa+V7uzWlrAQ==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -11439,6 +10778,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11576,7 +10916,6 @@ "resolved": "https://registry.npmjs.org/sass/-/sass-1.98.0.tgz", "integrity": "sha512-+4N/u9dZ4PrgzGgPlKnaaRQx64RO0JBKs9sDhQ2pLgN6JQZ25uPQZKQYaBJU48Kd5BxgXoJ4e09Dq7nMcOUW3A==", "license": "MIT", - "peer": true, "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.1.5", @@ -11596,9 +10935,8 @@ "version": "1.98.0", "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.98.0.tgz", "integrity": "sha512-Do7u6iRb6K+lrllcTkB1BXcHwOxcKe3rEfOF/GcCLE2w3WpddakRAosJOHFUR37DpsvimQXEt5abs3NzUjEIqg==", - "devOptional": true, + "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@bufbuild/protobuf": "^2.5.0", "colorjs.io": "^0.5.0", @@ -11945,7 +11283,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12238,7 +11576,7 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -12249,7 +11587,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -12659,7 +11997,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz", "integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "sync-message-port": "^1.0.0" @@ -12672,7 +12010,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.2.0.tgz", "integrity": "sha512-gAQ9qrUN/UCypHtGFbbe7Rc/f9bzO88IwrG8TDo/aMKAApKyD6E3W4Cm0EfhfBb6Z6SKt59tTCTfD+n1xmAvMg==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=16.0.0" @@ -12769,7 +12107,7 @@ "version": "5.46.1", "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==", - "devOptional": true, + "dev": true, "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -12788,7 +12126,7 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/tesseract.js": { @@ -12880,6 +12218,7 @@ "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", @@ -13338,20 +12677,21 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/vite": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.5.tgz", - "integrity": "sha512-nmu43Qvq9UopTRfMx2jOYW5l16pb3iDC1JH6yMuPkpVbzK0k+L7dfsEDH4jRgYFmsg0sTAqkojoZgzLMlwHsCQ==", + "version": "7.1.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.11.tgz", + "integrity": "sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "lightningcss": "^1.32.0", - "picomatch": "^4.0.4", - "postcss": "^8.5.8", - "rolldown": "1.0.0-rc.12", + "esbuild": "^0.25.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "bin": { @@ -13368,10 +12708,9 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.1.0", - "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", + "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", @@ -13384,18 +12723,15 @@ "@types/node": { "optional": true }, - "@vitejs/devtools": { - "optional": true - }, - "esbuild": { - "optional": true - }, "jiti": { "optional": true }, "less": { "optional": true }, + "lightningcss": { + "optional": true + }, "sass": { "optional": true }, @@ -13419,6 +12755,19 @@ } } }, + "node_modules/vite-hot-client": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vite-hot-client/-/vite-hot-client-2.1.0.tgz", + "integrity": "sha512-7SpgZmU7R+dDnSmvXE1mfDtnHLHQSisdySVR7lO8ceAXvM0otZeuQQ6C8LrS5d/aYyP/QZ0hI0L+dIPrm4YlFQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0" + } + }, "node_modules/vite-node": { "version": "2.1.9", "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.9.tgz", @@ -14158,6 +13507,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -14729,7 +14079,6 @@ "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", @@ -14789,7 +14138,6 @@ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.31.tgz", "integrity": "sha512-iV/sU9SzOlmA/0tygSmjkEN6Jbs3nPoIPFhCMLD2STrjgOU8DX7ZtzMhg4ahVwf5Rp9KoFzcXeB1ZrVbLBp5/Q==", "license": "MIT", - "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.31", "@vue/compiler-sfc": "3.5.31", @@ -15477,7 +14825,6 @@ "integrity": "sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==", "dev": true, "license": "MIT", - "peer": true, "bin": { "rollup": "dist/bin/rollup" }, diff --git a/package.json b/package.json index 3e4b4157..2fdbc930 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "build:dev": "vite build --mode development", "format:tests": "prettier --write \"tests/**/*.{js,ts}\"", "format:tests:check": "prettier --check \"tests/**/*.{js,ts}\"", - "postinstall": "node ../scripts/sync-playwright-root-links.mjs", + "postinstall": "node scripts/postinstall-sync-playwright-root-links.mjs", "preview": "vite preview", "preview:prod": "npm run build && npm run preview -- --host 127.0.0.1 --port 4173", "test:unit": "vitest run", @@ -48,7 +48,7 @@ "@xterm/addon-fit": "^0.11.0", "animate.css": "^4.1.1", "apexcharts": "^5.10.4", - "axios": "1.15.0", + "axios": "1.13.5", "buefy": "^3.0.3", "bulma": "^1.0.2", "bulma-block-list": "^1.1.0", @@ -93,7 +93,7 @@ "otpauth": "^9.5.0", "prettier": "2.8.8", "sass-embedded": "^1.81.0", - "vite": "8.0.5", + "vite": "7.1.11", "vite-plugin-pwa": "^1.0.2", "vite-plugin-vue-devtools": "^7.5.4", "vitest": "^2.1.9" diff --git a/scripts/postinstall-sync-playwright-root-links.mjs b/scripts/postinstall-sync-playwright-root-links.mjs new file mode 100644 index 00000000..a5b38e2c --- /dev/null +++ b/scripts/postinstall-sync-playwright-root-links.mjs @@ -0,0 +1,22 @@ +import fs from "node:fs"; +import path from "node:path"; +import { spawnSync } from "node:child_process"; + +const helperScriptPath = path.resolve(process.cwd(), "..", "scripts", "sync-playwright-root-links.mjs"); + +if (!fs.existsSync(helperScriptPath)) { + console.log( + `Skipping root Playwright link sync: helper script not found at ${helperScriptPath}.` + ); + process.exit(0); +} + +const result = spawnSync(process.execPath, [helperScriptPath], { + stdio: "inherit", +}); + +if (typeof result.status === "number") { + process.exit(result.status); +} + +process.exit(1); diff --git a/tests/e2e/admin-pos-orders.spec.ts b/tests/e2e/admin-pos-orders.spec.ts index 5f9f141b..ac2294d7 100644 --- a/tests/e2e/admin-pos-orders.spec.ts +++ b/tests/e2e/admin-pos-orders.spec.ts @@ -1306,9 +1306,7 @@ test.describe("Admin POS wash certificate completion", () => { await clickVisibleTestId(page, "pos-next-step"); await completionRequest; - await expect - .poll(() => Boolean(fixture.ordersById[materialOrderId]?.completed_at), { timeout: 10_000 }) - .toBe(true); + await expect.poll(() => Boolean(fixture.ordersById[materialOrderId]?.completed_at), { timeout: 10_000 }).toBe(true); await expect .poll( () => diff --git a/tests/e2e/change-invoice-collection.spec.ts b/tests/e2e/change-invoice-collection.spec.ts index 4f2a78d4..8f779550 100644 --- a/tests/e2e/change-invoice-collection.spec.ts +++ b/tests/e2e/change-invoice-collection.spec.ts @@ -112,9 +112,7 @@ const findMobileChangeInvoiceCollectionAction = async (page: Page): Promise - layout === "mobile" - ? findMobileChangeInvoiceCollectionAction(page) - : findDesktopChangeInvoiceCollectionAction(page); + layout === "mobile" ? findMobileChangeInvoiceCollectionAction(page) : findDesktopChangeInvoiceCollectionAction(page); test.describe("POS order actions", () => { test("change invoice collection opens picker and stays on the same page", async ({ page }) => { diff --git a/tests/e2e/i18n.smoke.spec.ts b/tests/e2e/i18n.smoke.spec.ts index 56f5bce6..cf15848c 100644 --- a/tests/e2e/i18n.smoke.spec.ts +++ b/tests/e2e/i18n.smoke.spec.ts @@ -20,15 +20,13 @@ const expectedFuldfValues = { "pos.completed": "Fuldført", "pos.finish_and_register": "Fuldfør og registrer", "pos.finish_and_register_new": "Fuldfør og registrer ny", - "tables.bookings.booking_id_required": - "Du skal indtaste booking-id for at fuldføre vask uden vaskecertifikat", + "tables.bookings.booking_id_required": "Du skal indtaste booking-id for at fuldføre vask uden vaskecertifikat", "tables.bookings.complete_wash_without_certificate": "Fuldfør vask uden vaskecertifikat", "tables.bookings.complete_wash_without_certificate_prompt": "Indtast booking-id for at fuldføre vask uden vaskecertifikat", "tables.bookings.completed": "Fuldført", "tables.bookings.wash_completed": "Vasken er fuldført", - "superuser_invoice_distribution.errors.compare_failed": - "Kunne ikke fuldføre sammenligningen", + "superuser_invoice_distribution.errors.compare_failed": "Kunne ikke fuldføre sammenligningen", } as const; function getValueAtPath(value: unknown, path: string): unknown { @@ -47,9 +45,7 @@ function collectExactStringPaths(value: unknown, exact: string, prefix = ""): st } if (Array.isArray(value)) { - return value.flatMap((entry, index) => - collectExactStringPaths(entry, exact, `${prefix}[${index}]`) - ); + return value.flatMap((entry, index) => collectExactStringPaths(entry, exact, `${prefix}[${index}]`)); } if (value && typeof value === "object") { @@ -67,9 +63,7 @@ function collectSubstringPaths(value: unknown, substring: string, prefix = ""): } if (Array.isArray(value)) { - return value.flatMap((entry, index) => - collectSubstringPaths(entry, substring, `${prefix}[${index}]`) - ); + return value.flatMap((entry, index) => collectSubstringPaths(entry, substring, `${prefix}[${index}]`)); } if (value && typeof value === "object") { diff --git a/tests/e2e/i18n.views.spec.ts b/tests/e2e/i18n.views.spec.ts index bc657d50..f2babd44 100644 --- a/tests/e2e/i18n.views.spec.ts +++ b/tests/e2e/i18n.views.spec.ts @@ -37,14 +37,9 @@ const formatUsages = (usages: ViewTranslationKeyUsage[]) => { return [...unique].sort().join(", "); }; -const formatNonLiteralCalls = ( - calls: ReturnType["nonLiteralCalls"] -): string => { +const formatNonLiteralCalls = (calls: ReturnType["nonLiteralCalls"]): string => { return calls - .map( - (call) => - `- ${call.relativePath}:${call.line}:${call.column} ${call.functionName}(...) -> ${call.snippet}` - ) + .map((call) => `- ${call.relativePath}:${call.line}:${call.column} ${call.functionName}(...) -> ${call.snippet}`) .join("\n"); }; @@ -90,9 +85,7 @@ test.describe("View i18n key coverage", () => { if (missingByLocale.size > 0) { const details = [...missingByLocale.entries()] .map(([locale, entries]) => { - const lines = entries - .map((entry) => ` - ${entry.key} <- ${formatUsages(entry.usages)}`) - .join("\n"); + const lines = entries.map((entry) => ` - ${entry.key} <- ${formatUsages(entry.usages)}`).join("\n"); return `${locale} (${entries.length} missing)\n${lines}`; }) .join("\n\n"); diff --git a/tests/e2e/pos-customer-rules.spec.js b/tests/e2e/pos-customer-rules.spec.js index a5d01e17..a029d335 100644 --- a/tests/e2e/pos-customer-rules.spec.js +++ b/tests/e2e/pos-customer-rules.spec.js @@ -97,7 +97,9 @@ test("rules tab reloads customer attributes when the panel becomes visible", asy await expect(page.locator("#invoiceWithStripe:visible")).toBeChecked(); }); -test("customer details renders top-level phone object when economic customer payload is invalid", async ({ page }, testInfo) => { +test("customer details renders top-level phone object when economic customer payload is invalid", async ({ + page, +}, testInfo) => { test.skip(!testInfo.project.name.includes("desktop"), "Desktop only"); const fixture = createPosFixture(); diff --git a/tests/e2e/pos-desktop-card-payments.spec.js b/tests/e2e/pos-desktop-card-payments.spec.js index b467d5b4..87cd3828 100644 --- a/tests/e2e/pos-desktop-card-payments.spec.js +++ b/tests/e2e/pos-desktop-card-payments.spec.js @@ -116,7 +116,9 @@ test.describe("POS desktop card payments", () => { await suppressVueDevtoolsOverlay(page); }); - test("misconfigured terminal location shows guided blocking state with setup CTA for superusers", async ({ page }) => { + test("misconfigured terminal location shows guided blocking state with setup CTA for superusers", async ({ + page, + }) => { const fixture = createCardOrderFixture({ stripeReadersError: { status: 409, diff --git a/tests/e2e/pos-mobile-order-flow.spec.js b/tests/e2e/pos-mobile-order-flow.spec.js index 675416ee..a305ed32 100644 --- a/tests/e2e/pos-mobile-order-flow.spec.js +++ b/tests/e2e/pos-mobile-order-flow.spec.js @@ -841,9 +841,7 @@ test.describe("POS mobile order flow", () => { const popup = await waitForOrderBookingPopup(page); await expectOrderBookingPopupIds(page, [8701, 8702]); await expect(popup.getByTestId("pos-mobile-order-booking-settings-8701")).toBeVisible({ timeout: 10_000 }); - await expect - .poll(() => fixture.requestCounters.orderBookingsGet, { timeout: 10_000 }) - .toBeGreaterThanOrEqual(3); + await expect.poll(() => fixture.requestCounters.orderBookingsGet, { timeout: 10_000 }).toBeGreaterThanOrEqual(3); await expect(popup.getByTestId("pos-mobile-order-booking-services-8701")).toContainText("Tank truck wash", { timeout: 10_000, }); @@ -1563,10 +1561,7 @@ test.describe("POS mobile order flow", () => { await expect.poll(() => fixture.ordersById[orderId]?.reg_1 ?? "", { timeout: 10_000 }).toBe("CD1234"); await expect - .poll( - async () => (await getStoredPosSnapshot(page))?.vehicles?.vehicle_1?.reg ?? "", - { timeout: 10_000 } - ) + .poll(async () => (await getStoredPosSnapshot(page))?.vehicles?.vehicle_1?.reg ?? "", { timeout: 10_000 }) .toBe("CD1234"); await expect .poll( @@ -1582,10 +1577,7 @@ test.describe("POS mobile order flow", () => { "CD1234" ); await expect - .poll( - async () => (await getStoredPosSnapshot(page))?.vehicles?.vehicle_1?.reg ?? "", - { timeout: 10_000 } - ) + .poll(async () => (await getStoredPosSnapshot(page))?.vehicles?.vehicle_1?.reg ?? "", { timeout: 10_000 }) .toBe("CD1234"); }); @@ -2156,9 +2148,7 @@ test.describe("POS mobile order flow", () => { await page.getByTestId("pos-mobile-next-step").click(); await expect.poll(() => fixture.requestCounters.markAsCompleted, { timeout: 10_000 }).toBe(1); await expect(fixture.markCompletedOrderIds).toContain(orderId); - await expect - .poll(() => fixture.ordersById[orderId]?.safety_seal ?? "", { timeout: 10_000 }) - .toBe("SEAL-9001"); + await expect.poll(() => fixture.ordersById[orderId]?.safety_seal ?? "", { timeout: 10_000 }).toBe("SEAL-9001"); await expect .poll( () => diff --git a/tests/e2e/subuser-management.spec.ts b/tests/e2e/subuser-management.spec.ts index 6b7ad98d..98fd4a1c 100644 --- a/tests/e2e/subuser-management.spec.ts +++ b/tests/e2e/subuser-management.spec.ts @@ -177,7 +177,10 @@ const recalculateAccessState = (subuser: MockSubuser) => { subuser.access_state = "disabled"; }; -async function primeSession(page: Page, options: { token: string; isSubuser?: boolean; selectedCustomerNumber?: number }) { +async function primeSession( + page: Page, + options: { token: string; isSubuser?: boolean; selectedCustomerNumber?: number } +) { await page.addInitScript((session) => { window.localStorage.setItem("token", session.token); if (session.isSubuser) { @@ -387,7 +390,9 @@ async function mockManagementApi( }); } -test("customer user can invite and manage grant access from /user/subusers without editing the driver account", async ({ page }) => { +test("customer user can invite and manage grant access from /user/subusers without editing the driver account", async ({ + page, +}) => { await primeSession(page, { token: "user-token" }); await mockManagementApi(page, { userPermissions: ["user"] }); @@ -433,7 +438,9 @@ test("customer user can invite and manage grant access from /user/subusers witho await page.getByRole("button", { name: "Luk" }).click(); }); -test("authorized subuser managers can access the chauffør page and the legacy grants route redirects", async ({ page }) => { +test("authorized subuser managers can access the chauffør page and the legacy grants route redirects", async ({ + page, +}) => { await primeSession(page, { token: "subuser-manager-token", isSubuser: true, @@ -461,16 +468,29 @@ test("subuser self-service profile edits still save through /subusers/me", async }); await page.goto("/user/profile"); - await expect(page.locator(".card-header").filter({ has: page.locator(".fa-user") }).first()).toBeVisible(); + await expect( + page + .locator(".card-header") + .filter({ has: page.locator(".fa-user") }) + .first() + ).toBeVisible(); - await page.locator(".card-header").filter({ has: page.locator(".fa-user") }).first().click(); + await page + .locator(".card-header") + .filter({ has: page.locator(".fa-user") }) + .first() + .click(); await page.locator('button:has-text("Rediger navn")').click(); await page.fill(".swal2-input", "Profile Driver Updated"); await page.click(".swal2-confirm"); await expect(page.locator(".swal2-title")).toContainText("Navn gemt"); await page.click(".swal2-confirm"); - await page.locator(".card-header").filter({ has: page.locator(".fa-address-card") }).first().click(); + await page + .locator(".card-header") + .filter({ has: page.locator(".fa-address-card") }) + .first() + .click(); await page.locator('button:has-text("Rediger e-mail")').click(); await page.fill(".swal2-input", "profile.updated@example.com"); await page.click(".swal2-confirm"); diff --git a/tests/e2e/subuserCompleteRegistration.spec.ts b/tests/e2e/subuserCompleteRegistration.spec.ts index 89f424cd..367904d9 100644 --- a/tests/e2e/subuserCompleteRegistration.spec.ts +++ b/tests/e2e/subuserCompleteRegistration.spec.ts @@ -47,7 +47,7 @@ test("loads the complete-registration page and completes subuser setup from the await page.click("#complete-registration-submit"); await expect(page.locator("#complete_registration_alert_success")).toHaveText("Complete registration successful"); - await expect(page.locator('a[href=\"/login/driver\"]')).toBeVisible(); + await expect(page.locator('a[href="/login/driver"]')).toBeVisible(); expect(submittedPayload).toMatchObject({ token: "valid-setup-token", name: "Driver Demo", diff --git a/tests/e2e/support/bookingFlow.ts b/tests/e2e/support/bookingFlow.ts index dcd9dc40..195d973b 100644 --- a/tests/e2e/support/bookingFlow.ts +++ b/tests/e2e/support/bookingFlow.ts @@ -61,7 +61,10 @@ async function selectBookingDateTime(page: Page) { } async function isMobileBookingWizard(page: Page) { - return page.getByTestId("booking-mobile-department-trigger").isVisible().catch(() => false); + return page + .getByTestId("booking-mobile-department-trigger") + .isVisible() + .catch(() => false); } async function clickDesktopNext(page: Page) { @@ -105,21 +108,33 @@ async function ensureVehicleTypeSelection(page: Page) { } await expect - .poll(async () => reg1TypeSelect.locator("option").count().catch(() => 0), { - timeout: 10_000, - }) + .poll( + async () => + reg1TypeSelect + .locator("option") + .count() + .catch(() => 0), + { + timeout: 10_000, + } + ) .toBeGreaterThan(1); - const selectedIndex = await reg1TypeSelect.evaluate((element) => (element as HTMLSelectElement).selectedIndex).catch(() => -1); + const selectedIndex = await reg1TypeSelect + .evaluate((element) => (element as HTMLSelectElement).selectedIndex) + .catch(() => -1); if (selectedIndex > 0) { return; } await reg1TypeSelect.selectOption({ index: 1 }); await expect - .poll(async () => reg1TypeSelect.evaluate((element) => (element as HTMLSelectElement).selectedIndex).catch(() => -1), { - timeout: 10_000, - }) + .poll( + async () => reg1TypeSelect.evaluate((element) => (element as HTMLSelectElement).selectedIndex).catch(() => -1), + { + timeout: 10_000, + } + ) .toBeGreaterThan(0); } diff --git a/tests/e2e/support/network.js b/tests/e2e/support/network.js index 57632c54..9720dff2 100644 --- a/tests/e2e/support/network.js +++ b/tests/e2e/support/network.js @@ -142,7 +142,9 @@ function isWashCertificateProduct(product) { } function orderContainsWashCertificate(posFixture, orderId) { - return (posFixture.orderItemsByOrderId[orderId] || []).some((item) => isWashCertificateProduct(item?.product || item)); + return (posFixture.orderItemsByOrderId[orderId] || []).some((item) => + isWashCertificateProduct(item?.product || item) + ); } function ensureWashCertificateAttachment(posFixture, orderId) { @@ -1312,7 +1314,7 @@ async function handlePosRoute({ route, request, parsedUrl, pathname, method, pos let bookings = Array.isArray(posFixture.orderBookings) ? posFixture.orderBookings : []; if (id > 0) { - await route.fulfill(json({ success: true, data: bookings.find((booking) => booking.id === id) || null })); + await route.fulfill(json({ success: true, data: bookings.find((booking) => booking.id === id) || null })); return true; } @@ -1593,26 +1595,26 @@ async function handlePosRoute({ route, request, parsedUrl, pathname, method, pos return true; } - if (pathname.endsWith("/orders") && method === "POST") { - const body = request.postDataJSON?.() || {}; - const orderId = posFixture.nextOrderId++; - posFixture.ordersById[orderId] = { - id: orderId, + if (pathname.endsWith("/orders") && method === "POST") { + const body = request.postDataJSON?.() || {}; + const orderId = posFixture.nextOrderId++; + posFixture.ordersById[orderId] = { + id: orderId, customer_id: Number(body.customer_id), department_id: Number(body.department_id || body.department || 12), reference: body.reference || "", po: body.po || "", safety_seal: normalizeSafetySealValue(body.safety_seal), notes: body.notes || "", - reg_1: normalizeRegistrationValue(body.reg_1), - reg_2: normalizeRegistrationValue(body.reg_2), - reg_3: normalizeRegistrationValue(body.reg_3), - invoice_collection_id: null, - booking_id: normalizePositiveIntegerValue(body.booking_id), - completed_at: null, - closed_at: null, - created_at: normalizeCreatedAtValue(body.created_at) || toSqlDateTime(), - include_in_invoice: normalizeIncludeInInvoiceValue(body.include_in_invoice), + reg_1: normalizeRegistrationValue(body.reg_1), + reg_2: normalizeRegistrationValue(body.reg_2), + reg_3: normalizeRegistrationValue(body.reg_3), + invoice_collection_id: null, + booking_id: normalizePositiveIntegerValue(body.booking_id), + completed_at: null, + closed_at: null, + created_at: normalizeCreatedAtValue(body.created_at) || toSqlDateTime(), + include_in_invoice: normalizeIncludeInInvoiceValue(body.include_in_invoice), }; posFixture.orderItemsByOrderId[orderId] = []; posFixture.economicModuleOrdersByOrderId[orderId] = { invoice_id: null, invoice_draft_id: null }; diff --git a/tests/e2e/twoFactorAuth.spec.ts b/tests/e2e/twoFactorAuth.spec.ts index d9a16270..dc5c30b9 100644 --- a/tests/e2e/twoFactorAuth.spec.ts +++ b/tests/e2e/twoFactorAuth.spec.ts @@ -154,7 +154,7 @@ async function goToUser2FAScreen(page) { await page.goto("/login"); await page.fill('input[name="customer_number"]', "12345680"); await page.fill('input[name="password"]', "5680"); - await page.click('#login-button'); + await page.click("#login-button"); await expect(page.locator('input[name="2fa_code"]')).toBeVisible(); } @@ -175,7 +175,7 @@ async function goToSubuser2FAScreen(page) { await page.fill('input[name="phone_country_code"]', "45"); await page.fill('input[name="phone"]', "42331129"); await page.fill('input[name="password"]', "Test1234"); - await page.click('#subuser-login-button'); + await page.click("#subuser-login-button"); await expect(page.locator('input[name="2fa_code"]')).toBeVisible(); } diff --git a/tests/e2e/user-orders.spec.ts b/tests/e2e/user-orders.spec.ts index 20c888ef..005c538e 100644 --- a/tests/e2e/user-orders.spec.ts +++ b/tests/e2e/user-orders.spec.ts @@ -109,12 +109,7 @@ test("[PAGES][User][/user/orders] handles sparse order fields without invalid co await page.goto("/user/orders"); await expect(page).toHaveURL(/\/user\/orders/); await expect(page.getByText("Historiske vaske").first()).toBeVisible(); - await expect( - page - .locator("table.table") - .first() - .or(page.getByTestId("pos-order-list-card-54518")) - ).toBeVisible(); + await expect(page.locator("table.table").first().or(page.getByTestId("pos-order-list-card-54518"))).toBeVisible(); await expect( page .locator("table.table tbody tr") diff --git a/tests/e2e/userAuth.spec.ts b/tests/e2e/userAuth.spec.ts index 9f1583cc..e6028b96 100644 --- a/tests/e2e/userAuth.spec.ts +++ b/tests/e2e/userAuth.spec.ts @@ -110,7 +110,10 @@ async function installSessionRoute(page, { token, sessionData }) { }); } -async function installUserLoginRoute(page, { outcome = "success", token = USER_TOKEN, errorMessage = INVALID_CREDENTIALS } = {}) { +async function installUserLoginRoute( + page, + { outcome = "success", token = USER_TOKEN, errorMessage = INVALID_CREDENTIALS } = {} +) { await page.route("**/auth/login", async (route) => { if (outcome === "error") { await json(route, { data: { message: errorMessage } }, 401); @@ -222,7 +225,7 @@ async function loginAsMockUser(page) { await openAuthPage(page, "/login", 'input[name="customer_number"]'); await page.fill('input[name="customer_number"]', "12345679"); await page.fill('input[name="password"]', "5679"); - await page.click('#login-button'); + await page.click("#login-button"); await settleAuthenticatedNavigation(page, USER_TOKEN, "/user", /\/user(?:\/)?(?:[?#].*)?$/); } @@ -243,7 +246,7 @@ async function loginAsMockSubuserByPhone(page) { await page.fill('input[name="phone_country_code"]', "45"); await page.fill('input[name="phone"]', "42331128"); await page.fill('input[name="password"]', "Test1234"); - await page.click('#subuser-login-button'); + await page.click("#subuser-login-button"); await settleAuthenticatedNavigation(page, SUBUSER_TOKEN, "/user", /\/user(?:\/)?(?:[?#].*)?$/); } @@ -261,11 +264,11 @@ async function loginAsMockSubuserByUsername(page) { await installSubuserLoginRoute(page); await openAuthPage(page, "/login/driver", 'button[id="subuser_login_method_username_button"]'); - await page.click('#subuser_login_method_username_button'); + await page.click("#subuser_login_method_username_button"); await expect(page.locator('input[name="username"]')).toBeVisible({ timeout: AUTH_FORM_TIMEOUT }); await page.fill('input[name="username"]', "testsubuser"); await page.fill('input[name="password"]', "Test1234"); - await page.click('#subuser-login-button'); + await page.click("#subuser-login-button"); await settleAuthenticatedNavigation(page, SUBUSER_TOKEN, "/user", /\/user(?:\/)?(?:[?#].*)?$/); } @@ -283,7 +286,7 @@ async function loginAsMockOperator(page) { await openAuthPage(page, "/admin/login", 'input[name="user_id"]'); await page.fill('input[name="user_id"]', "11"); await page.fill('input[name="password"]', "aef18KHAPGiu90"); - await page.click('#operator_login_button'); + await page.click("#operator_login_button"); await settleAuthenticatedNavigation(page, OPERATOR_TOKEN, "/admin", /\/admin(?:\/)?(?:[?#].*)?$/); } @@ -298,7 +301,7 @@ test("[AUTH][User][Customer number] should fail to login using invalid password" await openAuthPage(page, "/login", 'input[name="customer_number"]'); await page.fill('input[name="customer_number"]', "12345679"); await page.fill('input[name="password"]', "invalidpassword"); - await page.click('#login-button'); + await page.click("#login-button"); await expect(page.locator("#user_auth_alert_error")).toHaveText(INVALID_CREDENTIALS); }); @@ -309,7 +312,7 @@ test("[AUTH][User][Customer number] should fail to login using invalid customer await openAuthPage(page, "/login", 'input[name="customer_number"]'); await page.fill('input[name="customer_number"]', "99999999999"); await page.fill('input[name="password"]', "5679"); - await page.click('#login-button'); + await page.click("#login-button"); await expect(page.locator("#user_auth_alert_error")).toHaveText(INVALID_CREDENTIALS); }); @@ -321,11 +324,13 @@ test("[AUTH][User][Customer number] should request password reset successfully", await page.click("#forgot-password-button"); await expect(page).toHaveURL("/auth/password-reset"); await page.fill('input[name="customer_number"]', "12345679"); - await page.click('#password-reset-button'); + await page.click("#password-reset-button"); await expect(page.locator("#password_reset_alert_success")).toHaveText(PASSWORD_RESET_MESSAGE); }); -test("[AUTH][User][Customer number] should not show failure to request password reset using invalid customer number", async ({ page }) => { +test("[AUTH][User][Customer number] should not show failure to request password reset using invalid customer number", async ({ + page, +}) => { await preparePublicAuthFlow(page); await installPasswordResetRequestRoute(page); @@ -333,7 +338,7 @@ test("[AUTH][User][Customer number] should not show failure to request password await page.click("#forgot-password-button"); await expect(page).toHaveURL("/auth/password-reset"); await page.fill('input[name="customer_number"]', "99999999999"); - await page.click('#password-reset-button'); + await page.click("#password-reset-button"); await expect(page.locator("#password_reset_alert_success")).toHaveText(PASSWORD_RESET_MESSAGE); }); @@ -356,13 +361,15 @@ test("[AUTH][User][Customer number] should fail to register already existing cvr await page.fill("#customer_cvr", "41004355"); await page.fill("#email", "2jepp9350@gmail.com"); await page.fill("#customer_phone", "42331129"); - await page.click('#customer-register-button'); + await page.click("#customer-register-button"); await expect(page.locator("#customer_creation_alert_error")).toHaveText( "CVR already registered under customer number 42331128. The submitted phone number must match the customer id. Manual cleanup or reassignment is required before retrying." ); }); -test("[AUTH][User][Customer number] should fail to register already existing company phone number", async ({ page }) => { +test("[AUTH][User][Customer number] should fail to register already existing company phone number", async ({ + page, +}) => { await preparePublicAuthFlow(page); await installCustomerRegistrationRoute(page, { message: "Company phone number already registered", @@ -372,7 +379,7 @@ test("[AUTH][User][Customer number] should fail to register already existing com await page.fill("#customer_cvr", "43423010"); await page.fill("#email", "2jepp9350@gmail.com"); await page.fill("#customer_phone", "42331128"); - await page.click('#customer-register-button'); + await page.click("#customer-register-button"); await expect(page.locator("#customer_creation_alert_error")).toHaveText("Company phone number already registered"); }); @@ -388,7 +395,7 @@ test("[AUTH][Subuser][Phone number] should fail to login using invalid phone num await page.fill('input[name="phone_country_code"]', "45"); await page.fill('input[name="phone"]', "123456789"); await page.fill('input[name="password"]', "Test1234"); - await page.click('#subuser-login-button'); + await page.click("#subuser-login-button"); await expect(page.locator("#subuser_auth_alert_error")).toHaveText("Subuser not found"); }); @@ -400,7 +407,7 @@ test("[AUTH][Subuser][Phone number] should fail to login using invalid password" await page.fill('input[name="phone_country_code"]', "45"); await page.fill('input[name="phone"]', "42331128"); await page.fill('input[name="password"]', "invalidpassword"); - await page.click('#subuser-login-button'); + await page.click("#subuser-login-button"); await expect(page.locator("#subuser_auth_alert_error")).toHaveText("Invalid password"); }); @@ -413,10 +420,10 @@ test("[AUTH][Subuser][Username] should fail to login using invalid username", as await installSubuserLoginRoute(page, { outcome: "error", errorMessage: "Subuser not found" }); await page.goto("/login/driver"); - await page.click('#subuser_login_method_username_button'); + await page.click("#subuser_login_method_username_button"); await page.fill('input[name="username"]', "invalidusername"); await page.fill('input[name="password"]', "Test1234"); - await page.click('#subuser-login-button'); + await page.click("#subuser-login-button"); await expect(page.locator("#subuser_auth_alert_error")).toHaveText("Subuser not found"); }); @@ -425,10 +432,10 @@ test("[AUTH][Subuser][Username] should fail to login using invalid password", as await installSubuserLoginRoute(page, { outcome: "error", errorMessage: "Invalid password" }); await page.goto("/login/driver"); - await page.click('#subuser_login_method_username_button'); + await page.click("#subuser_login_method_username_button"); await page.fill('input[name="username"]', "testsubuser"); await page.fill('input[name="password"]', "invalidpassword"); - await page.click('#subuser-login-button'); + await page.click("#subuser-login-button"); await expect(page.locator("#subuser_auth_alert_error")).toHaveText("Invalid password"); }); @@ -441,8 +448,10 @@ test("[AUTH][Subuser][Username] should fail to register with already existing ph await page.goto("/customer-creation"); await page.fill("#driver_cvr", "41004355"); await page.fill("#driver_phone", "42331128"); - await page.click('#driver-register-button'); - await expect(page.locator("#driver_creation_alert_error")).toHaveText("Account already exists with this phone number"); + await page.click("#driver-register-button"); + await expect(page.locator("#driver_creation_alert_error")).toHaveText( + "Account already exists with this phone number" + ); }); test("[AUTH][Subuser][Username] should fail to register with invalid (7-char) CVR number", async ({ page }) => { @@ -454,7 +463,7 @@ test("[AUTH][Subuser][Username] should fail to register with invalid (7-char) CV await page.goto("/customer-creation"); await page.fill("#driver_cvr", "1234567"); await page.fill("#driver_phone", "42331128"); - await page.click('#driver-register-button'); + await page.click("#driver-register-button"); await expect(page.locator("#driver_creation_alert_error")).toHaveText( "Parameter cvr must be at least 8 characters long" ); @@ -469,7 +478,7 @@ test("[AUTH][Subuser][Username] should fail to register with invalid (9-char) CV await page.goto("/customer-creation"); await page.fill("#driver_cvr", "1234567890"); await page.fill("#driver_phone", "42331128"); - await page.click('#driver-register-button'); + await page.click("#driver-register-button"); await expect(page.locator("#driver_creation_alert_error")).toHaveText( "Parameter cvr must be at most 8 characters long" ); @@ -486,7 +495,7 @@ test("[AUTH][Operator][User ID] should fail to login using invalid user ID", asy await page.goto("/admin/login"); await page.fill('input[name="user_id"]', "99999999999"); await page.fill('input[name="password"]', "aef18KHAPGiu90"); - await page.click('#operator_login_button'); + await page.click("#operator_login_button"); await expect(page.locator("#user_auth_alert_error")).toHaveText(INVALID_CREDENTIALS); }); @@ -497,6 +506,6 @@ test("[AUTH][Operator][User ID] should fail to login using invalid password", as await page.goto("/admin/login"); await page.fill('input[name="user_id"]', "11"); await page.fill('input[name="password"]', "0000"); - await page.click('#operator_login_button'); + await page.click("#operator_login_button"); await expect(page.locator("#user_auth_alert_error")).toHaveText(INVALID_CREDENTIALS); }); diff --git a/tests/e2e/userProfileNotifications.spec.ts b/tests/e2e/userProfileNotifications.spec.ts index 41748efc..a041cf6d 100644 --- a/tests/e2e/userProfileNotifications.spec.ts +++ b/tests/e2e/userProfileNotifications.spec.ts @@ -15,8 +15,12 @@ test("[PROFILE][User][Notifications] renders the current notification controls", await expect(page.getByTestId("user-profile-notifications-edit-booking-email")).toBeVisible(); await expect(page.getByTestId("user-profile-notifications-edit-sms-phone")).toBeVisible(); - await expect(page.getByTestId("user-profile-notifications-email-switch").locator('input[type="checkbox"]')).toBeVisible(); - await expect(page.getByTestId("user-profile-notifications-sms-switch").locator('input[type="checkbox"]')).toBeVisible(); + await expect( + page.getByTestId("user-profile-notifications-email-switch").locator('input[type="checkbox"]') + ).toBeVisible(); + await expect( + page.getByTestId("user-profile-notifications-sms-switch").locator('input[type="checkbox"]') + ).toBeVisible(); }); test("[PROFILE][User][Notifications] opens the booking-email dialog", async ({ page }) => { diff --git a/tests/unit/orders-table.spec.js b/tests/unit/orders-table.spec.js index f0e187e1..e03b68f5 100644 --- a/tests/unit/orders-table.spec.js +++ b/tests/unit/orders-table.spec.js @@ -51,18 +51,21 @@ vi.mock("@/components/pagination/paginatedList.vue", () => ({ loadList: vi.fn(), })); -vi.mock("@/views/dashboards/superUserDashboard/InvoicingBillingPeriod/imports/InvoicingBillingPeriodImportInvoiceQueue.vue", () => ({ - invoiceQueue: { - invoiceCollectionQueueInProgress: ref([]), - invoiceCollectionQueueFailed: ref([]), - invoiceCollectionQueueSuccess: ref([]), - invoiceCollectionQueue: ref([]), - collectionQueueLog: ref([]), - addInvoiceCollectionsToQueue: vi.fn(), - processInvoiceCollectionQueue: vi.fn(), - retryInvoiceCollection: vi.fn(), - }, -})); +vi.mock( + "@/views/dashboards/superUserDashboard/InvoicingBillingPeriod/imports/InvoicingBillingPeriodImportInvoiceQueue.vue", + () => ({ + invoiceQueue: { + invoiceCollectionQueueInProgress: ref([]), + invoiceCollectionQueueFailed: ref([]), + invoiceCollectionQueueSuccess: ref([]), + invoiceCollectionQueue: ref([]), + collectionQueueLog: ref([]), + addInvoiceCollectionsToQueue: vi.fn(), + processInvoiceCollectionQueue: vi.fn(), + retryInvoiceCollection: vi.fn(), + }, + }) +); vi.mock("@/components/session/token/SessionUser.vue", () => ({ SessionUser: { @@ -220,7 +223,8 @@ const PosDepartmentStepMobileAttachmentStub = { }; const WhiteBoxCardStub = { - template: '
', + template: + '
', }; const InvoiceMultipleCollectionsModalStub = { @@ -373,7 +377,9 @@ describe("OrdersTable", () => { await flushPromises(); await flushPromises(); - const requestedIds = getSingleMock.mock.calls.map(([invoiceCollectionId]) => invoiceCollectionId).sort((left, right) => left - right); + const requestedIds = getSingleMock.mock.calls + .map(([invoiceCollectionId]) => invoiceCollectionId) + .sort((left, right) => left - right); expect(requestedIds).toEqual([14, 21]); expect(wrapper.text()).toContain("Faktura samling ID: 14"); diff --git a/tests/unit/pos-department-step-1.spec.js b/tests/unit/pos-department-step-1.spec.js index 3d3e9779..c316e126 100644 --- a/tests/unit/pos-department-step-1.spec.js +++ b/tests/unit/pos-department-step-1.spec.js @@ -322,9 +322,7 @@ describe("PosDepartmentStep1 duplicate warning", () => { await wrapper.get('[data-testid="pos-desktop-duplicate-warning-toggle-details"]').trigger("click"); await flushPromises(); - expect(wrapper.get('[data-testid="pos-desktop-duplicate-warning-details-inline"]').text()).toContain( - "Order #9206" - ); + expect(wrapper.get('[data-testid="pos-desktop-duplicate-warning-details-inline"]').text()).toContain("Order #9206"); await wrapper.get('[data-testid="pos-desktop-duplicate-order-open-9206"]').trigger("click"); expect(sessionState.redirectToDepartment).toHaveBeenCalledWith(12, "/modules/pos/orders/9206"); diff --git a/tests/unit/user-booking-date-time-selector.spec.js b/tests/unit/user-booking-date-time-selector.spec.js index a0cd7d4e..aa60c7eb 100644 --- a/tests/unit/user-booking-date-time-selector.spec.js +++ b/tests/unit/user-booking-date-time-selector.spec.js @@ -23,20 +23,14 @@ const messages = { }, }; -const createDate = (year, month, day, hours = 0, minutes = 0) => - new Date(year, month - 1, day, hours, minutes, 0, 0); +const createDate = (year, month, day, hours = 0, minutes = 0) => new Date(year, month - 1, day, hours, minutes, 0, 0); const serializeLocalDateTime = (value) => - [ - value.getFullYear(), - String(value.getMonth() + 1).padStart(2, "0"), - String(value.getDate()).padStart(2, "0"), - ].join("-") + + [value.getFullYear(), String(value.getMonth() + 1).padStart(2, "0"), String(value.getDate()).padStart(2, "0")].join( + "-" + ) + " " + - [ - String(value.getHours()).padStart(2, "0"), - String(value.getMinutes()).padStart(2, "0"), - ].join(":"); + [String(value.getHours()).padStart(2, "0"), String(value.getMinutes()).padStart(2, "0")].join(":"); describe("UserBookingDateTimeSelector", () => { beforeEach(() => {