git: e700246dea77 - main - www/evcc: update to 0.315.0

From: Matthias Fechner <mfechner_at_FreeBSD.org>
Date: Sat, 19 Sep 2026 08:01:29 UTC
The branch main has been updated by mfechner:

URL: https://cgit.FreeBSD.org/ports/commit/?id=e700246dea77269238c511c01ffbdb4c18a192f0

commit e700246dea77269238c511c01ffbdb4c18a192f0
Author:     Martin Matuska <mm@FreeBSD.org>
AuthorDate: 2026-09-19 07:59:18 +0000
Commit:     Matthias Fechner <mfechner@FreeBSD.org>
CommitDate: 2026-09-19 08:01:21 +0000

    www/evcc: update to 0.315.0
    
    Add patch to use vite-plus 0.2.9
    Switch to build using vite-plus
    
    Changes:        https://github.com/evcc-io/evcc/releases
    PR:             298306
---
 www/evcc/Makefile                      |  30 +-
 www/evcc/distinfo                      |  14 +-
 www/evcc/files/patch-package-lock.json | 957 +++++++++++++++++++++++++++++++++
 www/evcc/files/patch-package.json      |  25 +
 4 files changed, 1006 insertions(+), 20 deletions(-)

diff --git a/www/evcc/Makefile b/www/evcc/Makefile
index 6e4813508d37..699718ea53be 100644
--- a/www/evcc/Makefile
+++ b/www/evcc/Makefile
@@ -1,9 +1,8 @@
 PORTNAME=	evcc
-DISTVERSION=	0.313.3
-PORTREVISION=	3
+DISTVERSION=	0.315.0
 CATEGORIES=	www
-MASTER_SITES=	LOCAL/mfechner/${PORTNAME}/:npmcache
-DISTFILES=	${PORTNAME}-npm-cache-${DISTVERSION}${EXTRACT_SUFX}:npmcache
+MASTER_SITES=	LOCAL/mfechner/${PORTNAME}/:vpcache
+DISTFILES=	${PORTNAME}-vp-cache-${DISTVERSION}${EXTRACT_SUFX}:vpcache
 
 MAINTAINER=	mfechner@FreeBSD.org
 COMMENT=	Extensible EV Charge Controller
@@ -16,12 +15,12 @@ LICENSE_FILE=	${WRKSRC}/LICENSE
 ONLY_FOR_ARCHS=	amd64
 ONLY_FOR_ARCHS_REASON=	Npm cache only for amd64 generated
 
-BUILD_DEPENDS=	npm>0:www/npm
+BUILD_DEPENDS=	vite-plus>0:devel/vite-plus
 
-USES=		gmake go:1.26+,modules,no_targets nodejs:lts,build tar:zstd
+USES=		gmake go:1.27+,modules,no_targets nodejs:26,build tar:zstd
 
 # Find here: https://github.com/evcc-io/evcc/releases
-_SHA=		ec8c5ec8ea7d44d8474b570db107419dc72bd139
+_SHA=		a565f2d85048679a8222ee20b57d04f75e6fd8a5
 
 USE_GITHUB=	yes
 GH_ACCOUNT=	evcc-io
@@ -41,18 +40,23 @@ GROUPS=		evcc
 PLIST_FILES=	bin/${PORTNAME}
 
 pre-build:
-	cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} npm ci --legacy-peer-deps
-	#cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} npm run build
+	@cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} vp env off
+	@echo '{"latest":"","checked_at":'`/bin/date +1"%s"`',"prompted_at":0}' > ${WRKDIR}/.vite-plus/.upgrade-check.json
+	cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} vp install --offline --ignore-scripts --frozen-lockfile
+	@${CP} -f ${LOCALBASE}/lib/vite-plus/libvite_plus_cli.so ${WRKSRC}/node_modules/vite-plus/binding/vite-plus.freebsd-x64.node
+	@${CP} -f ${LOCALBASE}/lib/vite-plus/librolldown_binding.so ${WRKSRC}/node_modules/vite/dist/rolldown/shared/rolldown-binding.freebsd-x64.node
+	@${CP} -f ${LOCALBASE}/lib/vite-plus/librolldown_binding.so ${WRKSRC}/node_modules/@voidzero-dev/vite-plus-core/dist/rolldown/shared/rolldown-binding.freebsd-x64.node
 
 do-install:
 	${INSTALL_PROGRAM} ${WRKSRC}/evcc ${STAGEDIR}${PREFIX}/bin
 
 # (for maintainer) helper target to generate node_modules tarball
-make-npm-cache: patch
+make-vp-cache: patch
 	@cd ${WRKDIR} && ${RM} -r .npm
-	@cd ${WRKSRC} && ${SETENV} HOME=${WRKDIR} npm ci --legacy-peer-deps
+	@cd ${WRKSRC} && ${SETENV} HOME=${WRKDIR} vp env off
+	@cd ${WRKSRC} && ${SETENV} HOME=${WRKDIR} vp install --ignore-scripts
 	@cd ${WRKDIR} \
-		&& ${TAR} -c --zstd -f ${PORTNAME}-npm-cache-${DISTVERSION}${EXTRACT_SUFX} .npm \
-		&& ${ECHO} "Please upload the file: scp ${WRKDIR}/${PORTNAME}-npm-cache-${DISTVERSION}${EXTRACT_SUFX} mfechner@freefall.freebsd.org:public_distfiles/${PORTNAME}/"
+		&& ${TAR} -c --zstd -f ${PORTNAME}-vp-cache-${DISTVERSION}${EXTRACT_SUFX} .npm .vite-plus \
+		&& ${ECHO} "Please upload the file: scp ${WRKDIR}/${PORTNAME}-vp-cache-${DISTVERSION}${EXTRACT_SUFX} mfechner@freefall.freebsd.org:public_distfiles/${PORTNAME}/"
 
 .include <bsd.port.mk>
diff --git a/www/evcc/distinfo b/www/evcc/distinfo
index c21889f20437..1eb40d212cc6 100644
--- a/www/evcc/distinfo
+++ b/www/evcc/distinfo
@@ -1,7 +1,7 @@
-TIMESTAMP = 1786633522
-SHA256 (go/www_evcc/evcc-io-evcc-0.313.3_GH0/evcc-npm-cache-0.313.3.tar.zst) = 4a41a4dc7ae9e0fc95e90c053f7f64fbaede22bf01419c6207e48c82db403e4a
-SIZE (go/www_evcc/evcc-io-evcc-0.313.3_GH0/evcc-npm-cache-0.313.3.tar.zst) = 88873555
-SHA256 (go/www_evcc/evcc-io-evcc-0.313.3_GH0/go.mod) = df580a1b2641313e076aa66869ff50cc95144012ea4afbf523636b0bbd05008b
-SIZE (go/www_evcc/evcc-io-evcc-0.313.3_GH0/go.mod) = 13147
-SHA256 (go/www_evcc/evcc-io-evcc-0.313.3_GH0/evcc-io-evcc-0.313.3_GH0.tar.gz) = edc859fb65f975370e2dde823a1c85eb07dbf99d7d1e643996ef27e5c0014b55
-SIZE (go/www_evcc/evcc-io-evcc-0.313.3_GH0/evcc-io-evcc-0.313.3_GH0.tar.gz) = 3337129
+TIMESTAMP = 1789804421
+SHA256 (go/www_evcc/evcc-io-evcc-0.315.0_GH0/evcc-vp-cache-0.315.0.tar.zst) = 757b622040377c6a6784e9ccb76070ca7d6ca7d3bc33b0100975416eff85766c
+SIZE (go/www_evcc/evcc-io-evcc-0.315.0_GH0/evcc-vp-cache-0.315.0.tar.zst) = 93492553
+SHA256 (go/www_evcc/evcc-io-evcc-0.315.0_GH0/go.mod) = df9e48e543c2e32a1bceb5d6ae6df7ab88254c923322dcbd63bbc0ab9e67b252
+SIZE (go/www_evcc/evcc-io-evcc-0.315.0_GH0/go.mod) = 12999
+SHA256 (go/www_evcc/evcc-io-evcc-0.315.0_GH0/evcc-io-evcc-0.315.0_GH0.tar.gz) = eeff2663593c085864e3131de5fcd8023759ea6fa34847ff0b5e9971a2ab1487
+SIZE (go/www_evcc/evcc-io-evcc-0.315.0_GH0/evcc-io-evcc-0.315.0_GH0.tar.gz) = 3529533
diff --git a/www/evcc/files/patch-package-lock.json b/www/evcc/files/patch-package-lock.json
new file mode 100644
index 000000000000..75a81c9c95ae
--- /dev/null
+++ b/www/evcc/files/patch-package-lock.json
@@ -0,0 +1,957 @@
+--- package-lock.json.orig	2026-08-31 16:21:16.000000000 +0200
++++ package-lock.json	2026-09-07 23:13:26.026463000 +0200
+@@ -62,14 +62,15 @@
+         "ts-json-schema-generator": "^2.9.0",
+         "tsx": "^4.23.12",
+         "typescript": "^5.9.3",
+-        "vite": "npm:@voidzero-dev/vite-plus-core@0.2.6",
+-        "vite-plus": "0.2.6",
++        "vite": "npm:@voidzero-dev/vite-plus-core@0.2.9",
++        "vite-plus": "0.2.9",
+         "vitest": "4.1.10",
+         "vue-hot-reload-api": "^2.3.4",
+         "vue-tsc": "^3.3.11",
+         "wait-on": "^9.1.0",
+         "ws": "^8.21.3",
+-        "yaml": "^2.9.0"
++        "yaml": "^2.9.0",
++        "zrender": "^6.1.0"
+       },
+       "engines": {
+         "node": ">=26.0.0",
+@@ -2829,9 +2830,9 @@
+       }
+     },
+     "node_modules/@oxc-project/runtime": {
+-      "version": "0.141.0",
+-      "resolved": "https://registry.npmjs.org/@oxc-project/runtime/-/runtime-0.141.0.tgz",
+-      "integrity": "sha512-Z/6jQ0dyvE2fVjMUO7GoD4h+3q0G4lI4BWQNjaPhC4RPxaS4hF1b7/QYKB/Tl+KAQwqqKgMF54ukR/VvV5FILg==",
++      "version": "0.143.0",
++      "resolved": "https://registry.npmjs.org/@oxc-project/runtime/-/runtime-0.143.0.tgz",
++      "integrity": "sha512-zIuXUf+YGIgsPk0xlQmzTY8NCSc8jE/pSfDodlQ9H3EGZABmr+AtIjXRrnpQAXuXzhDSNqZz9cuhud8hDDLvpg==",
+       "devOptional": true,
+       "license": "MIT",
+       "engines": {
+@@ -3186,9 +3187,9 @@
+       ]
+     },
+     "node_modules/@oxfmt/binding-android-arm-eabi": {
+-      "version": "0.60.0",
+-      "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm-eabi/-/binding-android-arm-eabi-0.60.0.tgz",
+-      "integrity": "sha512-1q4q4Jc8FlOMVojEisyFAVyl8h1yawNv6phjgmhGVEDeyeOdsSnSr9x0+D4mOnEKvpO5L4mxKZ/DP9X6U3A/Mw==",
++      "version": "0.62.0",
++      "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm-eabi/-/binding-android-arm-eabi-0.62.0.tgz",
++      "integrity": "sha512-pdsv0C4gPjJ8H1+sd8u0BDx+yLACTL+rgeMIOL1ln4ihSnhw8CWXtYWgvcSkyTfgGBIzFKab+d8rx9Xl4en/Kw==",
+       "cpu": [
+         "arm"
+       ],
+@@ -3203,9 +3204,9 @@
+       }
+     },
+     "node_modules/@oxfmt/binding-android-arm64": {
+-      "version": "0.60.0",
+-      "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm64/-/binding-android-arm64-0.60.0.tgz",
+-      "integrity": "sha512-tD41I6nCt9k8SQXft0CSjjU9jg6SwG7uMu7PxodSEHXl+GDW0868oy6tTtoJkyUze8YKFgTpz/k5LuPUnFiGLw==",
++      "version": "0.62.0",
++      "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm64/-/binding-android-arm64-0.62.0.tgz",
++      "integrity": "sha512-WC3YQ7uS/KtDrjmqwBviwFKe9qeoi+eXx8aX1z/ffG23Md75myjrJaQqTuJvdOLPoa4EYTjDWH0dHXfwulCVog==",
+       "cpu": [
+         "arm64"
+       ],
+@@ -3220,9 +3221,9 @@
+       }
+     },
+     "node_modules/@oxfmt/binding-darwin-arm64": {
+-      "version": "0.60.0",
+-      "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-arm64/-/binding-darwin-arm64-0.60.0.tgz",
+-      "integrity": "sha512-TTpzPug96Zxdyb46KvTyIUQDdsqbumXh2TKG9C23PCT0kF7JkW56Z/quPuG9rqOFKQIi1gpRNZ7DX18LwxXPnw==",
++      "version": "0.62.0",
++      "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-arm64/-/binding-darwin-arm64-0.62.0.tgz",
++      "integrity": "sha512-GM8Yf3LjjaR1I8PD0SfeoIlwhsh9GvSF+cQ8sf624Yxnjsyumn95aFzYfKJVefblfDIiOAnZ7QVm2sa21Er/0Q==",
+       "cpu": [
+         "arm64"
+       ],
+@@ -3237,9 +3238,9 @@
+       }
+     },
+     "node_modules/@oxfmt/binding-darwin-x64": {
+-      "version": "0.60.0",
+-      "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-x64/-/binding-darwin-x64-0.60.0.tgz",
+-      "integrity": "sha512-CnOoWgQ7L+JL/YQaRJ+NyATciSfcftncm7y3kqyte1cGtFEGnStaCd1TAyrinkfQ7nRBfHrTs1/vTwUJr3WF2Q==",
++      "version": "0.62.0",
++      "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-x64/-/binding-darwin-x64-0.62.0.tgz",
++      "integrity": "sha512-d5THp7F8bCxLqNogEXDORRsQD6dosf3EyFtnXfBer6v+8tGdcWIjoDX9WaXrrF/26zOmL8qHpPTKCEvpBDmZkQ==",
+       "cpu": [
+         "x64"
+       ],
+@@ -3254,9 +3255,9 @@
+       }
+     },
+     "node_modules/@oxfmt/binding-freebsd-x64": {
+-      "version": "0.60.0",
+-      "resolved": "https://registry.npmjs.org/@oxfmt/binding-freebsd-x64/-/binding-freebsd-x64-0.60.0.tgz",
+-      "integrity": "sha512-ychJo7S3hZxdO6eDZ9zM6F2lM9fpJS3EKS5CAUSWyprdLYxTu4gbaUKV/VBPTcMJwQa2Bpo+643y3OJ537pihA==",
++      "version": "0.62.0",
++      "resolved": "https://registry.npmjs.org/@oxfmt/binding-freebsd-x64/-/binding-freebsd-x64-0.62.0.tgz",
++      "integrity": "sha512-1DnrtXGZooOZ0fHgAXZUaDQzBVh1CM2MNW4oBXyQ2aWKvCHjyljvT9fgBkOM0fEOb96X5eqtcfJ0YUVt9jj66g==",
+       "cpu": [
+         "x64"
+       ],
+@@ -3271,9 +3272,9 @@
+       }
+     },
+     "node_modules/@oxfmt/binding-linux-arm-gnueabihf": {
+-      "version": "0.60.0",
+-      "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.60.0.tgz",
+-      "integrity": "sha512-36IH5o55T2Fx7E0feDttt+mifxN6yk9pWv4KfhAIsP0dFnUq27331OwbpOsZdoXF9soOLWm7mQUz5+UUmyec4g==",
++      "version": "0.62.0",
++      "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.62.0.tgz",
++      "integrity": "sha512-4pQDHOYRH+Huqe0StIaWyvk2CVl/aTaqSrbZpA3/pLS2xH24ME7lBgYprhQF2fRkHBzhGGGKliwxFsDdHwx59g==",
+       "cpu": [
+         "arm"
+       ],
+@@ -3288,9 +3289,9 @@
+       }
+     },
+     "node_modules/@oxfmt/binding-linux-arm-musleabihf": {
+-      "version": "0.60.0",
+-      "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.60.0.tgz",
+-      "integrity": "sha512-G1Ve7lAa6sFBolVI2LWHfEAqy0YKh4vnioH8uYO9kAEdgM7mR40IksIx9/Zk4+vbYew/sGa4J9Q4tZ3n9gXDHA==",
++      "version": "0.62.0",
++      "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.62.0.tgz",
++      "integrity": "sha512-X0jAaZJFMCVKhB6YyWVTQ/wN2DLsBcZKSMqTS76bF6riT+XZdtg2FPEdjDvdVbunO9cG+tWiVaEs4Zs38lxYog==",
+       "cpu": [
+         "arm"
+       ],
+@@ -3305,9 +3306,9 @@
+       }
+     },
+     "node_modules/@oxfmt/binding-linux-arm64-gnu": {
+-      "version": "0.60.0",
+-      "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.60.0.tgz",
+-      "integrity": "sha512-LTQdRBf6uzj/h7Xk6lKzbGD2hrF/fK4YI9LIN1c0509tPUn8wRa3mCmrFQpEWJPLYGFrLFFMTYW1Ljj6VqW2Hw==",
++      "version": "0.62.0",
++      "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.62.0.tgz",
++      "integrity": "sha512-682Z8T5s8T5ATArYtsejKvbIfd8LEAXyyDkKkoZVq8HND7Vx8TYLlrDjDSeYfodMeVwHOgkj13lJYR8cj6vUSg==",
+       "cpu": [
+         "arm64"
+       ],
+@@ -3325,9 +3326,9 @@
+       }
+     },
+     "node_modules/@oxfmt/binding-linux-arm64-musl": {
+-      "version": "0.60.0",
+-      "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.60.0.tgz",
+-      "integrity": "sha512-2JMo3XPxMPx3hiqddSZYyaH+fKJm6cz0u8n1naYjP/CdOQOZW34i8lKBUfmbWiuFvd6KoYXLmhAyBuvojsYS7Q==",
++      "version": "0.62.0",
++      "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.62.0.tgz",
++      "integrity": "sha512-lk25fAl7KWaLWVJcW0CHEXB7QlQZtx5eDkjpaGMK0hzXTjUe0Wmlu8IKuFHoviSOcEJedRTs4VE/506VqGxGew==",
+       "cpu": [
+         "arm64"
+       ],
+@@ -3345,9 +3346,9 @@
+       }
+     },
+     "node_modules/@oxfmt/binding-linux-ppc64-gnu": {
+-      "version": "0.60.0",
+-      "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.60.0.tgz",
+-      "integrity": "sha512-L3C+nBD13lr306tr/PjM3RMll+BVqgFrIgUyoeHuai5oueJrRLgO3j+GO5/Cbhtkf5PSlHYTI1JY7iqBd1qa6A==",
++      "version": "0.62.0",
++      "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.62.0.tgz",
++      "integrity": "sha512-SFyNqHQLwySceWNLhiSldx7wPXRAzP0L0WcW9GegP3uWrpZGJiZlQO85NbHAFPEfxR9PhZ9qSnZryEh7+v+4Gw==",
+       "cpu": [
+         "ppc64"
+       ],
+@@ -3365,9 +3366,9 @@
+       }
+     },
+     "node_modules/@oxfmt/binding-linux-riscv64-gnu": {
+-      "version": "0.60.0",
+-      "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.60.0.tgz",
+-      "integrity": "sha512-M4MsmvqlxFiPtSRGyBYQSZxchEf463AOyd+Dh4/9xDpjWBsRtDUTDMFN5EdHinjVK1/eDJQ8MLpcYjpYayaCnA==",
++      "version": "0.62.0",
++      "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.62.0.tgz",
++      "integrity": "sha512-KYj55C1ywJfHo6+aKDuEmUtVEdJALsC5GwayDGsI6FGz2GxFqNr/mA8nxVsNbJzm7sE5MRqTQ9ziImSzhYXysA==",
+       "cpu": [
+         "riscv64"
+       ],
+@@ -3385,9 +3386,9 @@
+       }
+     },
+     "node_modules/@oxfmt/binding-linux-riscv64-musl": {
+-      "version": "0.60.0",
+-      "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.60.0.tgz",
+-      "integrity": "sha512-OH+9UskYuxRB+GxqdGkVN8f5UpwhqG8YscNo1wl8+KJ62cd7wZdGga6iGLJIf8kibF1WBwvlfDUx3cez/VXwFg==",
++      "version": "0.62.0",
++      "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.62.0.tgz",
++      "integrity": "sha512-BhZDNo5GOU5nC378RhD0/XpvaEBHsH3HLgJp8YZX3A0InC7oivzA63HsRmiXFLtLSHAstEVrDf6fbC7Rs8Jh/A==",
+       "cpu": [
+         "riscv64"
+       ],
+@@ -3405,9 +3406,9 @@
+       }
+     },
+     "node_modules/@oxfmt/binding-linux-s390x-gnu": {
+-      "version": "0.60.0",
+-      "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.60.0.tgz",
+-      "integrity": "sha512-y7AAFutt9wFWBFOAn6+BHaV39usZmcr3YYH2385f+NHgPNpIF9HpqKp0jgUxPaUOCyG3oaX5VhJduL1Nw164rw==",
++      "version": "0.62.0",
++      "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.62.0.tgz",
++      "integrity": "sha512-UyAFmyHkgSgUJ/wOM4p3U8AC2yAFvRH5PNBs7TnK0fObTT/XSWcdr/lAzPSWaekHaZFaMeFZyk9n93Joq3J93A==",
+       "cpu": [
+         "s390x"
+       ],
+@@ -3425,9 +3426,9 @@
+       }
+     },
+     "node_modules/@oxfmt/binding-linux-x64-gnu": {
+-      "version": "0.60.0",
+-      "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.60.0.tgz",
+-      "integrity": "sha512-yKZ9+CXAI+1RO5nH/4Z/9M6DAsfOzd5bw/gtWk81KB4mpalMaRRSXfouc5/tHxazDmBek55HNPepNYBgaCew0Q==",
++      "version": "0.62.0",
++      "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.62.0.tgz",
++      "integrity": "sha512-1iYMP0leytWazFubD/WnINJuIrzRPuoL1aWEJdlGezEzDbTxcd29R4r8IUzP2oWeKst5V02uMJgR2NILlPlG6w==",
+       "cpu": [
+         "x64"
+       ],
+@@ -3445,9 +3446,9 @@
+       }
+     },
+     "node_modules/@oxfmt/binding-linux-x64-musl": {
+-      "version": "0.60.0",
+-      "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-musl/-/binding-linux-x64-musl-0.60.0.tgz",
+-      "integrity": "sha512-bCUGaF6hJOYnQzLJdHLZbvGsOd5oSvGAyJhPAKum2uyLYUuXmP8vqg690DWi2hqcnIoYpqSqCrjzE5aiUAgwQg==",
++      "version": "0.62.0",
++      "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-musl/-/binding-linux-x64-musl-0.62.0.tgz",
++      "integrity": "sha512-4rA/URtJSTVNVAQz6Q8wf7SaRvOXVy+TizriT9hs/Y1XhLR/R+92uWKRQG8yFWRAIEBbFHJ6WevQcl/G9SXEfw==",
+       "cpu": [
+         "x64"
+       ],
+@@ -3465,9 +3466,9 @@
+       }
+     },
+     "node_modules/@oxfmt/binding-openharmony-arm64": {
+-      "version": "0.60.0",
+-      "resolved": "https://registry.npmjs.org/@oxfmt/binding-openharmony-arm64/-/binding-openharmony-arm64-0.60.0.tgz",
+-      "integrity": "sha512-GrUeZOvzP30ExxfCuQiyofuUGI+OmvAgFwOO5w5p9mGPlxcyuqI+6Sy9fAKFFfLQrqKYWFgc5sYA2Unj/29nPg==",
++      "version": "0.62.0",
++      "resolved": "https://registry.npmjs.org/@oxfmt/binding-openharmony-arm64/-/binding-openharmony-arm64-0.62.0.tgz",
++      "integrity": "sha512-mSZuFHU2ar1KLUjXpI2QBQcJ1VsOB3mOCgQXuXCpKs19dgh4u+OaovNfrWDfiJb+ihJ2+f7YFcaO9bS2dlTCXA==",
+       "cpu": [
+         "arm64"
+       ],
+@@ -3482,9 +3483,9 @@
+       }
+     },
+     "node_modules/@oxfmt/binding-win32-arm64-msvc": {
+-      "version": "0.60.0",
+-      "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.60.0.tgz",
+-      "integrity": "sha512-WD4Q954kUl2TDJV/6q7UnE2rlKk047kXLJsr4bJ2mXRaAqNXcmV3nwKUsGCc3mz/jYDBnXtJEaBErJEybK8iQQ==",
++      "version": "0.62.0",
++      "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.62.0.tgz",
++      "integrity": "sha512-OfwuhkcjDlqC4EgDojtiV9mzpLqeB9KqTOWPOjLEYBVdDCVSxqW3qzp/xcIxsbtI0UgGCnKvAqYKyY25kf5JZw==",
+       "cpu": [
+         "arm64"
+       ],
+@@ -3499,9 +3500,9 @@
+       }
+     },
+     "node_modules/@oxfmt/binding-win32-ia32-msvc": {
+-      "version": "0.60.0",
+-      "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.60.0.tgz",
+-      "integrity": "sha512-HqDekjr8JXzVDUP1YthDZ1Y3CBEcuZT4WX3B+1kaxj8CvZA8Y2YhcEsXqoSop3tVsgjACxjnFQFDkBo0r/jq1Q==",
++      "version": "0.62.0",
++      "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.62.0.tgz",
++      "integrity": "sha512-P9uDDNFRzghO3X8QAzhkjKhK7JvtABsVn8UYtFX7uor12IAnwNt8nNIctvfWj1JkQU/kE+fmLRPiw7XlrIHsZw==",
+       "cpu": [
+         "ia32"
+       ],
+@@ -3516,9 +3517,9 @@
+       }
+     },
+     "node_modules/@oxfmt/binding-win32-x64-msvc": {
+-      "version": "0.60.0",
+-      "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.60.0.tgz",
+-      "integrity": "sha512-tz78yhmGPKboTMHCHSaUqXK8JrmoSejgDcWeqAtg2s07ZGKQ3rH5Jn8NuXPGNG33CDbY2e9NoQWXIVEmKO21Rw==",
++      "version": "0.62.0",
++      "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.62.0.tgz",
++      "integrity": "sha512-dlI5SY7XYQCiCBafntWagCR6HcAJB/NpsLtdlPx8x08+Osz8Ok1HHz1GZuusegCe/VoJ6pAnF5a4pd5OZAq7qQ==",
+       "cpu": [
+         "x64"
+       ],
+@@ -3617,9 +3618,9 @@
+       ]
+     },
+     "node_modules/@oxlint/binding-android-arm-eabi": {
+-      "version": "1.75.0",
+-      "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.75.0.tgz",
+-      "integrity": "sha512-lutovtFzJqlRaqpZrCqSSGaHZzl9nIxxpjLzhSRLunN6dCLylj0uzlCyQGaQDIys7rrv8kVXiFO+R4Zpn0bX7g==",
++      "version": "1.77.0",
++      "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.77.0.tgz",
++      "integrity": "sha512-E06sKWS6PiI6HRxS1wyQg22HvApt01hI7fV+T3wUk3OSbaaP4a3hYGY/MIQDmASqCiRjBdpRQYkgMkqH82cWmQ==",
+       "cpu": [
+         "arm"
+       ],
+@@ -3634,9 +3635,9 @@
+       }
+     },
+     "node_modules/@oxlint/binding-android-arm64": {
+-      "version": "1.75.0",
+-      "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.75.0.tgz",
+-      "integrity": "sha512-hXI0hDgHkw4w5nfru72aG7y+2iQJmC4waH/KV6H/hbgA6yAP5jYNx0P9yug15Hs0tWl/+mda3Jjn/2gmDT48tw==",
++      "version": "1.77.0",
++      "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.77.0.tgz",
++      "integrity": "sha512-NvsKz0KZxTp9cYWPLf+FXaSZwB3oO3peAjtukpOMBgse2vhQSoIIVqeO1yR0lEo/UcdZIDL18uq+kL0LzQ0ytA==",
+       "cpu": [
+         "arm64"
+       ],
+@@ -3651,9 +3652,9 @@
+       }
+     },
+     "node_modules/@oxlint/binding-darwin-arm64": {
+-      "version": "1.75.0",
+-      "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.75.0.tgz",
+-      "integrity": "sha512-D91BWbK/dMYfCcrghspPIuKs2D9LF4Z/OabVSQjw1AO6PWxArD7teDA48bm0ySFqWDaPVqmQRl5GMWNglTXyrQ==",
++      "version": "1.77.0",
++      "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.77.0.tgz",
++      "integrity": "sha512-bgjTn6nW4bQCFBvSvuHCpDD+sONvmpo4lGI4PxzMt1quBA+xYxhczk6RiCn3GZ9gY8uhaBbwhj9MdKGfu6T9DA==",
+       "cpu": [
+         "arm64"
+       ],
+@@ -3668,9 +3669,9 @@
+       }
+     },
+     "node_modules/@oxlint/binding-darwin-x64": {
+-      "version": "1.75.0",
+-      "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.75.0.tgz",
+-      "integrity": "sha512-02mpwzf12BonZ6PT0TuQoomvEh2kVl2WGBIKWezCyToIS+rYkQZ6GXnARBAl9A4Ovm2V+Xe7M4KretyqmmcnJQ==",
++      "version": "1.77.0",
++      "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.77.0.tgz",
++      "integrity": "sha512-aotaIttH1R6j1Rwhx0M0htgeZyGtVQqYNTVEYMN/UcgHPquGA6kmk9OyuDc3a2GKUQBC+3C3GVQCcrRPMYqAFA==",
+       "cpu": [
+         "x64"
+       ],
+@@ -3685,9 +3686,9 @@
+       }
+     },
+     "node_modules/@oxlint/binding-freebsd-x64": {
+-      "version": "1.75.0",
+-      "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.75.0.tgz",
+-      "integrity": "sha512-qZJgLnDaBsiL5YESx2t/TZ8eXkL9fEkKoXEdzegROhlz9A0lgyGnZ0dAzJrh7LJAHQl2K9RdRueN2s/9N7+odg==",
++      "version": "1.77.0",
++      "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.77.0.tgz",
++      "integrity": "sha512-nNx/wta7ksRAdYvq+l4AWjXkLxEXHALhENxjj2cYbQAIR4ybaA5L+hCbE63HOmft5czQ6ks+hb8vmEAnn7YGPg==",
+       "cpu": [
+         "x64"
+       ],
+@@ -3702,9 +3703,9 @@
+       }
+     },
+     "node_modules/@oxlint/binding-linux-arm-gnueabihf": {
+-      "version": "1.75.0",
+-      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.75.0.tgz",
+-      "integrity": "sha512-7XlaWA5BJD3XpCfrEqjEe6Zseeb14S7QGa304XfwKignRaKQ+eIj775BQ7nIslggWickl4IsPUFqJ+/gAyNHVg==",
++      "version": "1.77.0",
++      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.77.0.tgz",
++      "integrity": "sha512-tMLLjM7xXtzXisVCzkOTXNCy9bZVId2wteNwjohlFDR/jY6WagpEDA1c1wu4xRc20Hojaxj+V6DSR7gbKxijWA==",
+       "cpu": [
+         "arm"
+       ],
+@@ -3719,9 +3720,9 @@
+       }
+     },
+     "node_modules/@oxlint/binding-linux-arm-musleabihf": {
+-      "version": "1.75.0",
+-      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.75.0.tgz",
+-      "integrity": "sha512-av6Tpv8yrcMMMOadOqENBhlsLRcGFXXwoQ0hzHhsmS9FJ4Wioy8we427GbcMe2XTxmL2e60T67H1Dyr3up+tAA==",
++      "version": "1.77.0",
++      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.77.0.tgz",
++      "integrity": "sha512-MiAFDFaqR0tmHTAyo0YDcZ5hyLREdYw/RQhc2R3cbT+8O3tB+zqPM2th9TTQ+Uo3jn/embS+DO+HyX9ztCPkOQ==",
+       "cpu": [
+         "arm"
+       ],
+@@ -3736,9 +3737,9 @@
+       }
+     },
+     "node_modules/@oxlint/binding-linux-arm64-gnu": {
+-      "version": "1.75.0",
+-      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.75.0.tgz",
+-      "integrity": "sha512-WcUhd8fHT5plrA14lANevl+hOl815mVI5t2hU21oFWrZKFXIVV/Sr4rWQV0NzSvzBupbMLNc5ErEA6Ehxh5jMg==",
++      "version": "1.77.0",
++      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.77.0.tgz",
++      "integrity": "sha512-/xqQ3B16i1T4cyt/9Mn+4CpzhUXoBXp7kVpIwzOXNFLj5JmK1bIjsbSnX296Gg8A/o7oDtKWikFgBx0SLwztkw==",
+       "cpu": [
+         "arm64"
+       ],
+@@ -3756,9 +3757,9 @@
+       }
+     },
+     "node_modules/@oxlint/binding-linux-arm64-musl": {
+-      "version": "1.75.0",
+-      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.75.0.tgz",
+-      "integrity": "sha512-UWzp5wRHFe/ESO3+eEaxXsTkYTGLYjnTsi/I5neEacXSItQ6WNleapfOAeA4x2b8nyhJ4uQxqvtv9pHv8kWJtQ==",
++      "version": "1.77.0",
++      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.77.0.tgz",
++      "integrity": "sha512-LSbwuRKiNCenPDcbARqAZ5RfBy7gmj7vOvfJRLeCDU3gFtSxWbhv/+VTlaUqzUhNj1gFLHB8h7ALnxa/Az6z6g==",
+       "cpu": [
+         "arm64"
+       ],
+@@ -3776,9 +3777,9 @@
+       }
+     },
+     "node_modules/@oxlint/binding-linux-ppc64-gnu": {
+-      "version": "1.75.0",
+-      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.75.0.tgz",
+-      "integrity": "sha512-XEVRwGMLKCUKrvhLAz4F6AIh8MJrQVdSZtAmPpRZt9tGPsUnamPOcl3dS/ZQzJnar/Ymgc//+xho0L60Emzuxg==",
++      "version": "1.77.0",
++      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.77.0.tgz",
++      "integrity": "sha512-QWdcH31mXEUe5Nq1s0CfCpceaKjIo9uZtwDjAuL681g1axf+5x8xrg/eXWaw//4NCxYZ4V4e5Hu5tvdR+pTBlg==",
+       "cpu": [
+         "ppc64"
+       ],
+@@ -3796,9 +3797,9 @@
+       }
+     },
+     "node_modules/@oxlint/binding-linux-riscv64-gnu": {
+-      "version": "1.75.0",
+-      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.75.0.tgz",
+-      "integrity": "sha512-mAG4DUXqfLC8cTjMD2kt3jDmVzFREYtDyeLNdLdsCcBc4Zbl2EMuiFektGBilQwkNjYnMvCqJs55U+Hyb+b+jw==",
++      "version": "1.77.0",
++      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.77.0.tgz",
++      "integrity": "sha512-GnOfYgJxbcElOiPZaDFDl406ONddwvOWk2jvAAAEjwAl4GofNoHF+/HHUIBYa6bFCArlcGPi0XjC4cU1pkgF/Q==",
+       "cpu": [
+         "riscv64"
+       ],
+@@ -3816,9 +3817,9 @@
+       }
+     },
+     "node_modules/@oxlint/binding-linux-riscv64-musl": {
+-      "version": "1.75.0",
+-      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.75.0.tgz",
+-      "integrity": "sha512-95hrAvriAlI+pekSomTFIn0+bawMDlDwTNVmdjsFusTHyL2JWh7TWvRNG/Lkim72uN8OiCcO9wcaC6omLP5E3w==",
++      "version": "1.77.0",
++      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.77.0.tgz",
++      "integrity": "sha512-AyEMTUCf0xY+hHF+IxqXFQIX0yQOIR8ykpY0lJNOw9xYqOzUX8dyZfRvlG0RfXwuQn2eonf/8NrMmDSZJjdqsA==",
+       "cpu": [
+         "riscv64"
+       ],
+@@ -3836,9 +3837,9 @@
+       }
+     },
+     "node_modules/@oxlint/binding-linux-s390x-gnu": {
+-      "version": "1.75.0",
+-      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.75.0.tgz",
+-      "integrity": "sha512-4b6f2+FrtruAESrCqIKcrarzfrSx+wk2QNcp+RT91/Prc+pMQMAfyZ1rG1c3tFQNl8Bc616tx40uNXyxNBRPbQ==",
++      "version": "1.77.0",
++      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.77.0.tgz",
++      "integrity": "sha512-sPLzEcNvxd/oyVQ5oZo92CiHkFkpBeRop13E/P3TPY+hZfXHKCOWKI70TE2RYwMKFJDc20EMjH16L7NZICtKTw==",
+       "cpu": [
+         "s390x"
+       ],
+@@ -3856,9 +3857,9 @@
+       }
+     },
+     "node_modules/@oxlint/binding-linux-x64-gnu": {
+-      "version": "1.75.0",
+-      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.75.0.tgz",
+-      "integrity": "sha512-nshAhrUvXFUWOvqQ2soIw7HFNWvpvEV4o0cYSqPtzLiPF5gKyYTDOOTJ6Rn8g8K/iGvPIrbDA4v8+5MvnjJrrg==",
++      "version": "1.77.0",
++      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.77.0.tgz",
++      "integrity": "sha512-1Oh2ssH2L7lwyvkdSqaMUfsGfwU2Wfvew+obBUYjRVqhpBcUpwnsPSEr1IzVi9XqkuY10geiLsNKecqaZC34Dw==",
+       "cpu": [
+         "x64"
+       ],
+@@ -3876,9 +3877,9 @@
+       }
+     },
+     "node_modules/@oxlint/binding-linux-x64-musl": {
+-      "version": "1.75.0",
+-      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.75.0.tgz",
+-      "integrity": "sha512-e4jNxLKnxLC6sYBQRxrI2pgIIxnmMtF8U/VwNYcjTT/CLS+spH624cYVnj07bTKwaEWT37/e025isOs6j/0xqA==",
++      "version": "1.77.0",
++      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.77.0.tgz",
++      "integrity": "sha512-0j/2wRgNGO+Qj/M1uu/p57h/hFTTWWcfie0ufkbabeus2s5+/QqkCflnMOwLLN5m2GsNeWp4xdl4cPa4n7QCOQ==",
+       "cpu": [
+         "x64"
+       ],
+@@ -3896,9 +3897,9 @@
+       }
+     },
+     "node_modules/@oxlint/binding-openharmony-arm64": {
+-      "version": "1.75.0",
+-      "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.75.0.tgz",
+-      "integrity": "sha512-hZ2lH+1qLf/DiEP9UWuQTK2JWj/BgvMB4jhIV4SmNU1wfEiYYX4TynQyAZXx0j9X4qRYizAL042SKaV+8ynh4w==",
++      "version": "1.77.0",
++      "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.77.0.tgz",
++      "integrity": "sha512-BJ/j54qS0usEnyDkLYURMj2iiD9h5Cyy+ppzeMSXBGRXaGRNWnj1Mw14NqWMR5E/PzdgB30OOCCzLzbRoduafw==",
+       "cpu": [
+         "arm64"
+       ],
+@@ -3913,9 +3914,9 @@
+       }
+     },
+     "node_modules/@oxlint/binding-win32-arm64-msvc": {
+-      "version": "1.75.0",
+-      "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.75.0.tgz",
+-      "integrity": "sha512-Ilj6PNzGDS3bCU0MSJH7Msh0NhH+T/mRp2shwg+q+GHeVlPwP5LEboW96aW+3kVKFk6zYZy1Xi5pZkqZh6X8KQ==",
++      "version": "1.77.0",
++      "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.77.0.tgz",
++      "integrity": "sha512-Yh8w+g2Lpx7StrvtYkoz9JJvXjB9wxgFChFNb85nrXm/wj/XTwGWS1hve9+900HL7llrntYB3YP+y32E3tRqzA==",
+       "cpu": [
+         "arm64"
+       ],
+@@ -3930,9 +3931,9 @@
+       }
+     },
+     "node_modules/@oxlint/binding-win32-ia32-msvc": {
+-      "version": "1.75.0",
+-      "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.75.0.tgz",
+-      "integrity": "sha512-QVit2nOEOiPhkmsrksPSkoGCdnZRNkspt8fwoYyP09te1VEbnSj4LAxua4rc8FKTmWkySVe05j8iz9GXYfF1AQ==",
++      "version": "1.77.0",
++      "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.77.0.tgz",
++      "integrity": "sha512-zja5b7+6a7UsRFgAQSrnax5vrzliEyNPLCjfXONu/vTWswaIVZGFajJZptaeRvPE4LghtFdAzVFlexTm7MVTGA==",
+       "cpu": [
+         "ia32"
+       ],
+@@ -3947,9 +3948,9 @@
+       }
+     },
+     "node_modules/@oxlint/binding-win32-x64-msvc": {
+-      "version": "1.75.0",
+-      "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.75.0.tgz",
+-      "integrity": "sha512-DSxnNkBUAYARPwJtR12Ig3deWr8w0H997xP6jy33i+e0SyYJw8FKuz4+cZtpmPEhQmvlPJE3X/2vNxDmLkd/rA==",
++      "version": "1.77.0",
++      "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.77.0.tgz",
++      "integrity": "sha512-+teyvPDZ2RjUvo+SuCqS/UhaJl1QtdW5fWT5NJTV61V5MIuIS90Db9LixmtEGvXixyttiK62P96MSu3UlpviBw==",
+       "cpu": [
+         "x64"
+       ],
+@@ -4812,14 +4813,14 @@
+       }
+     },
+     "node_modules/@voidzero-dev/vite-plus-core": {
+-      "version": "0.2.6",
+-      "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-core/-/vite-plus-core-0.2.6.tgz",
+-      "integrity": "sha512-vqDuuLJWS2JHWkFO7r8Z6AehtKnurpnYtw2XEQtjIfwE2GgSAO3zJdPIeaEZiovS6CqfQa+iOMn3kzVzeTSpTw==",
++      "version": "0.2.9",
++      "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-core/-/vite-plus-core-0.2.9.tgz",
++      "integrity": "sha512-dWqScAAwa8h/i9jCiGAMs7YarzQWInHZ5gCJNbQkHXA6Zp6A2T2anN9YMFVPpb7CwVFwkI2iPF5yl/DXtq+zUA==",
+       "dev": true,
+       "license": "MIT",
+       "dependencies": {
+-        "@oxc-project/runtime": "=0.141.0",
+-        "@oxc-project/types": "=0.141.0",
++        "@oxc-project/runtime": "=0.143.0",
++        "@oxc-project/types": "=0.143.0",
+         "lightningcss": "^1.33.0",
+         "postcss": "^8.5.6",
+         "yuku-codegen": "^0.5.44",
+@@ -4829,12 +4830,20 @@
+         "node": "^20.19.0 || ^22.18.0 || >=24.11.0"
+       },
+       "optionalDependencies": {
++        "@voidzero-dev/vite-plus-darwin-arm64": "0.2.9",
++        "@voidzero-dev/vite-plus-darwin-x64": "0.2.9",
++        "@voidzero-dev/vite-plus-linux-arm64-gnu": "0.2.9",
++        "@voidzero-dev/vite-plus-linux-arm64-musl": "0.2.9",
++        "@voidzero-dev/vite-plus-linux-x64-gnu": "0.2.9",
++        "@voidzero-dev/vite-plus-linux-x64-musl": "0.2.9",
++        "@voidzero-dev/vite-plus-win32-arm64-msvc": "0.2.9",
++        "@voidzero-dev/vite-plus-win32-x64-msvc": "0.2.9",
+         "fsevents": "~2.3.3"
+       },
+       "peerDependencies": {
+         "@arethetypeswrong/core": "^0.18.1",
+         "@types/node": "^20.19.0 || >=22.12.0",
+-        "@vitejs/devtools": "^0.3.0",
++        "@vitejs/devtools": "^0.4.0",
+         "esbuild": "^0.27.0 || ^0.28.0",
+         "jiti": ">=1.21.0",
+         "less": "^4.0.0",
+@@ -4905,9 +4914,9 @@
+       }
+     },
+     "node_modules/@voidzero-dev/vite-plus-core/node_modules/@oxc-project/types": {
+-      "version": "0.141.0",
+-      "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.141.0.tgz",
+-      "integrity": "sha512-S4as7z0j0xQkXcJlyY5ehntwK8/wRkQb9Cyqw+J/N2rkWGQGK0SxD6X6DhQTc7qsxVTBxXbxZtBJh3mr3PtIzQ==",
++      "version": "0.143.0",
++      "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.143.0.tgz",
++      "integrity": "sha512-u6JZdLBTLotrNC9Vd6vPssINdzcCzleKAH6EJKImQb7GtYvX5keN2dxkoK44stCc4tffE6QQRtZTXVSzsLUlWA==",
+       "dev": true,
+       "license": "MIT",
+       "funding": {
+@@ -4930,13 +4939,12 @@
+       }
+     },
+     "node_modules/@voidzero-dev/vite-plus-darwin-arm64": {
+-      "version": "0.2.6",
+-      "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-darwin-arm64/-/vite-plus-darwin-arm64-0.2.6.tgz",
+-      "integrity": "sha512-QSZWgfqPx5lrIKZ0vwgVRujRqo7gORcc9Oq4fI1UDjKZFgYz9gXVMibSjEqYU3R1webN6FKTOCnzFmrfXchWYw==",
++      "version": "0.2.9",
++      "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-darwin-arm64/-/vite-plus-darwin-arm64-0.2.9.tgz",
++      "integrity": "sha512-/qJHqMfyy/LiCJk4UYZfFW6Comsfm8zDuy4P8UFWnFqRjmefYvZbMK4ThYNM87tKNWYWjsnClzssjJOmDTAc8w==",
+       "cpu": [
+         "arm64"
+       ],
+-      "dev": true,
+       "license": "MIT",
+       "optional": true,
+       "os": [
+@@ -4947,13 +4955,12 @@
+       }
+     },
+     "node_modules/@voidzero-dev/vite-plus-darwin-x64": {
+-      "version": "0.2.6",
+-      "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-darwin-x64/-/vite-plus-darwin-x64-0.2.6.tgz",
+-      "integrity": "sha512-pMQZGCQO0s+akuxbjgh31hOUgrdDndCmfbP7BciJuts436qrBb8KaVzBhNjJQtxD6H8yY21CIOjD8nlrp4eDIw==",
++      "version": "0.2.9",
++      "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-darwin-x64/-/vite-plus-darwin-x64-0.2.9.tgz",
++      "integrity": "sha512-3MGnNeazgYAqQTaC7JIbZyrTHmxSXTWFr9G1yAdeItKasB1R8HKIkCS1Qnr49Ge4S/cyOODivdbcpqFkrT93ng==",
+       "cpu": [
+         "x64"
+       ],
+-      "dev": true,
+       "license": "MIT",
+       "optional": true,
+       "os": [
+@@ -4964,13 +4971,12 @@
+       }
+     },
+     "node_modules/@voidzero-dev/vite-plus-linux-arm64-gnu": {
+-      "version": "0.2.6",
+-      "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-linux-arm64-gnu/-/vite-plus-linux-arm64-gnu-0.2.6.tgz",
+-      "integrity": "sha512-0e6nrJgUDN5WwoDRjyh7KV/jbL7WDUhTEWslI64KGpuvD7M6OoPBXYo8Et176O2ENwf52CKVDjXwuvMMNIAzAA==",
++      "version": "0.2.9",
++      "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-linux-arm64-gnu/-/vite-plus-linux-arm64-gnu-0.2.9.tgz",
++      "integrity": "sha512-6LmukER8qD4UBIRqMNv4Ilq7CxfRhngLUXlMv8vbTupeLRWPJSKvKEHyRxCwr6JP57Gxfr8KrX1ye42WzcZF0g==",
+       "cpu": [
+         "arm64"
+       ],
+-      "dev": true,
+       "libc": [
+         "glibc"
+       ],
+@@ -4984,13 +4990,12 @@
+       }
+     },
+     "node_modules/@voidzero-dev/vite-plus-linux-arm64-musl": {
+-      "version": "0.2.6",
+-      "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-linux-arm64-musl/-/vite-plus-linux-arm64-musl-0.2.6.tgz",
+-      "integrity": "sha512-j2yvyv3r2ZEuJG73rWlXFrYrxA7u5+bFSlWTqhsfHZhdb1FKMkklfYRuLtBBdBRLXJ+YMNt9GZT6VTVPJDZnnQ==",
++      "version": "0.2.9",
++      "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-linux-arm64-musl/-/vite-plus-linux-arm64-musl-0.2.9.tgz",
++      "integrity": "sha512-cBs626GWkyJlwKP0nsdHlMWpuTl9xOWRxAUoqtxXPtw80bVy4WM5eNS4SXPC5pX10jR7DRIkRpzNAsy7fv8Faw==",
+       "cpu": [
+         "arm64"
+       ],
+-      "dev": true,
+       "libc": [
+         "musl"
+       ],
+@@ -5004,13 +5009,12 @@
+       }
+     },
+     "node_modules/@voidzero-dev/vite-plus-linux-x64-gnu": {
+-      "version": "0.2.6",
+-      "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-linux-x64-gnu/-/vite-plus-linux-x64-gnu-0.2.6.tgz",
+-      "integrity": "sha512-5vqldBBnRjIAUmQ88oKli+wPd5vSQaA2AZ2xs+omRlZfeJhC8chlud6DyJV6fVZCC9GI4otK2zSGpfQZx8Kc3A==",
++      "version": "0.2.9",
++      "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-linux-x64-gnu/-/vite-plus-linux-x64-gnu-0.2.9.tgz",
++      "integrity": "sha512-2Iy8x4PCPMNzXeu3pREevlggoeK8PwtdUiCpoSybAZBtR/aqMxsJREyt/eKv45F8lsiNlA8PbIWEvPxLSgzFLQ==",
+       "cpu": [
+         "x64"
+       ],
+-      "dev": true,
+       "libc": [
+         "glibc"
+       ],
+@@ -5024,13 +5028,12 @@
+       }
+     },
+     "node_modules/@voidzero-dev/vite-plus-linux-x64-musl": {
+-      "version": "0.2.6",
+-      "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-linux-x64-musl/-/vite-plus-linux-x64-musl-0.2.6.tgz",
+-      "integrity": "sha512-29ned+euDKAl+BmCigzGrPykQ/kxTjtsPGV6G3hkImwakHNUnmLRayqmsWKHSwXmBk5xo5m+wqjMbo3G0npJQg==",
++      "version": "0.2.9",
++      "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-linux-x64-musl/-/vite-plus-linux-x64-musl-0.2.9.tgz",
++      "integrity": "sha512-zuGx+eRotWPd9cmh1X9AfsC2tN/Ad9Hk6LAzlxoKJUjEkTsY3WjVJ6Da0z48SAUFuenI0JkdqXnMCrePtGvWHg==",
+       "cpu": [
+         "x64"
+       ],
+-      "dev": true,
+       "libc": [
+         "musl"
+       ],
+@@ -5044,13 +5047,12 @@
+       }
+     },
+     "node_modules/@voidzero-dev/vite-plus-win32-arm64-msvc": {
+-      "version": "0.2.6",
+-      "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-win32-arm64-msvc/-/vite-plus-win32-arm64-msvc-0.2.6.tgz",
+-      "integrity": "sha512-4b5ASpQlkxSXDYzuM6MYsOc1GnYkqG9CbSA1QzobXm87V/Q+MGPn57eILyacgfbmNNLrO2HQ5hasoLvd2BXaSg==",
++      "version": "0.2.9",
++      "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-win32-arm64-msvc/-/vite-plus-win32-arm64-msvc-0.2.9.tgz",
++      "integrity": "sha512-kaKb5Q8ReYTBfvLgUhdpLJG3aoNF8HOVJpf8qBm+THsd4WRrkRwsBHp2ITsU8oXl2gnDjFGhPDaURegd/z6Wxw==",
+       "cpu": [
+         "arm64"
+       ],
+-      "dev": true,
+       "license": "MIT",
+       "optional": true,
+       "os": [
+@@ -5061,13 +5063,12 @@
+       }
+     },
+     "node_modules/@voidzero-dev/vite-plus-win32-x64-msvc": {
+-      "version": "0.2.6",
+-      "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-win32-x64-msvc/-/vite-plus-win32-x64-msvc-0.2.6.tgz",
+-      "integrity": "sha512-rvGkm4WmVkCKPhvUbLkRtlVhi7EYb8GU8KaqIGJ0dVfNQHDEqnFboaiUHuPN1npFNwB+80Ulzz9AkQ/Q8MswQA==",
++      "version": "0.2.9",
++      "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-win32-x64-msvc/-/vite-plus-win32-x64-msvc-0.2.9.tgz",
++      "integrity": "sha512-/fEk3gbQTJknCiYM/GTL/L++Azsav8rCAjmtKrjmCbqEif5IMzqTfvM68n+PiLB3JVoQJGF/mg2niODr0IE/2w==",
+       "cpu": [
+         "x64"
+       ],
+-      "dev": true,
+       "license": "MIT",
+       "optional": true,
+       "os": [
+@@ -8750,9 +8751,9 @@
+       }
+     },
+     "node_modules/oxfmt": {
+-      "version": "0.60.0",
+-      "resolved": "https://registry.npmjs.org/oxfmt/-/oxfmt-0.60.0.tgz",
+-      "integrity": "sha512-fViX6i+gJuZWY+jI/fnR6WRbRj70GZ9RlCd30MygJrHTUNc4DxvKHWw8vBjMjffv3PgU5qWDR0AzmojQByqaZA==",
++      "version": "0.62.0",
++      "resolved": "https://registry.npmjs.org/oxfmt/-/oxfmt-0.62.0.tgz",
++      "integrity": "sha512-vxgGHTmnDU9j4CX7dDBLzxgmHxfda/yPcgJkGCMUSCwRmz+euo/V08xXLNgXTeqAB9Fhf3Pe2nO1RNKLCVgphQ==",
+       "dev": true,
+       "license": "MIT",
+       "dependencies": {
+@@ -8768,25 +8769,25 @@
+         "url": "https://github.com/sponsors/Boshen"
+       },
+       "optionalDependencies": {
+-        "@oxfmt/binding-android-arm-eabi": "0.60.0",
+-        "@oxfmt/binding-android-arm64": "0.60.0",
+-        "@oxfmt/binding-darwin-arm64": "0.60.0",
+-        "@oxfmt/binding-darwin-x64": "0.60.0",
+-        "@oxfmt/binding-freebsd-x64": "0.60.0",
+-        "@oxfmt/binding-linux-arm-gnueabihf": "0.60.0",
+-        "@oxfmt/binding-linux-arm-musleabihf": "0.60.0",
+-        "@oxfmt/binding-linux-arm64-gnu": "0.60.0",
+-        "@oxfmt/binding-linux-arm64-musl": "0.60.0",
+-        "@oxfmt/binding-linux-ppc64-gnu": "0.60.0",
+-        "@oxfmt/binding-linux-riscv64-gnu": "0.60.0",
+-        "@oxfmt/binding-linux-riscv64-musl": "0.60.0",
+-        "@oxfmt/binding-linux-s390x-gnu": "0.60.0",
+-        "@oxfmt/binding-linux-x64-gnu": "0.60.0",
+-        "@oxfmt/binding-linux-x64-musl": "0.60.0",
+-        "@oxfmt/binding-openharmony-arm64": "0.60.0",
+-        "@oxfmt/binding-win32-arm64-msvc": "0.60.0",
+-        "@oxfmt/binding-win32-ia32-msvc": "0.60.0",
+-        "@oxfmt/binding-win32-x64-msvc": "0.60.0"
++        "@oxfmt/binding-android-arm-eabi": "0.62.0",
++        "@oxfmt/binding-android-arm64": "0.62.0",
++        "@oxfmt/binding-darwin-arm64": "0.62.0",
++        "@oxfmt/binding-darwin-x64": "0.62.0",
++        "@oxfmt/binding-freebsd-x64": "0.62.0",
++        "@oxfmt/binding-linux-arm-gnueabihf": "0.62.0",
++        "@oxfmt/binding-linux-arm-musleabihf": "0.62.0",
++        "@oxfmt/binding-linux-arm64-gnu": "0.62.0",
++        "@oxfmt/binding-linux-arm64-musl": "0.62.0",
++        "@oxfmt/binding-linux-ppc64-gnu": "0.62.0",
++        "@oxfmt/binding-linux-riscv64-gnu": "0.62.0",
++        "@oxfmt/binding-linux-riscv64-musl": "0.62.0",
++        "@oxfmt/binding-linux-s390x-gnu": "0.62.0",
++        "@oxfmt/binding-linux-x64-gnu": "0.62.0",
++        "@oxfmt/binding-linux-x64-musl": "0.62.0",
++        "@oxfmt/binding-openharmony-arm64": "0.62.0",
++        "@oxfmt/binding-win32-arm64-msvc": "0.62.0",
++        "@oxfmt/binding-win32-ia32-msvc": "0.62.0",
++        "@oxfmt/binding-win32-x64-msvc": "0.62.0"
+       },
+       "peerDependencies": {
+         "svelte": "^5.0.0",
+@@ -8802,9 +8803,9 @@
+       }
+     },
+     "node_modules/oxlint": {
+-      "version": "1.75.0",
+-      "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.75.0.tgz",
+-      "integrity": "sha512-m9WzjRcRYA/uqIZDa9tclrieoPJ/ln1QYTKdFx6NUOs8uY5DiHlIwRQoCrHT6OM6O3ww3l2skY5gO7G7ZphE7g==",
++      "version": "1.77.0",
++      "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.77.0.tgz",
++      "integrity": "sha512-qnGh8XJHaQ0dprrDXNQZgS0FgjI6v+V3+X8DwmaV++5Aamy6jGKfDdQ1TUvhUxtmKFAbEf4/WeO5QZX+5WSngg==",
+       "dev": true,
+       "license": "MIT",
+       "bin": {
+@@ -8817,25 +8818,25 @@
+         "url": "https://github.com/sponsors/Boshen"
+       },
+       "optionalDependencies": {
+-        "@oxlint/binding-android-arm-eabi": "1.75.0",
+-        "@oxlint/binding-android-arm64": "1.75.0",
+-        "@oxlint/binding-darwin-arm64": "1.75.0",
+-        "@oxlint/binding-darwin-x64": "1.75.0",
+-        "@oxlint/binding-freebsd-x64": "1.75.0",
+-        "@oxlint/binding-linux-arm-gnueabihf": "1.75.0",
+-        "@oxlint/binding-linux-arm-musleabihf": "1.75.0",
+-        "@oxlint/binding-linux-arm64-gnu": "1.75.0",
+-        "@oxlint/binding-linux-arm64-musl": "1.75.0",
+-        "@oxlint/binding-linux-ppc64-gnu": "1.75.0",
+-        "@oxlint/binding-linux-riscv64-gnu": "1.75.0",
+-        "@oxlint/binding-linux-riscv64-musl": "1.75.0",
+-        "@oxlint/binding-linux-s390x-gnu": "1.75.0",
+-        "@oxlint/binding-linux-x64-gnu": "1.75.0",
+-        "@oxlint/binding-linux-x64-musl": "1.75.0",
+-        "@oxlint/binding-openharmony-arm64": "1.75.0",
+-        "@oxlint/binding-win32-arm64-msvc": "1.75.0",
+-        "@oxlint/binding-win32-ia32-msvc": "1.75.0",
+-        "@oxlint/binding-win32-x64-msvc": "1.75.0"
++        "@oxlint/binding-android-arm-eabi": "1.77.0",
++        "@oxlint/binding-android-arm64": "1.77.0",
++        "@oxlint/binding-darwin-arm64": "1.77.0",
++        "@oxlint/binding-darwin-x64": "1.77.0",
++        "@oxlint/binding-freebsd-x64": "1.77.0",
++        "@oxlint/binding-linux-arm-gnueabihf": "1.77.0",
++        "@oxlint/binding-linux-arm-musleabihf": "1.77.0",
++        "@oxlint/binding-linux-arm64-gnu": "1.77.0",
++        "@oxlint/binding-linux-arm64-musl": "1.77.0",
++        "@oxlint/binding-linux-ppc64-gnu": "1.77.0",
++        "@oxlint/binding-linux-riscv64-gnu": "1.77.0",
++        "@oxlint/binding-linux-riscv64-musl": "1.77.0",
++        "@oxlint/binding-linux-s390x-gnu": "1.77.0",
++        "@oxlint/binding-linux-x64-gnu": "1.77.0",
++        "@oxlint/binding-linux-x64-musl": "1.77.0",
++        "@oxlint/binding-openharmony-arm64": "1.77.0",
++        "@oxlint/binding-win32-arm64-msvc": "1.77.0",
++        "@oxlint/binding-win32-ia32-msvc": "1.77.0",
++        "@oxlint/binding-win32-x64-msvc": "1.77.0"
+       },
+       "peerDependencies": {
+         "oxlint-tsgolint": ">=7.0.2001",
+@@ -11043,14 +11044,14 @@
+     },
+     "node_modules/vite": {
+       "name": "@voidzero-dev/vite-plus-core",
+-      "version": "0.2.6",
+-      "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-core/-/vite-plus-core-0.2.6.tgz",
+-      "integrity": "sha512-vqDuuLJWS2JHWkFO7r8Z6AehtKnurpnYtw2XEQtjIfwE2GgSAO3zJdPIeaEZiovS6CqfQa+iOMn3kzVzeTSpTw==",
++      "version": "0.2.9",
++      "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-core/-/vite-plus-core-0.2.9.tgz",
++      "integrity": "sha512-dWqScAAwa8h/i9jCiGAMs7YarzQWInHZ5gCJNbQkHXA6Zp6A2T2anN9YMFVPpb7CwVFwkI2iPF5yl/DXtq+zUA==",
+       "devOptional": true,
+       "license": "MIT",
+       "dependencies": {
+-        "@oxc-project/runtime": "=0.141.0",
+-        "@oxc-project/types": "=0.141.0",
++        "@oxc-project/runtime": "=0.143.0",
++        "@oxc-project/types": "=0.143.0",
+         "lightningcss": "^1.33.0",
+         "postcss": "^8.5.6",
+         "yuku-codegen": "^0.5.44",
+@@ -11060,12 +11061,20 @@
+         "node": "^20.19.0 || ^22.18.0 || >=24.11.0"
+       },
+       "optionalDependencies": {
++        "@voidzero-dev/vite-plus-darwin-arm64": "0.2.9",
++        "@voidzero-dev/vite-plus-darwin-x64": "0.2.9",
++        "@voidzero-dev/vite-plus-linux-arm64-gnu": "0.2.9",
++        "@voidzero-dev/vite-plus-linux-arm64-musl": "0.2.9",
++        "@voidzero-dev/vite-plus-linux-x64-gnu": "0.2.9",
++        "@voidzero-dev/vite-plus-linux-x64-musl": "0.2.9",
++        "@voidzero-dev/vite-plus-win32-arm64-msvc": "0.2.9",
++        "@voidzero-dev/vite-plus-win32-x64-msvc": "0.2.9",
+         "fsevents": "~2.3.3"
+       },
+       "peerDependencies": {
+         "@arethetypeswrong/core": "^0.18.1",
+         "@types/node": "^20.19.0 || >=22.12.0",
+-        "@vitejs/devtools": "^0.3.0",
++        "@vitejs/devtools": "^0.4.0",
*** 114 LINES SKIPPED ***